diff --git a/.gitignore b/.gitignore index 52098138..e121fa4b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ build.xml .bower-registry .bower-tmp .tmp +app/styles +app/generated +dist/styles/components-font-awesome/* node_modules app/e2etest diff --git a/.jshintrc b/.jshintrc index 7912f95d..4735ec43 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,23 +1,86 @@ { - "node": true, - "browser": true, - "esnext": true, - "bitwise": true, - "camelcase": true, - "curly": true, - "eqeqeq": true, - "immed": true, - "indent": 2, - "latedef": true, - "newcap": true, - "noarg": true, - "quotmark": "single", - "regexp": true, - "undef": true, - "unused": true, - "strict": true, - "trailing": true, - "smarttabs": true, - "jquery": true, - "white": true + "node": true, + "browser": true, + "esnext": true, + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "indent": 2, + "latedef": true, + "newcap": true, + "noarg": true, + "quotmark": "single", + "regexp": true, + "undef": true, + "unused": true, + "strict": true, + "trailing": true, + "smarttabs": true, + "jquery": true, + "white": true, + "noempty": true, + "nonew": true, + "maxlen": 200, + "boss": true, + "eqnull": true, + "expr": true, + "globalstrict": true, + "laxbreak": true, + "loopfunc": true, + "sub": true, + "globals": { + "angular" : false, + "myDemoApp" : true, + "alert": false, + "formsAngular": true, + "DISPLAY_CELL_TEMPLATE": false, + "EDITABLE_CELL_TEMPLATE": false, + "_" : true, + "ngGridPdfExportPlugin": false, + "ngGridCsvExportPlugin": false, + "moment": false, + + /* jasmine / karma */ + "xit": false, + "xdescribe": false, + "it": false, + "iit": false, + "describe": false, + "ddescribe": false, + "beforeEach": false, + "afterEach": false, + "before": false, + "after": false, + "expect": false, + "jasmine": false, + "spyOn": false, + "waits": false, + "waitsFor": false, + "runs": false, + "dump": false, + + /* e2e */ + "browser": false, + "element": false, + "input": false, + "protractor": false, + "by": false, + + /* testabilityPatch / matchers */ + "inject": false, + "module": false, + "dealoc": false, + "_jQuery": false, + "_jqLiteMode": false, + "sortedHtml": false, + "childrenTagsOf": false, + "assertHidden": false, + "assertVisible": false, + "provideLog": false, + "spyOnlyCallsWithArgs": false, + "createMockStyleSheet": false, + "browserTrigger": false + } } diff --git a/.travis.yml b/.travis.yml index ab69e919..9ffbc4e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1 +1 @@ -language: node_js services: mongodb node_js: - "0.10" \ No newline at end of file +language: node_js services: mongodb node_js: - "0.10" before_install: - "export DISPLAY=:99.0" - "sh -e /etc/init.d/xvfb start" before_script: - npm install -g bower - bower install \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 03c228df..45d043e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,75 @@ # forms-angular +## 0.2 to 0.3 +### Summary +* Improvements to routing: + * Module specific routes are now specified with a call to the setRoutes(appRoutes, defaultRoute) method of an injected + formRoutesProvider - see the breaking changes section for an example and details. + * Support for HTML5Mode and hashPrefix, including a service to simplify use + * Support for Twitter Bootstrap 3, including a service to simplify use. To use Bootstrap 3 you need to upgrade a few of the + libraries that Bower installs. Change the following lines in bower.json: +``` + "angular-ui-bootstrap-bower": "0.8.0", + "bootstrap": "2.3.2", + "select2-bootstrap-css": "~1.2", +``` + to +``` + "angular-ui-bootstrap-bower": "0.11.0", + "bootstrap": "3.1.1", + "select2-bootstrap-css": "~1.3", +``` + + +### BREAKING CHANGES +* Routing has changed - replace +``` +myModule.config(['$routeProvider', function ($routeProvider) { + $routeProvider. + when('/index', {templateUrl: 'partials/landing-page.html'}). + when('/someRoute', {templateUrl: 'partials/someTemplate.html'}). + ... etc ... + when('/analyse/:model/:reportSchemaName', {templateUrl: 'partials/base-analysis.html'}). + when('/analyse/:model', {templateUrl: 'partials/base-analysis.html'}). + when('/:model/:id/edit', {templateUrl: 'partials/base-edit.html'}). + when('/:model/new', {templateUrl: 'partials/base-edit.html'}). + when('/:model', {templateUrl: 'partials/base-list.html'}). + when('/:model/:form/:id/edit', {templateUrl: 'partials/base-edit.html'}). // non default form (different fields etc) + when('/:model/:form/new', {templateUrl: 'partials/base-edit.html'}). // non default form (different fields etc) + when('/:model/:form', {templateUrl: 'partials/base-list.html'}). // list page with links to non default form + otherwise({redirectTo: '/index'}); +}]); +``` +with +``` +myModule.config(['formRoutesProvider', function (formRoutes) { + formRoutes.setRoutes([ + {route:'/index', options:{templateUrl: 'partials/landing-page.html'}}, + {route:'/someRoute', options:{templateUrl: 'partials/someTemplate.html'}} + ], '/index'); +}]); +``` +where the first parameter is an array of objects containing a route and a set of options (which are passed straight to +[$routeProvider](http://docs.angularjs.org/api/ngRoute/provider/$routeProvider) and the second parameter is the default route. +* Stylesheets have moved down into a ./css folder relative to where they were, and there +are now Bootstrap 2 and Bootstrap 3 versions. +* You should initialise formsAngular with something similar to: +``` +formsAngular.config(['urlServiceProvider', 'cssFrameworkServiceProvider', function (urlService, cssFrameworkService) { + urlService.setOptions({html5Mode: false, hashPrefix: '!'}); + cssFrameworkService.setOptions({framework: 'bs2'}); // bs2 and bs3 are supported + }]); +``` +* Report drilldowns now start from the model +``` +drilldown: '/#/g_conditional_fields/!_id!/edit' +drilldown: '/#!/g_conditional_fields/|_id|/edit' +``` +both become +``` +drilldown: 'g_conditional_fields/|_id|/edit' +``` + ## 0.1 to 0.2 ### Summary * Support for radio button groups, CKEditor diff --git a/Gruntfile.js b/Gruntfile.js index 860dc280..d138d1ff 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1 +1 @@ -// # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to match all subfolders: // 'test/spec/**/*.js' module.exports = function(grunt) { var exec = require('child_process').exec; // load all grunt tasks require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); // // configurable paths // var yeomanConfig = { // app: 'app', // dist: 'dist' // }; /* WHAT NEEDS TO HAPPEN FOR A RELEASE MANUAL: Merge everything into master and switch to master branch BASH: npm test - Test proposed release *MANUAL: Lint proposed release BASH: grunt - loads of stuff MANUAL: Create branch for the next release */ // Project configuration. grunt.initConfig({ // Project settings yeoman: { // configurable paths app: require('./bower.json').appPath || 'app', dist: 'dist' }, builddir: 'js-build', pkg: grunt.file.readJSON('package.json'), meta: { banner: '/**\n' + ' * <%= pkg.description %>\n' + ' * @version v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %>\n' + ' * @link <%= pkg.homepage %>\n' + ' * @license MIT License, http://www.opensource.org/licenses/MIT\n' + ' */' }, watch: { recess: { files: ['app/css/{,*/}*.less'], tasks: ['recess'] } }, "expand-include" : { "get-started": { src: [ "app/partials/get-started/get-started-template.html" ], dest: "app/partials/get-started.html", options: { directiveSyntax: "xml", substituteEntities : true, adjustReferences: false } } }, concat: { options: { banner: '/*! forms-angular <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, build: { src: [ 'app/js/forms-angular.js', 'app/js/controllers/*.js', 'app/js/directives/*.js', 'app/js/filters/*.js', 'app/js/services/*.js', 'app/js/plugins/ng-grid/*.js', 'app/js/plugins/jsPDF/*.js' ], dest: '<%= builddir %>/forms-angular.js' } }, // If you are here because you just came across "Warning: Running "recess:dist" (recess) task Fatal error: variable @input-border is undefined Use --force to continue. // Then make sure your bower.json specifies ~1.2 of git://github.com/t0m/select2-bootstrap-css.git#~1.2 recess: { dist: { options: { compile: true }, files: { 'app/demo/css/demo.css': ['app/demo/css/demo.less'], 'app/css/forms-angular.css': ['app/css/forms-angular.less'] } } }, clean: { dist: { files: [{ dot: true, src: [ '.tmp', 'dist/*', 'dist/.git*' ] }] }, server: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 version'] }, dist: { files: [{ expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' }] } }, uglify: { options: { banner: '/*! forms-angular <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, build: { src: '<%= builddir %>/forms-angular.js', dest: '<%= builddir %>/forms-angular.min.js' } }, lint: { files: ['grunt.js', 'common/**/*.js', 'modules/**/*.js'] }, jshint: { options: { jshintrc: '.jshintrc' }, all: [ 'Gruntfile.js', 'app/js/scripts/{,*/}*.js', 'server/{,*/}*.js', 'test/api/{,*/}*.js', 'test/unit/{,*/}*.js', 'test/e2e/{,*/}*.js' ] }, copy: { // Copy the required files into the npm distribution folder // {expand: true, src: ['path/*'], dest: 'dest/', filter: 'isFile'}, // includes files in path // {expand: true, src: ['path/**'], dest: 'dest/'}, // includes files in path and its subdirs // {expand: true, cwd: 'path/', src: ['**'], dest: 'dest/'}, // makes all src relative to cwd // {expand: true, flatten: true, src: ['path/**'], dest: 'dest/', filter: 'isFile'} // flattens results to a single level bower: { files: [ {src: 'bower.json', dest: 'js-build/bower.json'}, {src: 'app/css/forms-angular.css', dest:'js-build/forms-angular.css'}, {src: 'app/css/forms-angular.less', dest:'js-build/forms-angular.less'} ] }, npm: { files: [ {src: 'package.json', dest:'npm-build/package.json'}, {src: 'LICENSE.txt', dest:'npm-build/LICENSE.txt'}, {src: 'server/lib/data_form.js',dest:'npm-build/lib/data_form.js'} ] }, dist: { files: [ { expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', 'partials/*.html', '.htaccess', 'img/{,*/}*.{webp}', 'fonts/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: [ 'generated/*' ] }, {expand:true, cwd:'<%= yeoman.app %>/bower_components/components-font-awesome', src:['**'], dest: '<%= yeoman.dist %>/styles/components-font-awesome'}, {expand:true, cwd:'<%= yeoman.app %>/bower_components/jquery-ui/themes/smoothness/images', src:['**'], dest: '<%= yeoman.dist %>/styles/images'}, {expand:true, cwd:'<%= yeoman.app %>/bower_components/select2', src:['*.{gif,png}'], dest: '<%= yeoman.dist %>/styles'} ] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } }, bump: { options: { files: ['package.json','bower.json'], updateConfigs: ['pkg'], commit: true, commitMessage: 'Release v%VERSION%', commitFiles: ['-a'], // '-a' for all files createTag: true, tagName: 'v%VERSION%', tagMessage: 'Version %VERSION%', push: true, pushTo: 'origin', gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' // options to use with '$ git describe' } }, // Renames files for browser caching purposes rev: { dist: { files: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } } }, // Reads HTML for usemin blocks to enable smart builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepare: { html: 'app/index.html', options: { dest: 'dist' } }, // Performs rewrites based on rev and the useminPrepare configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>'] } }, // The following *-min tasks produce minified files in the dist folder imagemin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{png,jpg,jpeg,gif}', dest: '<%= yeoman.dist %>/img' }], options: { cache: false } } }, svgmin: { dist: { files: [{ expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' }] } }, htmlmin: { dist: { options: { // Optional configurations that you can uncomment to use // removeCommentsFromCDATA: true, // collapseBooleanAttributes: true, // removeAttributeQuotes: true, // removeRedundantAttributes: true, // useShortDoctype: true, // removeEmptyAttributes: true, // removeOptionalTags: true*/ }, files: [{ expand: true, cwd: '<%= yeoman.app %>', src: ['*.html', 'partials/*.html', 'template/*.html'], dest: '<%= yeoman.dist %>' }] } }, concurrent: { dist: [ 'recess', 'copy:styles', 'imagemin', 'svgmin', //was getting an error when this was enabled, and was too lazy to figure it out 'htmlmin' ] } }); grunt.registerTask('modify_json', 'Modify the package.json and bower.json files.', function(type) { var filename = 'npm-build/package.json'; var content = grunt.file.readJSON(filename); switch (type) { case 'live' : content.name = "forms-angular"; break; case 'test' : content.name = "forms-angular-test"; break; default: grunt.fatal('Invalid call to modify_json : '+ type); } content.main = "lib/data_form.js"; delete content.scripts; delete content.dependencies.express; delete content.dependencies.bower; delete content.dependencies.mongoose; delete content.devDependencies; grunt.file.write(filename, JSON.stringify(content,null,2)); grunt.log.ok('Modified npm build package.json'); filename = 'js-build/bower.json'; content = grunt.file.readJSON(filename); delete content.dependencies['components-font-awesome']; grunt.file.write(filename, JSON.stringify(content,null,2)); grunt.log.ok('Modified npm build bower.json'); }); grunt.registerTask('commit-tag-push', 'Do a git commit, tag and push', function(folder) { var startDir = process.cwd(); var opts = grunt.config.get(['bump']).options; process.chdir(folder); var globalVersion = grunt.config.get().pkg.version; var commitMessage = opts.commitMessage.replace('%VERSION%', globalVersion); var done = this.async(); var queue = []; var next = function () { if (!queue.length) { process.chdir(startDir); return done(); } queue.shift()(); }; var runIt = function (behavior) { queue.push(behavior); }; runIt(function () { exec('git commit ' + opts.commitFiles.join(' ') + ' -m "' + commitMessage + '"', function (err, stdout, stderr) { if (err) { grunt.fatal('Can not create the commit:\n ' + stderr); } grunt.log.ok('Committed as "' + commitMessage + '"'); next(); }); }); var tagName = opts.tagName.replace('%VERSION%', globalVersion); var tagMessage = opts.tagMessage.replace('%VERSION%', globalVersion); runIt(function () { exec('git tag -a ' + tagName + ' -m "' + tagMessage + '"', function (err, stdout, stderr) { if (err) { grunt.fatal('Can not create the tag:\n ' + stderr); } grunt.log.ok('Tagged as "' + tagName + '"'); next(); }); }); runIt(function () { exec('git push ' + opts.pushTo + ' && git push ' + opts.pushTo + ' --tags', function (err, stdout, stderr) { if (err) { grunt.fatal('Can not push to ' + opts.pushTo + ':\n ' + stderr); } grunt.log.ok('Pushed to ' + opts.pushTo); next(); }); }); next(); }); grunt.registerTask('npm-publish', 'Publish a package', function (folder) { var done = this.async(); exec('npm publish ' + folder, function (err, stdout, stderr) { grunt.log.ok(stdout); if (err) { grunt.fatal('Can publish to npm:\n ' + stderr); } grunt.log.ok('Package published'); done(); }); }); var bumpLevel = grunt.option('bumpLevel') || 'patch'; grunt.registerTask('build_getting_started', ['concat:get_started']); grunt.registerTask('build', [ 'clean:dist', 'useminPrepare', 'concurrent:dist', 'autoprefixer', 'concat', 'copy:dist', // 'cdnify', 'cssmin', 'uglify', 'rev', 'usemin' ]); grunt.registerTask('default', [ // 'jshint', 'build' ]); // To do a minor / major release to something of the form // grunt release --bumpLevel=minor grunt.registerTask('release', ['build', 'bump-only:' + bumpLevel, 'copy', 'modify_json:live', 'bump-commit', 'commit-tag-push:js-build', 'npm-publish:npm-build']); grunt.registerTask('testprep', ['expand-include', 'build', 'copy', 'modify_json:test']); grunt.registerTask('testrelease', ['expand-include', 'build', 'bump-only:' + bumpLevel, 'copy', 'modify_json:test', 'npm-publish:npm-build']); }; \ No newline at end of file +'use strict'; // # Globbing // for performance reasons we're only matching one level down: // 'test/spec/{,*/}*.js' // use this if you want to match all subfolders: // 'test/spec/**/*.js' module.exports = function (grunt) { var exec = require('child_process').exec; // load all grunt tasks require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); // // configurable paths // var yeomanConfig = { // app: 'app', // dist: 'dist' // }; /* WHAT NEEDS TO HAPPEN FOR A RELEASE MANUAL: Merge everything into master and switch to master branch BASH: npm test - Test proposed release *MANUAL: Lint proposed release BASH: grunt - loads of stuff MANUAL: Create branch for the next release */ // Project configuration. grunt.initConfig({ // Project settings yeoman: { // configurable paths app: require('./bower.json').appPath || 'app', dist: 'dist' }, builddir: 'js-build', pkg: grunt.file.readJSON('package.json'), meta: { banner: '/**\n' + ' * <%= pkg.description %>\n' + ' * @version v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd hh:nn") %>\n' + ' * @link <%= pkg.homepage %>\n' + ' * @license MIT License, http://www.opensource.org/licenses/MIT\n' + ' */' }, watch: { less: { files: ['app/css/{,*/}*.less'], tasks: ['less'] } }, 'expand-include': { 'get-started': { src: [ 'app/partials/get-started/get-started-template.html' ], dest: 'app/partials/get-started.html', options: { directiveSyntax: 'xml', substituteEntities: true, stripSelectedComments: true, adjustReferences: false } } }, concat: { options: { banner: '/*! forms-angular <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, build: { src: [ 'app/js/forms-angular.js', 'app/js/controllers/*.js', 'app/js/directives/*.js', 'app/js/filters/*.js', 'app/js/services/*.js', 'app/js/plugins/ng-grid/*.js', 'app/js/plugins/jsPDF/*.js', 'app/generated/*.js' ], dest: '<%= builddir %>/forms-angular.js' } }, // If you are here because you just came across "Warning: Running "recess:dist" (recess) task Fatal error: variable @input-border is undefined Use --force to continue. // Then make sure your bower.json specifies ~1.2 of git://github.com/t0m/select2-bootstrap-css.git#~1.2 less: { bs2: { options: { compile: true }, files: { 'app/css/forms-angular-bs2.css': ['app/css/forms-angular-bs2.less'], 'app/demo/css/demo-bs2.css': ['app/demo/css/demo-bs2.less'] } }, bs3: { options: { compile: true }, files: { 'app/css/forms-angular-bs3.css': ['app/css/forms-angular-bs3.less'], 'app/demo/css/demo-bs3.css': ['app/demo/css/demo-bs3.less'] } } }, clean: { dist: { files: [ { dot: true, src: [ '.tmp', 'dist/*', 'dist/.git*' ] } ] }, server: '.tmp' }, // Add vendor prefixed styles autoprefixer: { options: { browsers: ['last 1 version'] }, dist: { files: [ { expand: true, cwd: '.tmp/styles/', src: '{,*/}*.css', dest: '.tmp/styles/' } ] } }, uglify: { options: { banner: '/*! forms-angular <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, build: { src: '<%= builddir %>/forms-angular.js', dest: '<%= builddir %>/forms-angular.min.js' } }, jshint: { options: { jshintrc: '.jshintrc', ignores: ['app/js/services/utils.js'] }, all: [ 'Gruntfile.js', 'server/{,*/}*.js', 'app/js/{,*/}*.js', 'app/demo/{,*/}*.js', 'test/api/{,*/}*.js', 'test/unit/{,*/}*.js', 'test/midway/{,*/}*.js', 'test/e2e/{,*/}*.js' ] }, copy: { // Copy the required files into the npm distribution folder // {expand: true, src: ['path/*'], dest: 'dest/', filter: 'isFile'}, // includes files in path // {expand: true, src: ['path/**'], dest: 'dest/'}, // includes files in path and its subdirs // {expand: true, cwd: 'path/', src: ['**'], dest: 'dest/'}, // makes all src relative to cwd // {expand: true, flatten: true, src: ['path/**'], dest: 'dest/', filter: 'isFile'} // flattens results to a single level bower: { files: [ {src: 'bower.json', dest: 'js-build/bower.json'}, {src: 'app/css/forms-angular-bs2.css', dest: 'js-build/css/forms-angular-bs2.css'}, {src: 'app/css/forms-angular-bs2.less', dest: 'js-build/css/forms-angular-bs2.less'}, {src: 'app/css/forms-angular-bs3.css', dest: 'js-build/css/forms-angular-bs3.css'}, {src: 'app/css/forms-angular-bs3.less', dest: 'js-build/css/forms-angular-bs3.less'} ] }, npm: { files: [ {src: 'package.json', dest: 'npm-build/package.json'}, {src: 'LICENSE.txt', dest: 'npm-build/LICENSE.txt'}, {src: 'server/lib/data_form.js', dest: 'npm-build/lib/data_form.js'} ] }, dist: { files: [ { expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', 'partials/*.html', 'template/*.html', '.htaccess', 'img/{,*/}*.{webp}', 'fonts/*' ] }, { expand: true, cwd: '.tmp/img', dest: '<%= yeoman.dist %>/img', src: [ 'generated/*' ] }, {expand: true, cwd: '<%= yeoman.app %>/bower_components/components-font-awesome', src: ['**'], dest: '<%= yeoman.dist %>/styles/components-font-awesome'}, {expand: true, cwd: '<%= yeoman.app %>/bower_components/jquery-ui/themes/smoothness/images', src: ['**'], dest: '<%= yeoman.dist %>/styles/images'}, {expand: true, cwd: '<%= yeoman.app %>/bower_components/select2', src: ['*.{gif,png}'], dest: '<%= yeoman.dist %>/styles'} ] }, styles: { expand: true, cwd: '<%= yeoman.app %>/styles', dest: '.tmp/styles/', src: '{,*/}*.css' } }, karma: { options: { singleRun: true }, unit: { configFile: 'config/karma.conf.js' }, midway: { configFile: 'config/karma.midway.conf.js' } }, bump: { options: { files: ['package.json', 'bower.json'], updateConfigs: ['pkg'], commit: true, commitMessage: 'Release v%VERSION%', commitFiles: ['-a'], // '-a' for all files createTag: true, tagName: 'v%VERSION%', tagMessage: 'Version %VERSION%', push: true, pushTo: 'origin', gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' // options to use with '$ git describe' } }, // Renames files for browser caching purposes rev: { dist: { files: { src: [ '<%= yeoman.dist %>/scripts/{,*/}*.js', '<%= yeoman.dist %>/styles/{,*/}*.css', '<%= yeoman.dist %>/img/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist %>/styles/fonts/*' ] } } }, // Reads HTML for usemin blocks to enable smart builds that automatically // concat, minify and revision files. Creates configurations in memory so // additional tasks can operate on them useminPrepare: { html: 'app/index.html', options: { dest: 'dist' } }, // Allow the use of non-minsafe AngularJS files. Automatically makes it // minsafe compatible so Uglify does not destroy the ng references ngmin: { dist: { files: [ { expand: true, cwd: '.tmp/concat/scripts', src: ['app.js', 'lib.js'], dest: '.tmp/concat/scripts' } ] } }, // Performs rewrites based on rev and the useminPrepare configuration usemin: { html: ['<%= yeoman.dist %>/{,*/}*.html'], css: ['<%= yeoman.dist %>/styles/{,*/}*.css'], options: { assetsDirs: ['<%= yeoman.dist %>'] } }, // The following *-min tasks produce minified files in the dist folder imagemin: { dist: { files: [ { expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.{png,jpg,jpeg,gif}', dest: '<%= yeoman.dist %>/img' } ], options: { cache: false } } }, svgmin: { dist: { files: [ { expand: true, cwd: '<%= yeoman.app %>/img', src: '{,*/}*.svg', dest: '<%= yeoman.dist %>/img' } ] } }, ngtemplates: { //TODO separate out the bs2 and bs3 stuff so we aren't sending near dupes down the wire formsAngular: { cwd: 'app', src: 'template/**.html', dest: 'app/generated/app.templates.js', options: { htmlmin: { collapseBooleanAttributes: true, collapseWhitespace: true, removeAttributeQuotes: true, removeComments: true, removeEmptyAttributes: true, removeRedundantAttributes: true, removeScriptTypeAttributes: true, removeStyleLinkTypeAttributes: true }, usemin: 'scripts/lib.js' }, module: 'formsAngular' } }, htmlmin: { dist: { options: { // Optional configurations that you can uncomment to use // removeCommentsFromCDATA: true, // collapseBooleanAttributes: true, // removeAttributeQuotes: true, // removeRedundantAttributes: true, // useShortDoctype: true, // removeEmptyAttributes: true, // removeOptionalTags: true*/ }, files: [ { expand: true, cwd: '<%= yeoman.app %>', src: ['*.html', 'partials/*.html', 'template/*.html'], dest: '<%= yeoman.dist %>' } ] } }, concurrent: { dist: [ 'copy:styles', // 'newer:imagemin', causing "lossy operations" error message and it isn't a big deal to skip... // 'svgmin', 'newer:htmlmin' ] } }); grunt.registerTask('modify_json', 'Modify the package.json and bower.json files.', function (type) { var filename = 'npm-build/package.json'; var content = grunt.file.readJSON(filename); switch (type) { case 'live' : content.name = 'forms-angular'; break; case 'test' : content.name = 'forms-angular-test'; break; default: grunt.fatal('Invalid call to modify_json : ' + type); } content.main = 'lib/data_form.js'; delete content.scripts; delete content.dependencies.express; delete content.dependencies.bower; delete content.dependencies.mongoose; delete content.devDependencies; grunt.file.write(filename, JSON.stringify(content, null, 2)); grunt.log.ok('Modified npm build package.json'); filename = 'js-build/bower.json'; content = grunt.file.readJSON(filename); delete content.dependencies['components-font-awesome']; grunt.file.write(filename, JSON.stringify(content, null, 2)); grunt.log.ok('Modified npm build bower.json'); }); grunt.registerTask('commit-tag-push', 'Do a git commit, tag and push', function (folder) { var startDir = process.cwd(); var opts = grunt.config.get(['bump']).options; process.chdir(folder); var globalVersion = grunt.config.get().pkg.version; var commitMessage = opts.commitMessage.replace('%VERSION%', globalVersion); var done = this.async(); var queue = []; var next = function () { if (!queue.length) { process.chdir(startDir); return done(); } queue.shift()(); }; var runIt = function (behavior) { queue.push(behavior); }; runIt(function () { exec('git commit ' + opts.commitFiles.join(' ') + ' -m "' + commitMessage + '"', function (err, stdout, stderr) { if (err) { grunt.fatal('Can not create the commit:\n ' + stderr); } grunt.log.ok('Committed as "' + commitMessage + '"'); next(); }); }); var tagName = opts.tagName.replace('%VERSION%', globalVersion); var tagMessage = opts.tagMessage.replace('%VERSION%', globalVersion); runIt(function () { exec('git tag -a ' + tagName + ' -m "' + tagMessage + '"', function (err, stdout, stderr) { if (err) { grunt.fatal('Can not create the tag:\n ' + stderr); } grunt.log.ok('Tagged as "' + tagName + '"'); next(); }); }); runIt(function () { exec('git push ' + opts.pushTo + ' && git push ' + opts.pushTo + ' --tags', function (err, stdout, stderr) { if (err) { grunt.fatal('Can not push to ' + opts.pushTo + ':\n ' + stderr); } grunt.log.ok('Pushed to ' + opts.pushTo); next(); }); }); next(); }); grunt.registerTask('npm-publish', 'Publish a package', function (folder) { var done = this.async(); exec('npm publish ' + folder, function (err, stdout, stderr) { grunt.log.ok(stdout); if (err) { grunt.fatal('Can publish to npm:\n ' + stderr); } grunt.log.ok('Package published'); done(); }); }); grunt.registerTask('setupFramework', 'Selecte the framework prior to running less', function (framework) { var done = this.async(); exec('bash scripts/framework.sh ' + framework, function (err, stdout, stderr) { if (err) { grunt.fatal('Error running framework script:\n ' + stderr); } grunt.log.ok('Set up for framework ' + framework); done(); }); }); var bumpLevel = grunt.option('bumpLevel') || 'patch'; grunt.registerTask('build_getting_started', ['expand-include']); grunt.registerTask('build', [ 'karma', 'jshint', 'expand-include', 'clean:dist', 'useminPrepare', //'setupFramework:bs3', //'less:bs3', //'setupFramework:bs2', //'less:bs2', 'ngtemplates', 'concurrent:dist', 'autoprefixer', 'concat', 'ngmin', 'copy:dist', // 'cdnify', 'cssmin', 'uglify', 'rev', 'usemin' ]); grunt.registerTask('check', [ 'karma', 'jshint' ]); grunt.registerTask('default', [ 'check' ]); // To do a minor / major release to something of the form // grunt release --bumpLevel=minor grunt.registerTask('release', ['build', 'bump-only:' + bumpLevel, 'copy', 'modify_json:live', 'bump-commit', 'commit-tag-push:js-build', 'npm-publish:npm-build']); }; \ No newline at end of file diff --git a/app/code/a_unadorned_mongoose.js b/app/code/a_unadorned_mongoose.js index 3d099d2e..f23a63da 100644 --- a/app/code/a_unadorned_mongoose.js +++ b/app/code/a_unadorned_mongoose.js @@ -1,18 +1,24 @@ +'use strict'; + var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ASchema = new Schema({ - surname: {type:String, required:true, index:true}, - forename: {type:String, index:true}, - phone: {type:String}, - weight: Number, - eyeColour: {type: String, required:true, enum:['Blue','Brown','Green','Hazel']}, - dateOfBirth: Date, - accepted: Boolean + surname: {type: String, required: true, index: true}, + forename: {type: String, index: true}, + phone: {type: String}, + weight: Number, + eyeColour: {type: String, required: true, enum: ['Blue', 'Brown', 'Green', 'Hazel']}, + dateOfBirth: Date, + accepted: Boolean }); var A; -try {A = mongoose.model('A') } catch(e) {A = mongoose.model('A', ASchema)} +try { + A = mongoose.model('A'); +} catch (e) { + A = mongoose.model('A', ASchema); +} module.exports = A; diff --git a/app/code/b_using_options.js b/app/code/b_using_options.js index aeb1a5bd..ad9d3fb2 100644 --- a/app/code/b_using_options.js +++ b/app/code/b_using_options.js @@ -1,116 +1,140 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var BSchema = new Schema({ - surname: {type:String,required:true,index:true,list:{}}, // this field appears in a listing and the default edit form header - forename: {type: String, list:true, index:true}, // this field appears in a listing and the default edit form header - website: {type: String, form:{type:'url'}}, - login: {type: String, secure:true, form:{hidden:true}}, // secure prevents the data from being sent by the API, hidden from being shown on the default form - passwordHash: {type: String, secure:true, form:{hidden:true}}, - address: { - line1: {type: String, form:{label: 'Address'}}, // this label overrides the one generated from the field name - line2: {type: String, form:{label: null}}, // null label - gives a blank label - line3: {type: String, form:{label: null, add:'class="some classes here"'}}, - town: {type: String, form:{label: 'Town', placeHolder: "Post town"}}, // You can specify place holders - postcode: {type: String, - match: /(GIR 0AA)|([A-Z]{1,2}[0-9][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2})/, - form:{label: 'Postcode', size:'small', help:'Enter your UK postcode (for example TN2 1AA)'}}, // help displays on the line under the control, size adds matching bootstrap input- class - country: {type: String, form:{label:"Country", hidden:true}}, - surveillance: {type: Boolean, secure:true, form:{hidden:true}} - }, + surname: {type: String, required: true, index: true, list: {}}, // this field appears in a listing and the default edit form header + forename: {type: String, list: true, index: true}, // this field appears in a listing and the default edit form header + website: {type: String, form: {type: 'url'}}, + login: {type: String, secure: true, form: {hidden: true}}, // secure prevents the data from being sent by the API, hidden from being shown on the default form + passwordHash: {type: String, secure: true, form: {hidden: true}}, + address: { + line1: {type: String, form: {label: 'Address'}}, // this label overrides the one generated from the field name + line2: {type: String, form: {label: null}}, // null label - gives a blank label + line3: {type: String, form: {label: null, add: 'class="some classes here"'}}, + town: {type: String, form: {label: 'Town', placeHolder: 'Post town'}}, // You can specify place holders + postcode: {type: String, + match: /(GIR 0AA)|([A-Z]{1,2}[0-9][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2})/, + form: {label: 'Postcode', size: 'small', help: 'Enter your UK postcode (for example TN2 1AA)'}}, // help displays on the line under the control, size adds matching bootstrap input- class + country: {type: String, form: {label: 'Country', hidden: true}}, + surveillance: {type: Boolean, secure: true, form: {hidden: true}} + }, - // The email field is indexed, but the noSearch property means the index is not used in the searchBox searches - // A use case for this would be an index that is used in reports for grouping which has no meaning in a search. - // - // The field has a custom directive to prepend (which is defined in /app/demo/directives/bespoke-field.js) - email: {type: String, index:true, noSearch: true, form:{directive: 'email-field'}}, - weight: {type : Number, min:5, max:300, form:{label:"Approx Weight (lbs)", // this label overrides the one generated from the field name - step:5}}, // input uses the min and max from the Mongoose schema, and the step from the form object + // The email field is indexed, but the noSearch property means the index is not used in the searchBox searches + // A use case for this would be an index that is used in reports for grouping which has no meaning in a search. + // + // The field has a custom directive to prepend (which is defined in /app/demo/directives/bespoke-field.js) + email: {type: String, index: true, noSearch: true, form: {directive: 'email-field'}}, + weight: {type: Number, min: 5, max: 300, form: {label: 'Approx Weight (lbs)', // this label overrides the one generated from the field name + step: 5}}, // input uses the min and max from the Mongoose schema, and the step from the form object - eyeColour: { - type: String, - enum:['Blue','Brown','Green','Hazel'], - required: false, - form:{ - placeHolder:"Select eye colour", // Placeholders work in a combo box - select2: {}, - help:'This control has had an event handler added to it (which looks horrid - sorry!). See post form-input generatio processing section of home page for details.' - } - }, - sex: {type: String, enum:['Male', 'Female'], form:{type:"radio", inlineRadio: true}}, - dateOfBirth: Date, - accepted: {type: Boolean, required: true, form:{helpInline: 'Did we take them?'}, list:{}}, // helpInline displays to the right of the input control - interviewScore:{type:Number,form:{hidden:true},list:{}}, // this field does not appear on the form or listings, even though list is defined - not sure about this - freeText: {type: String, form:{type: 'textarea', rows:5, help:'There is some validation on this field to ensure that the word "rude" is not entered. Try it to see the record level error handling.'}}, - resizingText: {type: String, form:{type: 'textarea', rows:'auto', help:'This field resizes thanks to the angular-elastic module'}}, - formattedText: {type: String, form:{type: 'textarea', editor:'ckEditor', help:'This field uses CKEditor and the ng-ckeditor module'}}, - ipAddress: {type: String, form:{hidden:true}}, - password: {type: String} //any field containing password will display as a password field (dots). This can be overidden by adding 'form:{password:false}' - also this can be true if the field is NOT called password + eyeColour: { + type: String, + enum: ['Blue', 'Brown', 'Green', 'Hazel'], + required: false, + form: { + placeHolder: 'Select eye colour', // Placeholders work in a combo box + select2: {}, + help: 'This control has had an event handler added to it (which looks horrid - sorry!).' + + ' See post form-input generation processing section of documentation for details.' + } + }, + sex: {type: String, enum: ['Male', 'Female'], form: {type: 'radio', inlineRadio: true}}, + dateOfBirth: Date, + accepted: {type: Boolean, required: true, form: {helpInline: 'Did we take them?'}, list: {}}, // helpInline displays to the right of the input control + interviewScore: {type: Number, form: {hidden: true}, list: {}}, // this field does not appear on the form or listings, even though list is defined - not sure about this + freeText: { + type: String, + form: { + type: 'textarea', + rows: 5, + help: 'There is some validation on this field to ensure that the word "rude" is not entered. Try it to see the record level error handling.' + } + }, + resizingText: {type: String, form: {type: 'textarea', rows: 'auto', help: 'This field resizes thanks to the angular-elastic module'}}, + formattedText: { + type: String, + form: { + type: 'textarea', + editor: 'ckEditor', + help: 'This field uses CKEditor and the ng-ckeditor module' + } + }, + ipAddress: {type: String, form: {hidden: true}}, + //any field containing password will display as a password field (dots). + // This can be overidden by adding 'form:{password:false}' - also this can be true if the field is NOT called password + password: {type: String} }); -BSchema.pre('save', function(next) { - // Check for rude words (well, the word "rude", actually) to show an error +BSchema.pre('save', function (next) { + // Check for rude words (well, the word "rude", actually) to show an error - if (this.freeText && this.freeText.indexOf('rude') !== -1) { - return next(new Error("Wash your mouth! You must not use rude words.")); - } - return next(); + if (this.freeText && this.freeText.indexOf('rude') !== -1) { + return next(new Error('Wash your mouth! You must not use rude words.')); + } + return next(); }); var B; -try {B = mongoose.model('B') } catch(e) {B = mongoose.model('B', BSchema)} +try { + B = mongoose.model('B'); +} catch (e) { + B = mongoose.model('B', BSchema); +} // Alternative form schemas can be defined as shown below -BSchema.statics.form = function(layout) { - var formSchema = ''; - switch (layout) { - case 'justnameandpostcode' : - // the object overrides the form object in the schema - formSchema = { - surname:{label:"Family Name"}, - "address.postcode":{}, - accepted: {}, - "address.country": {hidden:false} - }; - break; - case 'ipAddress' : // used in testing - formSchema = { - ipAddress:{hidden:false} - }; - break; +BSchema.statics.form = function (layout) { + var formSchema = ''; + switch (layout) { + case 'justnameandpostcode' : + // the object overrides the form object in the schema + formSchema = { + surname: {label: 'Family Name'}, + 'address.postcode': {}, + accepted: {}, + 'address.country': {hidden: false} + }; + break; + case 'ipAddress' : // used in testing + formSchema = { + ipAddress: {hidden: false} + }; + break; - } - return formSchema; + } + return formSchema; }; -BSchema.statics.findAccepted = function(req,cb) { - // Only show the accepted items - cb(null, {accepted:true}); +BSchema.statics.findAccepted = function (req, cb) { + // Only show the accepted items + cb(null, {accepted: true}); }; -BSchema.statics.prepareSave = function(doc, req, cb) { - doc.ipAddress = req.ip; - cb(null); +BSchema.statics.prepareSave = function (doc, req, cb) { + doc.ipAddress = req.ip; + cb(null); }; -BSchema.statics.report = function(report) { - var reportSchema = ''; - switch (report) { - case 'allVisible' : - reportSchema = { - pipeline: [{$group:{_id:"$accepted",count:{"$sum":1}}}], - title: "Numbers of Applicants By Status" - }; - break; - } - return reportSchema; +BSchema.statics.report = function (report) { + var reportSchema = ''; + switch (report) { + case 'allVisible' : + reportSchema = { + pipeline: [ + {$group: {_id: '$accepted', count: {'$sum': 1}}} + ], + title: 'Numbers of Applicants By Status' + }; + break; + } + return reportSchema; }; module.exports = { - model : B // pass the model in an object if you want to add options - , findFunc: BSchema.statics.findAccepted // this can be used to 'pre' filter selections. - // A common use case is to restrict a user to only see their own records - // as described in https://groups.google.com/forum/?fromgroups=#!topic/mongoose-orm/TiR5OXR9mAM - , onSave: BSchema.statics.prepareSave // a hook that can be used to add something from environment to record before update + model: B, // pass the model in an object if you want to add options + findFunc: BSchema.statics.findAccepted, // this can be used to 'pre' filter selections. + // A common use case is to restrict a user to only see their own records + // as described in https://groups.google.com/forum/?fromgroups=#!topic/mongoose-orm/TiR5OXR9mAM + onSave: BSchema.statics.prepareSave // a hook that can be used to add something from environment to record before update }; diff --git a/app/code/c_subdoc_example.js b/app/code/c_subdoc_example.js index c2febd1b..c0203e22 100644 --- a/app/code/c_subdoc_example.js +++ b/app/code/c_subdoc_example.js @@ -1,22 +1,27 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var CSchema = new Schema({ - surname: {type: String, list:{}}, - forename: {type: String, list:true}, - weight: {type : Number, form:{label:"Weight (lbs)"}}, - hairColour: {type: String, enum:['Black','Brown','Blonde','Bald'], required: true, form:{placeHolder:"Select hair colour (required)", select2: {}}}, // Required combo has appropriate styling - dateOfBirth: Date, - accepted: Boolean, - passwordHash: {type:String, secure:true, forms:{hidden:true}}, - interview: { - score:{type:Number}, - date:{type:Date}, - interviewHash: {type:String, secure:true, forms:{hidden:true}} - } + surname: {type: String, list: {}}, + forename: {type: String, list: true}, + weight: {type: Number, form: {label: 'Weight (lbs)'}}, + hairColour: {type: String, enum: ['Black', 'Brown', 'Blonde', 'Bald'], required: true, form: {placeHolder: 'Select hair colour (required)', select2: {}}}, // Required combo has appropriate styling + dateOfBirth: Date, + accepted: Boolean, + passwordHash: {type: String, secure: true, forms: {hidden: true}}, + interview: { + score: {type: Number}, + date: {type: Date}, + interviewHash: {type: String, secure: true, forms: {hidden: true}} + } }); var C; -try {C = mongoose.model('C') } catch(e) {C = mongoose.model('C', CSchema)} +try { + C = mongoose.model('C'); +} catch (e) { + C = mongoose.model('C', CSchema); +} module.exports = C; diff --git a/app/code/d_array_example.js b/app/code/d_array_example.js index 6b42ef39..d2fe0761 100644 --- a/app/code/d_array_example.js +++ b/app/code/d_array_example.js @@ -1,17 +1,22 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var DSchema = new Schema({ - surname: {type: String, list:{}}, - forename: {type: String, list:true}, - weight: {type : Number, form:{label:"Weight (lbs)"}}, - dateOfBirth: Date, - accepted: Boolean, - specialSubjects: [String] + surname: {type: String, list: {}}, + forename: {type: String, list: true}, + weight: {type: Number, form: {label: 'Weight (lbs)'}}, + dateOfBirth: Date, + accepted: Boolean, + specialSubjects: [String] }); var D; -try {D = mongoose.model('D') } catch(e) {D = mongoose.model('D', DSchema)} +try { + D = mongoose.model('D'); +} catch (e) { + D = mongoose.model('D', DSchema); +} module.exports = D; diff --git a/app/code/e_referencing_another_collection.js b/app/code/e_referencing_another_collection.js index 85b0a3f6..483ea3f4 100644 --- a/app/code/e_referencing_another_collection.js +++ b/app/code/e_referencing_another_collection.js @@ -1,34 +1,50 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ESchema = new Schema({ - surname: {type: String, list:{}}, - forename: {type: String, list:true}, - weight: {type : Number, form:{label:"Weight (lbs)"}}, - mentor: { type: Schema.Types.ObjectId, ref: 'c_subdoc_example'}, - teacher: { type: Schema.Types.ObjectId, ref: 'b_using_options', form:{select2:true}}, - dateOfBirth: Date, - assistants: [{ type: Schema.Types.ObjectId, ref: 'a_unadorned_mongoose'}], - team: [{ type: Schema.Types.ObjectId, ref: 'd_array_example', form:{select2:true}}], - accepted: Boolean + surname: {type: String, list: {}}, + forename: {type: String, list: true}, + weight: {type: Number, form: {label: 'Weight (lbs)'}}, + mentor: { type: Schema.Types.ObjectId, ref: 'c_subdoc_example'}, + teacher: { type: Schema.Types.ObjectId, ref: 'b_using_options', form: {select2: {fngAjax: true}}}, + dateOfBirth: Date, + assistants: [ + { type: Schema.Types.ObjectId, ref: 'a_unadorned_mongoose'} + ], + team: [ + { type: Schema.Types.ObjectId, ref: 'd_array_example', form: {select2: true}} + ], + accepted: Boolean }); var E; -try {E = mongoose.model('E') } catch(e) {E = mongoose.model('E', ESchema)} +try { + E = mongoose.model('E'); +} catch (e) { + E = mongoose.model('E', ESchema); +} -ESchema.statics.report = function(report) { - var reportSchema = ''; - switch (report) { - case 'class-sizes' : - reportSchema = { - pipeline: [{$group:{_id:"$teacher",count:{"$sum":1}}}], - title: "Class Sizes", - columnDefs: [{field:'_id', displayName:'Teacher'}, {field:'count', displayName:'Number in Class'}], - columnTranslations: [{field:'_id', ref: 'b_using_options'}] - }; - break; - } - return reportSchema; +ESchema.statics.report = function (report) { + var reportSchema = ''; + switch (report) { + case 'class-sizes' : + reportSchema = { + pipeline: [ + {$group: {_id: '$teacher', count: {'$sum': 1}}} + ], + title: 'Class Sizes', + columnDefs: [ + {field: '_id', displayName: 'Teacher'}, + {field: 'count', displayName: 'Number in Class'} + ], + columnTranslations: [ + {field: '_id', ref: 'b_using_options'} + ] + }; + break; + } + return reportSchema; }; module.exports = E; diff --git a/app/code/f_nested_schema.js b/app/code/f_nested_schema.js index 7c8d391b..94754aa1 100644 --- a/app/code/f_nested_schema.js +++ b/app/code/f_nested_schema.js @@ -1,71 +1,79 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ExamsSchema = new Schema({ - subject: String, - examDate: Date, - score: Number, - result: {type: String, enum:['distinction','merit','pass','fail']}, - grader: { type: Schema.Types.ObjectId, ref: 'b_using_options', form:{select2:{fngAjax:true}}}, - retakeDate: {type: Date, form:{showWhen:{lhs:'$exams.result', comp:'eq', rhs:'fail'}}} + subject: String, + examDate: Date, + score: Number, + result: {type: String, enum: ['distinction', 'merit', 'pass', 'fail']}, + grader: { type: Schema.Types.ObjectId, ref: 'b_using_options', form: {select2: {fngAjax: true}}}, + retakeDate: {type: Date, form: {showWhen: {lhs: '$exams.result', comp: 'eq', rhs: 'fail'}}} }, {_id: false}); var FSchema = new Schema({ - surname: {type: String, index:true, list:{}}, - forename: {type: String, index:true, list:true}, - aTest: { type: Schema.Types.ObjectId, ref: 'b_using_options'}, + surname: {type: String, index: true, list: {}}, + forename: {type: String, index: true, list: true}, + aTest: { type: Schema.Types.ObjectId, ref: 'b_using_options'}, -// exams: [ExamsSchema] // defaults to horizontal compact form - // or - exams: {type:[ExamsSchema], form:{formStyle:"inline"}} +// exams: [ExamsSchema] // defaults to horizontal compact form + // or + exams: {type: [ExamsSchema], form: {formStyle: 'inline'}} }); var F; -try {F = mongoose.model('F') } catch(e) {F = mongoose.model('F', FSchema)} +try { + F = mongoose.model('F'); +} catch (e) { + F = mongoose.model('F', FSchema); +} -F.prototype.searchResultFormat = function() { +F.prototype.searchResultFormat = function () { - // You can set up a function to modify search result display and the - // ordering within a collection - var weighting; + // You can set up a function to modify search result display and the + // ordering within a collection + var weighting; - weighting = this.forename === 'John' ? 2 : 3; + weighting = this.forename === 'John' ? 2 : 3; - return { - resource: 'f_nested_schema', - resourceText: 'Exams', - id: this._id, - weighting: weighting, - text: this.surname + ', ' + this.forename - } + return { + resource: 'f_nested_schema', + resourceText: 'Exams', + id: this._id, + weighting: weighting, + text: this.surname + ', ' + this.forename + }; }; -FSchema.statics.form = function(layout) { - var formSchema = ''; - switch (layout) { - case 'English' : - // Just the English exam from the array - formSchema = { - surname: {}, - forename: {}, - exams: {subkey:{keyList:{subject:'English'}, containerType:'well', title:'English Exam'}} - }; - break; - case 'EnglishAndMaths' : - // English and Maths exams from the array - formSchema = { - surname: {}, - forename: {}, - exams: {subkey:[{keyList:{subject:'English'}, containerType:'well', title:'English Exam'},{keyList:{subject:'Maths'}, containerType:'well', title:'Maths Exam'}]} - }; - break; - } - return formSchema; +FSchema.statics.form = function (layout) { + var formSchema = ''; + switch (layout) { + case 'English' : + // Just the English exam from the array + formSchema = { + surname: {}, + forename: {}, + exams: {subkey: {keyList: {subject: 'English'}, containerType: 'well', title: 'English Exam'}} + }; + break; + case 'EnglishAndMaths' : + // English and Maths exams from the array + formSchema = { + surname: {}, + forename: {}, + exams: {subkey: [ + {keyList: {subject: 'English'}, containerType: 'well', title: 'English Exam'}, + {keyList: {subject: 'Maths'}, containerType: 'well', title: 'Maths Exam'} + ]} + }; + break; + } + return formSchema; }; module.exports = { - model : F, - searchResultFormat: F.prototype.searchResultFormat + model: F, + searchResultFormat: F.prototype.searchResultFormat }; diff --git a/app/code/g_conditional_fields.js b/app/code/g_conditional_fields.js index aa616223..52f35b35 100644 --- a/app/code/g_conditional_fields.js +++ b/app/code/g_conditional_fields.js @@ -1,77 +1,109 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var GSchema = new Schema({ - surname: {type: String, list:{}, index:true}, - forename: {type: String, list:true, index:true}, - sex: {type: String, enum:['F','M']}, - accepted: {type:Boolean, form:{help:'When someone is accepted additional fields appear'}}, - startDate:{type:Date, form:{showWhen: {lhs: '$accepted', comp: 'eq', rhs: true}}}, - startingPosition:{type:String, form:{showWhen: {lhs: '$accepted', comp: 'eq', rhs: true}}}, - bribeAmount: Number + surname: {type: String, list: {}, index: true}, + forename: {type: String, list: true, index: true}, + sex: {type: String, enum: ['F', 'M']}, + accepted: {type: Boolean, form: {help: 'When someone is accepted additional fields appear'}}, + startDate: {type: Date, form: {showWhen: {lhs: '$accepted', comp: 'eq', rhs: true}}}, + startingPosition: {type: String, form: {showWhen: {lhs: '$accepted', comp: 'eq', rhs: true}}}, + bribeAmount: {type: Number, form: {help: 'Try a number between 10 and 200 to see an angular expression used in a conditional'}}, + loggedInBribeBook: {type: Boolean, form: {showWhen: 'record.bribeAmount >= 10 && record.bribeAmount <= 200'}} }); var G; -try {G = mongoose.model('G') } catch(e) {G = mongoose.model('G', GSchema)} +try { + G = mongoose.model('G'); +} catch (e) { + G = mongoose.model('G', GSchema); +} -GSchema.statics.report = function(report) { - var reportSchema = ''; - switch (report) { - case 'breakdownbysex' : - reportSchema = { - pipeline: [{$group:{_id:"$sex",count:{"$sum":1}}}], - title: "Numbers of Applicants By Sex", - columnDefs: [{field:'_id', displayName:'Sex',totalsRow:'Total', "width":"160px"}, {field:'count', displayName:'No of Applicants',totalsRow:'$SUM',"width":"160px", "cellFilter":"number", "align":"right"}], - columnTranslations: [{field:'_id', translations:[{value:'M', display:'Male'},{value:'F', display:'Female'}]}] - }; - break; - case 'totalforonesex' : - reportSchema = { - "pipeline":[{"$match":{"sex":"(sex)"}},{"$group":{"_id":"$sex","count":{"$sum":1}}}], - "title":"Numbers of Applicants By Sex", - "columnDefs":[{"field":'_id',"displayName":'Sex',"width":"200"},{"field":'count',"displayName":'No of Applicants',"align":"right", "width":"200"}], - "columnTranslations": [{"field":'_id',"translations":[{"value":'M', "display":'Male'},{"value":'F',"display":'Female'}]}], - "params":{"sex":{value:'M', type: 'select', enum:['Male','Female'], required:true, conversionExpression: "param[0]"}} - }; - break; - case 'totals' : - reportSchema = { - "pipeline":[{"$project":{"surname":1,"forename":1,"bribeAmount":1, "_id":1}}], - "title":"A report with totals and drilldown", - drilldown: "/#/g_conditional_fields/!_id!/edit", - "columnDefs":[{"field":'surname',"displayName":'Surname',"width":"200", totalsRow:'Total'},{"field":'forename',"displayName":'Forename',"width":200},{"field":"bribeAmount","displayName":"Bribe","align":"right", "width":"200", totalsRow:'$SUM', "cellFilter":"currency"}] - }; - break; - case 'functiondemo' : - reportSchema = { - "pipeline":[{"$group":{"_id":"$sex","count":{"$sum":1},"functionResult":{"$sum":1}}}], - "title":"Numbers of Applicants By Sex", - "columnDefs":[{"field":'_id',"displayName":'Sex',"width":"200"},{"field":'count',"displayName":'No of Applicants',"align":"right", "width":"200"}, {"field":'functionResult',"displayName":'Applicants + 10',"align":"right", "width":"200"}], - "columnTranslations": [{"field":'_id',"translations":[{"value":'M', "display":'Male'},{"value":'F',"display":'Female'}]}, {field:'functionResult', - fn: function(row,cb) { - row.functionResult = row.functionResult + 10; - cb(); - }}] - }; - break; - case 'selectbynumber' : - reportSchema = { - "pipeline":[ - {"$group":{"_id":"$sex","count":{"$sum":1}}}, - {"$match":{"count":"(number_param)"}} - ], - "params":{"number_param":{value:11, type:'number',required:true}} - }; - break; - } - return reportSchema; +GSchema.statics.report = function (report) { + var reportSchema = '', + fullDescription = {field: '_id', translations: [ {value: 'M', display: 'Male'}, {value: 'F', display: 'Female'}, {'value': '', 'display': 'Unspecified'}]}; + switch (report) { + case 'breakdownbysex' : + reportSchema = { + pipeline: [ + {$group: {_id: '$sex', count: {'$sum': 1}}} + ], + title: 'Numbers of Applicants By Sex', + columnDefs: [ + {field: '_id', displayName: 'Sex', totalsRow: 'Total', 'width': '160px'}, + {field: 'count', displayName: 'No of Applicants', totalsRow: '$SUM', 'width': '160px', 'cellFilter': 'number', 'align': 'right'} + ], + columnTranslations: [fullDescription] + }; + break; + case 'totalforonesex' : + reportSchema = { + 'pipeline': [ + {'$match': {'sex': '(sex)'}}, + {'$group': {'_id': '$sex', 'count': {'$sum': 1}}} + ], + 'title': 'Numbers of Applicants By Sex', + 'columnDefs': [ + {'field': '_id', 'displayName': 'Sex', 'width': '200'}, + {'field': 'count', 'displayName': 'No of Applicants', 'align': 'right', 'width': '200'} + ], + 'columnTranslations': [fullDescription], + 'params': {'sex': {value: 'M', type: 'select', enum: ['Male', 'Female'], required: true, conversionExpression: 'param[0]'}} + }; + break; + case 'totals' : + reportSchema = { + 'pipeline': [ + {'$project': {'surname': 1, 'forename': 1, 'bribeAmount': 1, '_id': 1}} + ], + 'title': 'A report with totals and drilldown', + drilldown: 'g_conditional_fields/|_id|/edit', + 'columnDefs': [ + {'field': 'surname', 'displayName': 'Surname', 'width': '200', totalsRow: 'Total'}, + {'field': 'forename', 'displayName': 'Forename', 'width': 200}, + {'field': 'bribeAmount', 'displayName': 'Bribe', 'align': 'right', 'width': '200', totalsRow: '$SUM', 'cellFilter': 'currency'} + ] + }; + break; + case 'functiondemo' : + reportSchema = { + 'pipeline': [ + {'$group': {'_id': '$sex', 'count': {'$sum': 1}, 'functionResult': {'$sum': 1}}} + ], + 'title': 'Numbers of Applicants By Sex', + 'columnDefs': [ + {'field': '_id', 'displayName': 'Sex', 'width': '200'}, + {'field': 'count', 'displayName': 'No of Applicants', 'align': 'right', 'width': '200'}, + {'field': 'functionResult', 'displayName': 'Applicants + 10', 'align': 'right', 'width': '200'} + ], + 'columnTranslations': [fullDescription, + {field: 'functionResult', + fn: function (row, cb) { + row.functionResult = row.functionResult + 10; + cb(); + }} + ] + }; + break; + case 'selectbynumber' : + reportSchema = { + 'pipeline': [ + {'$group': {'_id': '$sex', 'count': {'$sum': 1}}}, + {'$match': {'count': '(number_param)'}} + ], + 'params': {'number_param': {value: 11, type: 'number', required: true}} + }; + break; + } + return reportSchema; }; module.exports = { - model : G, - searchImportance: 1, - searchOrder: {surname:1}, - listOrder: {surname:1} + model: G, + searchImportance: 1, + searchOrder: {surname: 1}, + listOrder: {surname: 1} }; diff --git a/app/code/h_deep_nesting.js b/app/code/h_deep_nesting.js index 772d97d5..8a34547f 100644 --- a/app/code/h_deep_nesting.js +++ b/app/code/h_deep_nesting.js @@ -1,41 +1,48 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var CourseTeachersSchema = new Schema({ - teacher: { type: Schema.Types.ObjectId, ref: 'b_using_options'}, - room: Number + teacher: { type: Schema.Types.ObjectId, ref: 'b_using_options'}, + room: Number }); var ExamsSchema = new Schema({ - subject: { type: String}, - examDate: Date, - score: Number, - result: {type: String, enum:['distinction','merit','pass','fail']}, - grader: { type: Schema.Types.ObjectId, ref: 'b_using_options'} + subject: { type: String}, + examDate: Date, + score: Number, + result: {type: String, enum: ['distinction', 'merit', 'pass', 'fail']}, + grader: { type: Schema.Types.ObjectId, ref: 'b_using_options'} }); var CourseSchema = new Schema({ - subject: String, - grade: {type: String}, - teachers: [CourseTeachersSchema] + subject: String, + grade: {type: String}, + teachers: [CourseTeachersSchema] }); var HSchema = new Schema({ - surname: {type: String, list:{}}, - forename: {type: String, list:true}, - address : { - street: String, - town: String - }, - studies : { - courses: {type:[CourseSchema], form:{noRemove: true}}, - exams: [ExamsSchema] - }, - assistants: [{ type: Schema.Types.ObjectId, ref: 'b_using_options'}] + surname: {type: String, list: {}}, + forename: {type: String, list: true}, + address: { + street: String, + town: String + }, + studies: { + courses: {type: [CourseSchema], form: {noRemove: true}}, + exams: [ExamsSchema] + }, + assistants: [ + { type: Schema.Types.ObjectId, ref: 'b_using_options'} + ] }); var H; -try {H = mongoose.model('H') } catch(e) {H = mongoose.model('H', HSchema)} +try { + H = mongoose.model('H'); +} catch (e) { + H = mongoose.model('H', HSchema); +} module.exports = H; diff --git a/app/code/i_tabbed_forms.js b/app/code/i_tabbed_forms.js index 1d0c732b..7e0a8b9d 100644 --- a/app/code/i_tabbed_forms.js +++ b/app/code/i_tabbed_forms.js @@ -1,24 +1,29 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ISchema = new Schema({ - surname: {type: String, required: true, list:{}, form:{tab:'first'}}, - forename: {type: String, list:true, form:{tab:'first'}}, - address: { - line1: {type: String, form:{label: 'Address',tab:'first'}}, - line2: {type: String, form:{label: null,tab:'first'}}, - line3: {type: String, form:{label: null,tab:'first'}}, - town: {type: String, form:{label: 'Town', tab:'first'}}, - postcode: {type: String, form:{label: 'Postcode',tab:'first'}} - }, - weight: {type : Number, form:{label:"Weight (lbs)",tab:'second'}}, - dateOfBirth: {type:Date, form:{tab:'second'}}, - accepted: {type: Boolean, form:{tab:'second'}}, - interviewScore:{type:Number,form:{tab:'second'},list:{}}, - freeText: {type: String, form:{type: 'textarea', rows:5, tab:'second'}} + surname: {type: String, required: true, list: {}, form: {tab: 'first'}}, + forename: {type: String, list: true, form: {tab: 'first'}}, + address: { + line1: {type: String, form: {label: 'Address', tab: 'first'}}, + line2: {type: String, form: {label: null, tab: 'first'}}, + line3: {type: String, form: {label: null, tab: 'first'}}, + town: {type: String, form: {label: 'Town', tab: 'first'}}, + postcode: {type: String, form: {label: 'Postcode', tab: 'first'}} + }, + weight: {type: Number, form: {label: 'Weight (lbs)', tab: 'second'}}, + dateOfBirth: {type: Date, form: {tab: 'second'}}, + accepted: {type: Boolean, form: {tab: 'second'}}, + interviewScore: {type: Number, form: {tab: 'second'}, list: {}}, + freeText: {type: String, form: {type: 'textarea', rows: 5, tab: 'second'}} }); var I; -try {I = mongoose.model('I') } catch(e) {I = mongoose.model('I', ISchema)} +try { + I = mongoose.model('I'); +} catch (e) { + I = mongoose.model('I', ISchema); +} module.exports = I; diff --git a/app/code/j_directive_with_form.js b/app/code/j_directive_with_form.js index 5d7f3026..2fe87634 100644 --- a/app/code/j_directive_with_form.js +++ b/app/code/j_directive_with_form.js @@ -1,20 +1,25 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var FriendSchema = new Schema({ - friend: { type: Schema.Types.ObjectId, ref: 'a_unadorned_mongoose', form: {select2: {fngAjax: true}} }, - type: { type: String, enum: ['best friend', 'partner', 'colleague', 'acquaintance', 'other']}, - comment: { type: String} + friend: { type: Schema.Types.ObjectId, ref: 'a_unadorned_mongoose'}, + type: { type: String, enum: ['best friend', 'partner', 'colleague', 'acquaintance', 'other']}, + comment: { type: String} }, {_id: false}); var JSchema = new Schema({ - surname: {type: String, required: true, list:{}}, - forename: {type: String, list:true}, - friendList: {type: [FriendSchema], form: {directive: 'friends'}} + surname: {type: String, required: true, list: {}}, + forename: {type: String, list: true}, + friendList: {type: [FriendSchema], form: {directive: 'friends'}} }); var J; -try {J = mongoose.model('J') } catch(e) {J = mongoose.model('J', JSchema)} +try { + J = mongoose.model('J'); +} catch (e) { + J = mongoose.model('J', JSchema); +} module.exports = J; diff --git a/app/code/z_custom_form.js b/app/code/z_custom_form.js index a8465816..3200dbc6 100644 --- a/app/code/z_custom_form.js +++ b/app/code/z_custom_form.js @@ -1,15 +1,20 @@ +'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ZSchema = new Schema({ - surname: String, - forename: String, - weight: Number, - dateOfBirth: Date, - termsAccepted: Boolean + surname: String, + forename: String, + weight: Number, + dateOfBirth: Date, + termsAccepted: Boolean }); var Z; -try {Z = mongoose.model('Z') } catch(e) {Z = mongoose.model('Z', ZSchema)} +try { + Z = mongoose.model('Z'); +} catch (e) { + Z = mongoose.model('Z', ZSchema); +} module.exports = Z; diff --git a/app/css/forms-angular-bs-common.less b/app/css/forms-angular-bs-common.less new file mode 100644 index 00000000..f3cb7743 --- /dev/null +++ b/app/css/forms-angular-bs-common.less @@ -0,0 +1,183 @@ +// Need to make sure right version of bootstrap is in bower_components/bootstrap when you build the CSS files +// Running grunt does this for you +@import "../bower_components/bootstrap/less/bootstrap.less"; + +body { + position: relative; + padding-top: 40px; +} + +.list-item { + .well; +} + +.list-header, .edit-header { + .fixed-header; +} + +.list-body { + padding-top: 100px; +} + +.edit-header { + padding-top: 10px; +} + +.edit-body { + padding-top: 100px; +} + +.page-header { + padding-left: 20px; +} + +.header-rhs { + width: 226px; + padding-right: 60px; + min-height: 40px; +} + +.list-header .header-rhs { + margin: 15px 0; +} + +// "Mixins" +.fixed-header { + position: fixed; + width: 100%; + margin-top: 11px; + z-index: 1; +} + +.header-rhs { + width: inherited !important; + padding-right: 20px !important; + padding-bottom: 5px; + display: block; +} + +// Modifications to ngGrid style + +.gridStyle { + border: 1px solid #d4d4d4; + margin: auto; + height: 400px; + .ngTopPanel { + background-color: #ffffff; + } + .ngHeaderCell { + background-color: #e4e4e4; + } + .fng-right { + text-align: right; + } + .fng-left { + text-align: left; + } + .fng-centre, .fng-center { + text-align: center; + } + .ngTotalCell { + font-weight: bold; + } +} + +button.form-btn { + width: 8em; + height: 2em; +} + +form { + &.form-horizontal.compact { + input + .help-block, select + .help-block, textarea + .help-block, .uneditable-input + .help-block, + .input-prepend + .help-block, .input-append + .help-block { + margin-top: 0; + margin-bottom: 2px; + } + hr { + margin: 8px 0; + } + } + + .schema-head, .sub-doc, .schema-foot { + min-height: 20px; + margin-bottom: 20px; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } + } + + .schema-head { + margin-top: 0; + margin-bottom: 5px; + border: 1px solid #ddd; + padding: 4px 180px; + } + .sub-doc { + padding: 0 5px 0 0; + width: 97%; // which will get rid of scroll bar under most circumstances + margin-bottom: 3px; + } + .sub-doc-btns { + margin-left: 15px; + } + .schema-foot { + padding: 5px 180px; + margin: 5px 0; + } + + input[type="checkbox"].ng-invalid-required:after { + content:"*"; + font-weight: bold; + color: red; + /* padding-left is too small at 12 if inline help is not used*/ + padding-left: 12px + } + input.ng-invalid-required, select.fng-invalid-required { + background-color: rgba(255, 0, 0, 0.10); + } + option { + background-color: white; + } + .fng-select2 { + width: 220px; + } + .form-inline > .sub-doc { + padding: 0 5px; + border: none; + box-shadow: none; + } +} + +.global-search { + position : relative; + float: right; + width: 236px; +} + +.results-container { + width: 6000px; + z-index: 3; + position: absolute; + top: 41px; + right: 0; +} + +.search-results { + float: right; + border: 1px solid gray; + -webkit-box-shadow: 10px 10px 10px #888; + box-shadow: 10px 10px 10px #888; + background: white; + padding: 5px; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; + .search-result.focus { + color: white; + } +} + + diff --git a/app/css/forms-angular.css b/app/css/forms-angular-bs2.css similarity index 69% rename from app/css/forms-angular.css rename to app/css/forms-angular-bs2.css index 68fb67ba..b4e01697 100644 --- a/app/css/forms-angular.css +++ b/app/css/forms-angular-bs2.css @@ -1,18 +1,24 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ .clearfix { *zoom: 1; } - .clearfix:before, .clearfix:after { display: table; - line-height: 0; content: ""; + line-height: 0; } - .clearfix:after { clear: both; } - .hide-text { font: 0/0 a; color: transparent; @@ -20,16 +26,14 @@ background-color: transparent; border: 0; } - .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } - article, aside, details, @@ -42,7 +46,6 @@ nav, section { display: block; } - audio, canvas, video { @@ -50,28 +53,23 @@ video { *display: inline; *zoom: 1; } - audio:not([controls]) { display: none; } - html { font-size: 100%; -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } - a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } - a:hover, a:active { outline: 0; } - sub, sup { position: relative; @@ -79,29 +77,28 @@ sup { line-height: 0; vertical-align: baseline; } - sup { top: -0.5em; } - sub { bottom: -0.25em; } - img { + /* Responsive images (ensure images don't scale beyond their parents) */ + max-width: 100%; + /* Part 1: Set a maxium relative to the parent */ width: auto\9; + /* IE7-8 need help adjusting responsive images */ height: auto; - max-width: 100%; + /* Part 2: Scale the height according to the width, otherwise you get stretching */ vertical-align: middle; border: 0; -ms-interpolation-mode: bicubic; } - #map_canvas img, .google-maps img { max-width: none; } - button, input, select, @@ -110,27 +107,23 @@ textarea { font-size: 100%; vertical-align: middle; } - button, input { *overflow: visible; line-height: normal; } - button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } - button, html input[type="button"], input[type="reset"], input[type="submit"] { - cursor: pointer; -webkit-appearance: button; + cursor: pointer; } - label, select, button, @@ -141,28 +134,24 @@ input[type="radio"], input[type="checkbox"] { cursor: pointer; } - input[type="search"] { -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; -webkit-appearance: textfield; } - input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } - textarea { overflow: auto; vertical-align: top; } - @media print { * { - color: #000 !important; text-shadow: none !important; + color: #000 !important; background: transparent !important; box-shadow: none !important; } @@ -196,7 +185,7 @@ textarea { img { max-width: 100% !important; } - @page { + @page { margin: 0.5cm; } p, @@ -210,7 +199,6 @@ textarea { page-break-after: avoid; } } - body { margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; @@ -219,938 +207,405 @@ body { color: #333333; background-color: #ffffff; } - a { color: #0088cc; text-decoration: none; } - a:hover, a:focus { color: #005580; text-decoration: underline; } - .img-rounded { -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } - .img-polaroid { padding: 4px; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } - .img-circle { -webkit-border-radius: 500px; - -moz-border-radius: 500px; - border-radius: 500px; -} - -.row { - margin-left: -20px; - *zoom: 1; -} - -.row:before, -.row:after { - display: table; - line-height: 0; - content: ""; -} - -.row:after { - clear: both; -} - -.row:before, -.row:after { - display: table; - line-height: 0; - content: ""; -} - -.row:after { - clear: both; -} - -[class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; -} - -.container, -.navbar-static-top .container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} - -.span12 { - width: 940px; -} - -.span11 { - width: 860px; -} - -.span10 { - width: 780px; -} - -.span9 { - width: 700px; -} - -.span8 { - width: 620px; + -moz-border-radius: 500px; + border-radius: 500px; } - -.span7 { - width: 540px; -} - -.span6 { - width: 460px; -} - -.span5 { - width: 380px; -} - -.span4 { - width: 300px; -} - -.span3 { - width: 220px; -} - -.span2 { - width: 140px; -} - -.span1 { - width: 60px; -} - -.offset12 { - margin-left: 980px; -} - -.offset11 { - margin-left: 900px; -} - -.offset10 { - margin-left: 820px; -} - -.offset9 { - margin-left: 740px; -} - -.offset8 { - margin-left: 660px; -} - -.offset7 { - margin-left: 580px; -} - -.offset6 { - margin-left: 500px; -} - -.offset5 { - margin-left: 420px; -} - -.offset4 { - margin-left: 340px; -} - -.offset3 { - margin-left: 260px; -} - -.offset2 { - margin-left: 180px; -} - -.offset1 { - margin-left: 100px; -} - .row { margin-left: -20px; *zoom: 1; } - .row:before, .row:after { display: table; - line-height: 0; content: ""; -} - -.row:after { - clear: both; -} - -.row:before, -.row:after { - display: table; line-height: 0; - content: ""; } - .row:after { clear: both; } - [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } - .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } - .span12 { width: 940px; } - .span11 { width: 860px; } - .span10 { width: 780px; } - .span9 { width: 700px; } - .span8 { width: 620px; } - .span7 { width: 540px; } - .span6 { width: 460px; } - .span5 { width: 380px; } - .span4 { width: 300px; } - .span3 { width: 220px; } - .span2 { width: 140px; } - .span1 { width: 60px; } - .offset12 { margin-left: 980px; } - .offset11 { margin-left: 900px; } - .offset10 { margin-left: 820px; } - .offset9 { margin-left: 740px; } - .offset8 { margin-left: 660px; } - .offset7 { margin-left: 580px; } - .offset6 { margin-left: 500px; } - .offset5 { margin-left: 420px; } - .offset4 { margin-left: 340px; } - .offset3 { margin-left: 260px; } - .offset2 { margin-left: 180px; } - .offset1 { margin-left: 100px; } - .row-fluid { width: 100%; *zoom: 1; } - .row-fluid:before, .row-fluid:after { display: table; - line-height: 0; content: ""; -} - -.row-fluid:after { - clear: both; -} - -.row-fluid:before, -.row-fluid:after { - display: table; line-height: 0; - content: ""; } - .row-fluid:after { clear: both; } - .row-fluid [class*="span"] { display: block; - float: left; width: 100%; min-height: 30px; - margin-left: 2.127659574468085%; - *margin-left: 2.074468085106383%; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.12765957%; + *margin-left: 2.07446809%; } - .row-fluid [class*="span"]:first-child { margin-left: 0; } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.127659574468085%; + margin-left: 2.12765957%; } - .row-fluid .span12 { width: 100%; - *width: 99.94680851063829%; + *width: 99.94680851%; } - .row-fluid .span11 { - width: 91.48936170212765%; - *width: 91.43617021276594%; + width: 91.4893617%; + *width: 91.43617021%; } - .row-fluid .span10 { - width: 82.97872340425532%; - *width: 82.92553191489361%; + width: 82.9787234%; + *width: 82.92553191%; } - .row-fluid .span9 { - width: 74.46808510638297%; - *width: 74.41489361702126%; + width: 74.46808511%; + *width: 74.41489362%; } - .row-fluid .span8 { - width: 65.95744680851064%; - *width: 65.90425531914893%; + width: 65.95744681%; + *width: 65.90425532%; } - .row-fluid .span7 { - width: 57.44680851063829%; - *width: 57.39361702127659%; + width: 57.44680851%; + *width: 57.39361702%; } - .row-fluid .span6 { - width: 48.93617021276595%; - *width: 48.88297872340425%; + width: 48.93617021%; + *width: 48.88297872%; } - .row-fluid .span5 { - width: 40.42553191489362%; - *width: 40.37234042553192%; + width: 40.42553191%; + *width: 40.37234043%; } - .row-fluid .span4 { - width: 31.914893617021278%; - *width: 31.861702127659576%; + width: 31.91489362%; + *width: 31.86170213%; } - .row-fluid .span3 { - width: 23.404255319148934%; - *width: 23.351063829787233%; + width: 23.40425532%; + *width: 23.35106383%; } - .row-fluid .span2 { - width: 14.893617021276595%; - *width: 14.840425531914894%; + width: 14.89361702%; + *width: 14.84042553%; } - .row-fluid .span1 { - width: 6.382978723404255%; - *width: 6.329787234042553%; + width: 6.38297872%; + *width: 6.32978723%; } - .row-fluid .offset12 { - margin-left: 104.25531914893617%; - *margin-left: 104.14893617021275%; + margin-left: 104.25531915%; + *margin-left: 104.14893617%; } - .row-fluid .offset12:first-child { - margin-left: 102.12765957446808%; - *margin-left: 102.02127659574467%; + margin-left: 102.12765957%; + *margin-left: 102.0212766%; } - .row-fluid .offset11 { - margin-left: 95.74468085106382%; - *margin-left: 95.6382978723404%; + margin-left: 95.74468085%; + *margin-left: 95.63829787%; } - .row-fluid .offset11:first-child { - margin-left: 93.61702127659574%; - *margin-left: 93.51063829787232%; + margin-left: 93.61702128%; + *margin-left: 93.5106383%; } - .row-fluid .offset10 { - margin-left: 87.23404255319149%; - *margin-left: 87.12765957446807%; + margin-left: 87.23404255%; + *margin-left: 87.12765957%; } - .row-fluid .offset10:first-child { - margin-left: 85.1063829787234%; - *margin-left: 84.99999999999999%; + margin-left: 85.10638298%; + *margin-left: 85%; } - .row-fluid .offset9 { - margin-left: 78.72340425531914%; - *margin-left: 78.61702127659572%; + margin-left: 78.72340426%; + *margin-left: 78.61702128%; } - .row-fluid .offset9:first-child { - margin-left: 76.59574468085106%; - *margin-left: 76.48936170212764%; + margin-left: 76.59574468%; + *margin-left: 76.4893617%; } - .row-fluid .offset8 { - margin-left: 70.2127659574468%; - *margin-left: 70.10638297872339%; + margin-left: 70.21276596%; + *margin-left: 70.10638298%; } - .row-fluid .offset8:first-child { - margin-left: 68.08510638297872%; - *margin-left: 67.9787234042553%; + margin-left: 68.08510638%; + *margin-left: 67.9787234%; } - .row-fluid .offset7 { - margin-left: 61.70212765957446%; - *margin-left: 61.59574468085106%; + margin-left: 61.70212766%; + *margin-left: 61.59574468%; } - .row-fluid .offset7:first-child { - margin-left: 59.574468085106375%; - *margin-left: 59.46808510638297%; + margin-left: 59.57446809%; + *margin-left: 59.46808511%; } - .row-fluid .offset6 { - margin-left: 53.191489361702125%; - *margin-left: 53.085106382978715%; + margin-left: 53.19148936%; + *margin-left: 53.08510638%; } - .row-fluid .offset6:first-child { - margin-left: 51.063829787234035%; - *margin-left: 50.95744680851063%; + margin-left: 51.06382979%; + *margin-left: 50.95744681%; } - .row-fluid .offset5 { - margin-left: 44.68085106382979%; - *margin-left: 44.57446808510638%; + margin-left: 44.68085106%; + *margin-left: 44.57446809%; } - .row-fluid .offset5:first-child { - margin-left: 42.5531914893617%; - *margin-left: 42.4468085106383%; + margin-left: 42.55319149%; + *margin-left: 42.44680851%; } - .row-fluid .offset4 { - margin-left: 36.170212765957444%; - *margin-left: 36.06382978723405%; + margin-left: 36.17021277%; + *margin-left: 36.06382979%; } - .row-fluid .offset4:first-child { - margin-left: 34.04255319148936%; - *margin-left: 33.93617021276596%; + margin-left: 34.04255319%; + *margin-left: 33.93617021%; } - .row-fluid .offset3 { - margin-left: 27.659574468085104%; - *margin-left: 27.5531914893617%; + margin-left: 27.65957447%; + *margin-left: 27.55319149%; } - .row-fluid .offset3:first-child { - margin-left: 25.53191489361702%; - *margin-left: 25.425531914893618%; + margin-left: 25.53191489%; + *margin-left: 25.42553191%; } - .row-fluid .offset2 { - margin-left: 19.148936170212764%; - *margin-left: 19.04255319148936%; + margin-left: 19.14893617%; + *margin-left: 19.04255319%; } - .row-fluid .offset2:first-child { - margin-left: 17.02127659574468%; - *margin-left: 16.914893617021278%; + margin-left: 17.0212766%; + *margin-left: 16.91489362%; } - .row-fluid .offset1 { - margin-left: 10.638297872340425%; - *margin-left: 10.53191489361702%; + margin-left: 10.63829787%; + *margin-left: 10.53191489%; } - .row-fluid .offset1:first-child { - margin-left: 8.51063829787234%; - *margin-left: 8.404255319148938%; + margin-left: 8.5106383%; + *margin-left: 8.40425532%; } - -.row-fluid { - width: 100%; +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} +.container { + margin-right: auto; + margin-left: auto; *zoom: 1; } - -.row-fluid:before, -.row-fluid:after { +.container:before, +.container:after { display: table; - line-height: 0; content: ""; + line-height: 0; } - -.row-fluid:after { +.container:after { clear: both; } - -.row-fluid:before, -.row-fluid:after { +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} +.container-fluid:before, +.container-fluid:after { display: table; - line-height: 0; content: ""; + line-height: 0; } - -.row-fluid:after { +.container-fluid:after { clear: both; } - -.row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 30px; - margin-left: 2.127659574468085%; - *margin-left: 2.074468085106383%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} - -.row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.127659574468085%; -} - -.row-fluid .span12 { - width: 100%; - *width: 99.94680851063829%; -} - -.row-fluid .span11 { - width: 91.48936170212765%; - *width: 91.43617021276594%; +p { + margin: 0 0 10px; } - -.row-fluid .span10 { - width: 82.97872340425532%; - *width: 82.92553191489361%; +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; } - -.row-fluid .span9 { - width: 74.46808510638297%; - *width: 74.41489361702126%; +small { + font-size: 85%; } - -.row-fluid .span8 { - width: 65.95744680851064%; - *width: 65.90425531914893%; +strong { + font-weight: bold; } - -.row-fluid .span7 { - width: 57.44680851063829%; - *width: 57.39361702127659%; +em { + font-style: italic; } - -.row-fluid .span6 { - width: 48.93617021276595%; - *width: 48.88297872340425%; +cite { + font-style: normal; } - -.row-fluid .span5 { - width: 40.42553191489362%; - *width: 40.37234042553192%; +.muted { + color: #999999; } - -.row-fluid .span4 { - width: 31.914893617021278%; - *width: 31.861702127659576%; +a.muted:hover, +a.muted:focus { + color: #808080; } - -.row-fluid .span3 { - width: 23.404255319148934%; - *width: 23.351063829787233%; +.text-warning { + color: #c09853; } - -.row-fluid .span2 { - width: 14.893617021276595%; - *width: 14.840425531914894%; +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; } - -.row-fluid .span1 { - width: 6.382978723404255%; - *width: 6.329787234042553%; +.text-error { + color: #b94a48; } - -.row-fluid .offset12 { - margin-left: 104.25531914893617%; - *margin-left: 104.14893617021275%; +a.text-error:hover, +a.text-error:focus { + color: #953b39; } - -.row-fluid .offset12:first-child { - margin-left: 102.12765957446808%; - *margin-left: 102.02127659574467%; +.text-info { + color: #3a87ad; } - -.row-fluid .offset11 { - margin-left: 95.74468085106382%; - *margin-left: 95.6382978723404%; +a.text-info:hover, +a.text-info:focus { + color: #2d6987; } - -.row-fluid .offset11:first-child { - margin-left: 93.61702127659574%; - *margin-left: 93.51063829787232%; +.text-success { + color: #468847; } - -.row-fluid .offset10 { - margin-left: 87.23404255319149%; - *margin-left: 87.12765957446807%; +a.text-success:hover, +a.text-success:focus { + color: #356635; } - -.row-fluid .offset10:first-child { - margin-left: 85.1063829787234%; - *margin-left: 84.99999999999999%; +.text-left { + text-align: left; } - -.row-fluid .offset9 { - margin-left: 78.72340425531914%; - *margin-left: 78.61702127659572%; +.text-right { + text-align: right; } - -.row-fluid .offset9:first-child { - margin-left: 76.59574468085106%; - *margin-left: 76.48936170212764%; +.text-center { + text-align: center; } - -.row-fluid .offset8 { - margin-left: 70.2127659574468%; - *margin-left: 70.10638297872339%; -} - -.row-fluid .offset8:first-child { - margin-left: 68.08510638297872%; - *margin-left: 67.9787234042553%; -} - -.row-fluid .offset7 { - margin-left: 61.70212765957446%; - *margin-left: 61.59574468085106%; -} - -.row-fluid .offset7:first-child { - margin-left: 59.574468085106375%; - *margin-left: 59.46808510638297%; -} - -.row-fluid .offset6 { - margin-left: 53.191489361702125%; - *margin-left: 53.085106382978715%; -} - -.row-fluid .offset6:first-child { - margin-left: 51.063829787234035%; - *margin-left: 50.95744680851063%; -} - -.row-fluid .offset5 { - margin-left: 44.68085106382979%; - *margin-left: 44.57446808510638%; -} - -.row-fluid .offset5:first-child { - margin-left: 42.5531914893617%; - *margin-left: 42.4468085106383%; -} - -.row-fluid .offset4 { - margin-left: 36.170212765957444%; - *margin-left: 36.06382978723405%; -} - -.row-fluid .offset4:first-child { - margin-left: 34.04255319148936%; - *margin-left: 33.93617021276596%; -} - -.row-fluid .offset3 { - margin-left: 27.659574468085104%; - *margin-left: 27.5531914893617%; -} - -.row-fluid .offset3:first-child { - margin-left: 25.53191489361702%; - *margin-left: 25.425531914893618%; -} - -.row-fluid .offset2 { - margin-left: 19.148936170212764%; - *margin-left: 19.04255319148936%; -} - -.row-fluid .offset2:first-child { - margin-left: 17.02127659574468%; - *margin-left: 16.914893617021278%; -} - -.row-fluid .offset1 { - margin-left: 10.638297872340425%; - *margin-left: 10.53191489361702%; -} - -.row-fluid .offset1:first-child { - margin-left: 8.51063829787234%; - *margin-left: 8.404255319148938%; -} - -[class*="span"].hide, -.row-fluid [class*="span"].hide { - display: none; -} - -[class*="span"].pull-right, -.row-fluid [class*="span"].pull-right { - float: right; -} - -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} - -.container:before, -.container:after { - display: table; - line-height: 0; - content: ""; -} - -.container:after { - clear: both; -} - -.container:before, -.container:after { - display: table; - line-height: 0; - content: ""; -} - -.container:after { - clear: both; -} - -.container:before, -.container:after { - display: table; - line-height: 0; - content: ""; -} - -.container:after { - clear: both; -} - -.container:before, -.container:after { - display: table; - line-height: 0; - content: ""; -} - -.container:after { - clear: both; -} - -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} - -.container-fluid:before, -.container-fluid:after { - display: table; - line-height: 0; - content: ""; -} - -.container-fluid:after { - clear: both; -} - -.container-fluid:before, -.container-fluid:after { - display: table; - line-height: 0; - content: ""; -} - -.container-fluid:after { - clear: both; -} - -p { - margin: 0 0 10px; -} - -.lead { - margin-bottom: 20px; - font-size: 21px; - font-weight: 200; - line-height: 30px; -} - -small { - font-size: 85%; -} - -strong { - font-weight: bold; -} - -em { - font-style: italic; -} - -cite { - font-style: normal; -} - -.muted { - color: #999999; -} - -a.muted:hover, -a.muted:focus { - color: #808080; -} - -.text-warning { - color: #c09853; -} - -a.text-warning:hover, -a.text-warning:focus { - color: #a47e3c; -} - -.text-error { - color: #b94a48; -} - -a.text-error:hover, -a.text-error:focus { - color: #953b39; -} - -.text-info { - color: #3a87ad; -} - -a.text-info:hover, -a.text-info:focus { - color: #2d6987; -} - -.text-success { - color: #468847; -} - -a.text-success:hover, -a.text-success:focus { - color: #356635; -} - -.text-left { - text-align: left; -} - -.text-right { - text-align: right; -} - -.text-center { - text-align: center; -} - h1, h2, h3, @@ -1164,7 +619,6 @@ h6 { color: inherit; text-rendering: optimizelegibility; } - h1 small, h2 small, h3 small, @@ -1175,195 +629,150 @@ h6 small { line-height: 1; color: #999999; } - h1, h2, h3 { line-height: 40px; } - h1 { font-size: 38.5px; } - h2 { font-size: 31.5px; } - h3 { font-size: 24.5px; } - h4 { font-size: 17.5px; } - h5 { font-size: 14px; } - h6 { font-size: 11.9px; } - h1 small { font-size: 24.5px; } - h2 small { font-size: 17.5px; } - h3 small { font-size: 14px; } - h4 small { font-size: 14px; } - .page-header { padding-bottom: 9px; margin: 20px 0 30px; border-bottom: 1px solid #eeeeee; } - ul, ol { padding: 0; margin: 0 0 10px 25px; } - ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } - li { line-height: 20px; } - ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } - ul.inline, ol.inline { margin-left: 0; list-style: none; } - ul.inline > li, ol.inline > li { display: inline-block; *display: inline; - padding-right: 5px; - padding-left: 5px; + /* IE7 inline-block hack */ *zoom: 1; + padding-left: 5px; + padding-right: 5px; } - dl { margin-bottom: 20px; } - dt, dd { line-height: 20px; } - dt { font-weight: bold; } - dd { margin-left: 10px; } - .dl-horizontal { *zoom: 1; } - .dl-horizontal:before, .dl-horizontal:after { display: table; - line-height: 0; content: ""; -} - -.dl-horizontal:after { - clear: both; -} - -.dl-horizontal:before, -.dl-horizontal:after { - display: table; line-height: 0; - content: ""; } - .dl-horizontal:after { clear: both; } - .dl-horizontal dt { float: left; width: 160px; - overflow: hidden; clear: left; text-align: right; + overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } - .dl-horizontal dd { margin-left: 180px; } - hr { margin: 20px 0; border: 0; border-top: 1px solid #eeeeee; border-bottom: 1px solid #ffffff; } - abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999999; } - abbr.initialism { font-size: 90%; text-transform: uppercase; } - blockquote { padding: 0 0 0 15px; margin: 0 0 20px; border-left: 5px solid #eeeeee; } - blockquote p { margin-bottom: 0; font-size: 17.5px; font-weight: 300; line-height: 1.25; } - blockquote small { display: block; line-height: 20px; color: #999999; } - blockquote small:before { content: '\2014 \00A0'; } - blockquote.pull-right { float: right; padding-right: 15px; @@ -1371,34 +780,28 @@ blockquote.pull-right { border-right: 5px solid #eeeeee; border-left: 0; } - blockquote.pull-right p, blockquote.pull-right small { text-align: right; } - blockquote.pull-right small:before { content: ''; } - blockquote.pull-right small:after { content: '\00A0 \2014'; } - q:before, q:after, blockquote:before, blockquote:after { content: ""; } - address { display: block; margin-bottom: 20px; font-style: normal; line-height: 20px; } - code, pre { padding: 0 3px 2px; @@ -1406,18 +809,16 @@ pre { font-size: 12px; color: #333333; -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } - code { padding: 2px 4px; color: #d14; - white-space: nowrap; background-color: #f7f7f9; border: 1px solid #e1e1e8; + white-space: nowrap; } - pre { display: block; padding: 9.5px; @@ -1432,14 +833,12 @@ pre { border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - pre.prettyprint { margin-bottom: 20px; } - pre code { padding: 0; color: inherit; @@ -1448,22 +847,18 @@ pre code { background-color: transparent; border: 0; } - .pre-scrollable { max-height: 340px; overflow-y: scroll; } - form { margin: 0 0 20px; } - fieldset { padding: 0; margin: 0; border: 0; } - legend { display: block; width: 100%; @@ -1475,12 +870,10 @@ legend { border: 0; border-bottom: 1px solid #e5e5e5; } - legend small { font-size: 15px; color: #999999; } - label, input, button, @@ -1490,19 +883,16 @@ textarea { font-weight: normal; line-height: 20px; } - input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } - label { display: block; margin-bottom: 5px; } - select, textarea, input[type="text"], @@ -1527,22 +917,19 @@ input[type="color"], font-size: 14px; line-height: 20px; color: #555555; - vertical-align: middle; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + vertical-align: middle; } - input, textarea, .uneditable-input { width: 206px; } - textarea { height: auto; } - textarea, input[type="text"], input[type="password"], @@ -1562,14 +949,13 @@ input[type="color"], background-color: #ffffff; border: 1px solid #cccccc; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; -} - + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} textarea:focus, input[type="text"]:focus, input[type="password"]:focus, @@ -1590,20 +976,19 @@ input[type="color"]:focus, outline: 0; outline: thin dotted \9; /* IE6-9 */ - - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); } - input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; - margin-top: 1px \9; *margin-top: 0; + /* IE7 */ + margin-top: 1px \9; + /* IE8-9 */ line-height: normal; } - input[type="file"], input[type="image"], input[type="submit"], @@ -1613,29 +998,23 @@ input[type="radio"], input[type="checkbox"] { width: auto; } - select, input[type="file"] { height: 30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; /* For IE7, add top margin to align select with labels */ - line-height: 30px; } - select { width: 220px; - background-color: #ffffff; border: 1px solid #cccccc; + background-color: #ffffff; } - select[multiple], select[size] { height: auto; } - select:focus, input[type="file"]:focus, input[type="radio"]:focus, @@ -1644,75 +1023,50 @@ input[type="checkbox"]:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } - .uneditable-input, .uneditable-textarea { color: #999999; - cursor: not-allowed; background-color: #fcfcfc; border-color: #cccccc; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; } - .uneditable-input { overflow: hidden; white-space: nowrap; } - .uneditable-textarea { width: auto; height: auto; } - -input:-moz-placeholder, -textarea:-moz-placeholder { - color: #999999; -} - -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: #999999; -} - -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: #999999; -} - input:-moz-placeholder, textarea:-moz-placeholder { color: #999999; } - input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #999999; } - input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #999999; } - .radio, .checkbox { min-height: 20px; padding-left: 20px; } - .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -20px; } - .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } - .radio.inline, .checkbox.inline { display: inline-block; @@ -1720,36 +1074,28 @@ textarea::-webkit-input-placeholder { margin-bottom: 0; vertical-align: middle; } - .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } - .input-mini { width: 60px; } - .input-small { width: 90px; } - .input-medium { width: 150px; } - .input-large { width: 210px; } - .input-xlarge { width: 270px; } - .input-xxlarge { width: 530px; } - input[class*="span"], select[class*="span"], textarea[class*="span"], @@ -1761,7 +1107,6 @@ textarea[class*="span"], float: none; margin-left: 0; } - .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], @@ -1774,269 +1119,114 @@ textarea[class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } - input, textarea, .uneditable-input { margin-left: 0; } - .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } - input.span12, textarea.span12, .uneditable-input.span12 { width: 926px; } - input.span11, textarea.span11, .uneditable-input.span11 { width: 846px; } - input.span10, textarea.span10, .uneditable-input.span10 { width: 766px; } - input.span9, textarea.span9, .uneditable-input.span9 { width: 686px; } - input.span8, textarea.span8, .uneditable-input.span8 { width: 606px; } - input.span7, textarea.span7, .uneditable-input.span7 { width: 526px; } - input.span6, textarea.span6, .uneditable-input.span6 { width: 446px; } - input.span5, textarea.span5, .uneditable-input.span5 { width: 366px; } - input.span4, textarea.span4, .uneditable-input.span4 { width: 286px; } - input.span3, textarea.span3, .uneditable-input.span3 { width: 206px; } - input.span2, textarea.span2, .uneditable-input.span2 { width: 126px; } - input.span1, textarea.span1, .uneditable-input.span1 { width: 46px; } - -input, -textarea, -.uneditable-input { - margin-left: 0; +.controls-row { + *zoom: 1; } - -.controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; +.controls-row:before, +.controls-row:after { + display: table; + content: ""; + line-height: 0; } - -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 926px; +.controls-row:after { + clear: both; } - -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 846px; +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; } - -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 766px; +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; } - -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 686px; +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; } - -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 606px; -} - -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 526px; -} - -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 446px; -} - -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 366px; -} - -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 286px; -} - -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 206px; -} - -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 126px; -} - -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 46px; -} - -.controls-row { - *zoom: 1; -} - -.controls-row:before, -.controls-row:after { - display: table; - line-height: 0; - content: ""; -} - -.controls-row:after { - clear: both; -} - -.controls-row:before, -.controls-row:after { - display: table; - line-height: 0; - content: ""; -} - -.controls-row:after { - clear: both; -} - -.controls-row [class*="span"], -.row-fluid .controls-row [class*="span"] { - float: left; -} - -.controls-row .checkbox[class*="span"], -.controls-row .radio[class*="span"] { - padding-top: 5px; -} - -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eeeeee; -} - input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } - -.control-group.warning .control-label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} - -.control-group.warning .checkbox, -.control-group.warning .radio, -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; -} - -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} - -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} - .control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #c09853; } - .control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, @@ -2044,77 +1234,33 @@ input[type="checkbox"][readonly] { .control-group.warning textarea { color: #c09853; } - .control-group.warning input, .control-group.warning select, .control-group.warning textarea { border-color: #c09853; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #a47e3c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; } - .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #c09853; background-color: #fcf8e3; border-color: #c09853; } - -.control-group.error .control-label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b94a48; -} - -.control-group.error .checkbox, -.control-group.error .radio, -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b94a48; -} - -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - border-color: #b94a48; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #953b39; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; -} - -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b94a48; - background-color: #f2dede; - border-color: #b94a48; -} - .control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { color: #b94a48; } - .control-group.error .checkbox, .control-group.error .radio, .control-group.error input, @@ -2122,77 +1268,33 @@ input[type="checkbox"][readonly] { .control-group.error textarea { color: #b94a48; } - .control-group.error input, .control-group.error select, .control-group.error textarea { border-color: #b94a48; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #953b39; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; } - .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #b94a48; background-color: #f2dede; border-color: #b94a48; } - -.control-group.success .control-label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} - -.control-group.success .checkbox, -.control-group.success .radio, -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; -} - -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} - -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} - .control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { color: #468847; } - .control-group.success .checkbox, .control-group.success .radio, .control-group.success input, @@ -2200,77 +1302,33 @@ input[type="checkbox"][readonly] { .control-group.success textarea { color: #468847; } - .control-group.success input, .control-group.success select, .control-group.success textarea { border-color: #468847; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #356635; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; } - .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #468847; background-color: #dff0d8; border-color: #468847; } - -.control-group.info .control-label, -.control-group.info .help-block, -.control-group.info .help-inline { - color: #3a87ad; -} - -.control-group.info .checkbox, -.control-group.info .radio, -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - color: #3a87ad; -} - -.control-group.info input, -.control-group.info select, -.control-group.info textarea { - border-color: #3a87ad; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.control-group.info input:focus, -.control-group.info select:focus, -.control-group.info textarea:focus { - border-color: #2d6987; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -} - -.control-group.info .input-prepend .add-on, -.control-group.info .input-append .add-on { - color: #3a87ad; - background-color: #d9edf7; - border-color: #3a87ad; -} - .control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { color: #3a87ad; } - .control-group.info .checkbox, .control-group.info .radio, .control-group.info input, @@ -2278,48 +1336,42 @@ input[type="checkbox"][readonly] { .control-group.info textarea { color: #3a87ad; } - .control-group.info input, .control-group.info select, .control-group.info textarea { border-color: #3a87ad; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { border-color: #2d6987; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; } - .control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { color: #3a87ad; background-color: #d9edf7; border-color: #3a87ad; } - input:focus:invalid, textarea:focus:invalid, select:focus:invalid { color: #b94a48; border-color: #ee5f5b; } - input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; } - .form-actions { padding: 19px 20px 20px; margin-top: 20px; @@ -2328,56 +1380,39 @@ select:focus:invalid:focus { border-top: 1px solid #e5e5e5; *zoom: 1; } - .form-actions:before, .form-actions:after { display: table; - line-height: 0; content: ""; -} - -.form-actions:after { - clear: both; -} - -.form-actions:before, -.form-actions:after { - display: table; line-height: 0; - content: ""; } - .form-actions:after { clear: both; } - .help-block, .help-inline { color: #595959; } - .help-block { display: block; margin-bottom: 10px; } - .help-inline { display: inline-block; *display: inline; - padding-left: 5px; - vertical-align: middle; + /* IE7 inline-block hack */ *zoom: 1; + vertical-align: middle; + padding-left: 5px; } - .input-append, .input-prepend { display: inline-block; margin-bottom: 10px; + vertical-align: middle; font-size: 0; white-space: nowrap; - vertical-align: middle; } - .input-append input, .input-prepend input, .input-append select, @@ -2390,7 +1425,6 @@ select:focus:invalid:focus { .input-prepend .popover { font-size: 14px; } - .input-append input, .input-prepend input, .input-append select, @@ -2402,10 +1436,9 @@ select:focus:invalid:focus { *margin-left: 0; vertical-align: top; -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; } - .input-append input:focus, .input-prepend input:focus, .input-append select:focus, @@ -2414,7 +1447,6 @@ select:focus:invalid:focus { .input-prepend .uneditable-input:focus { z-index: 2; } - .input-append .add-on, .input-prepend .add-on { display: inline-block; @@ -2430,7 +1462,6 @@ select:focus:invalid:focus { background-color: #eeeeee; border: 1px solid #ccc; } - .input-append .add-on, .input-prepend .add-on, .input-append .btn, @@ -2439,140 +1470,119 @@ select:focus:invalid:focus { .input-prepend .btn-group > .dropdown-toggle { vertical-align: top; -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } - .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } - .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; } - .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; } - .input-append input + .btn-group .btn:last-child, .input-append select + .btn-group .btn:last-child, .input-append .uneditable-input + .btn-group .btn:last-child { -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; } - .input-append .add-on, .input-append .btn, .input-append .btn-group { margin-left: -1px; } - .input-append .add-on:last-child, .input-append .btn:last-child, .input-append .btn-group:last-child > .dropdown-toggle { -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; } - .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .input-prepend.input-append input + .btn-group .btn, .input-prepend.input-append select + .btn-group .btn, .input-prepend.input-append .uneditable-input + .btn-group .btn { -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; } - .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; } - .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; } - .input-prepend.input-append .btn-group:first-child { margin-left: 0; } - input.search-query { padding-right: 14px; padding-right: 4px \9; padding-left: 14px; padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ - margin-bottom: 0; -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; } - /* Allow for input prepend/append in search forms */ - .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; } - .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; } - .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; - -moz-border-radius: 0 14px 14px 0; - border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; } - .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; - -moz-border-radius: 14px 0 0 14px; - border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; } - .form-search input, .form-inline input, .form-horizontal input, @@ -2596,31 +1606,28 @@ input.search-query { .form-horizontal .input-append { display: inline-block; *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; margin-bottom: 0; vertical-align: middle; - *zoom: 1; } - .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } - .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: inline-block; } - .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } - .form-search .radio, .form-search .checkbox, .form-inline .radio, @@ -2629,7 +1636,6 @@ input.search-query { margin-bottom: 0; vertical-align: middle; } - .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], @@ -2638,65 +1644,44 @@ input.search-query { margin-right: 3px; margin-left: 0; } - .control-group { margin-bottom: 10px; } - legend + .control-group { margin-top: 20px; -webkit-margin-top-collapse: separate; } - .form-horizontal .control-group { margin-bottom: 20px; *zoom: 1; } - .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; - line-height: 0; content: ""; -} - -.form-horizontal .control-group:after { - clear: both; -} - -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; line-height: 0; - content: ""; } - .form-horizontal .control-group:after { clear: both; } - .form-horizontal .control-label { float: left; width: 160px; padding-top: 5px; text-align: right; } - .form-horizontal .controls { *display: inline-block; *padding-left: 20px; margin-left: 180px; *margin-left: 0; } - .form-horizontal .controls:first-child { *padding-left: 180px; } - .form-horizontal .help-block { margin-bottom: 0; } - .form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block, @@ -2705,23 +1690,19 @@ legend + .control-group { .form-horizontal .input-append + .help-block { margin-top: 10px; } - .form-horizontal .form-actions { padding-left: 180px; } - table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } - .table { width: 100%; margin-bottom: 20px; } - .table th, .table td { padding: 8px; @@ -2730,15 +1711,12 @@ table { vertical-align: top; border-top: 1px solid #dddddd; } - .table th { font-weight: bold; } - .table thead th { vertical-align: bottom; } - .table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, @@ -2747,35 +1725,29 @@ table { .table thead:first-child tr:first-child td { border-top: 0; } - .table tbody + tbody { border-top: 2px solid #dddddd; } - .table .table { background-color: #ffffff; } - .table-condensed th, .table-condensed td { padding: 4px 5px; } - .table-bordered { border: 1px solid #dddddd; border-collapse: separate; *border-collapse: collapse; border-left: 0; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - .table-bordered th, .table-bordered td { border-left: 1px solid #dddddd; } - .table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, @@ -2787,83 +1759,72 @@ table { .table-bordered tbody:first-child tr:first-child td { border-top: 0; } - .table-bordered thead:first-child tr:first-child > th:first-child, .table-bordered tbody:first-child tr:first-child > td:first-child, .table-bordered tbody:first-child tr:first-child > th:first-child { -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; } - .table-bordered thead:first-child tr:first-child > th:last-child, .table-bordered tbody:first-child tr:first-child > td:last-child, .table-bordered tbody:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; } - .table-bordered thead:last-child tr:last-child > th:first-child, .table-bordered tbody:last-child tr:last-child > td:first-child, .table-bordered tbody:last-child tr:last-child > th:first-child, .table-bordered tfoot:last-child tr:last-child > td:first-child, .table-bordered tfoot:last-child tr:last-child > th:first-child { -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; } - .table-bordered thead:last-child tr:last-child > th:last-child, .table-bordered tbody:last-child tr:last-child > td:last-child, .table-bordered tbody:last-child tr:last-child > th:last-child, .table-bordered tfoot:last-child tr:last-child > td:last-child, .table-bordered tfoot:last-child tr:last-child > th:last-child { -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; } - .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { -webkit-border-bottom-left-radius: 0; - border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; + border-bottom-left-radius: 0; } - .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { -webkit-border-bottom-right-radius: 0; - border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; + border-bottom-right-radius: 0; } - .table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; } - .table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; } - .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } - .table-hover tbody tr:hover > td, .table-hover tbody tr:hover > th { background-color: #f5f5f5; } - table td[class*="span"], table th[class*="span"], .row-fluid table td[class*="span"], @@ -2872,139 +1833,116 @@ table th[class*="span"], float: none; margin-left: 0; } - .table td.span1, .table th.span1 { float: none; width: 44px; margin-left: 0; } - .table td.span2, .table th.span2 { float: none; width: 124px; margin-left: 0; } - .table td.span3, .table th.span3 { float: none; width: 204px; margin-left: 0; } - .table td.span4, .table th.span4 { float: none; width: 284px; margin-left: 0; } - .table td.span5, .table th.span5 { float: none; width: 364px; margin-left: 0; } - .table td.span6, .table th.span6 { float: none; width: 444px; margin-left: 0; } - .table td.span7, .table th.span7 { float: none; width: 524px; margin-left: 0; } - .table td.span8, .table th.span8 { float: none; width: 604px; margin-left: 0; } - .table td.span9, .table th.span9 { float: none; width: 684px; margin-left: 0; } - .table td.span10, .table th.span10 { float: none; width: 764px; margin-left: 0; } - .table td.span11, .table th.span11 { float: none; width: 844px; margin-left: 0; } - .table td.span12, .table th.span12 { float: none; width: 924px; margin-left: 0; } - .table tbody tr.success > td { background-color: #dff0d8; } - .table tbody tr.error > td { background-color: #f2dede; } - .table tbody tr.warning > td { background-color: #fcf8e3; } - .table tbody tr.info > td { background-color: #d9edf7; } - .table-hover tbody tr.success:hover > td { background-color: #d0e9c6; } - .table-hover tbody tr.error:hover > td { background-color: #ebcccc; } - .table-hover tbody tr.warning:hover > td { background-color: #faf2cc; } - .table-hover tbody tr.info:hover > td { background-color: #c4e3f3; } - [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; - margin-top: 1px; *margin-right: .3em; line-height: 14px; vertical-align: text-top; - background-image: url("../bower_components/bootstrap/img/glyphicons-halflings.png"); + background-image: url("../img/glyphicons-halflings.png"); background-position: 14px 14px; background-repeat: no-repeat; + margin-top: 1px; } - /* White icons with optional class, or on hover/focus/active states of certain elements */ - .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], @@ -3022,586 +1960,442 @@ table th[class*="span"], .dropdown-submenu:focus > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"], .dropdown-submenu:focus > a > [class*=" icon-"] { - background-image: url("../bower_components/bootstrap/img/glyphicons-halflings-white.png"); + background-image: url("../img/glyphicons-halflings-white.png"); } - .icon-glass { background-position: 0 0; } - .icon-music { background-position: -24px 0; } - .icon-search { background-position: -48px 0; } - .icon-envelope { background-position: -72px 0; } - .icon-heart { background-position: -96px 0; } - .icon-star { background-position: -120px 0; } - .icon-star-empty { background-position: -144px 0; } - .icon-user { background-position: -168px 0; } - .icon-film { background-position: -192px 0; } - .icon-th-large { background-position: -216px 0; } - .icon-th { background-position: -240px 0; } - .icon-th-list { background-position: -264px 0; } - .icon-ok { background-position: -288px 0; } - .icon-remove { background-position: -312px 0; } - .icon-zoom-in { background-position: -336px 0; } - .icon-zoom-out { background-position: -360px 0; } - .icon-off { background-position: -384px 0; } - .icon-signal { background-position: -408px 0; } - .icon-cog { background-position: -432px 0; } - .icon-trash { background-position: -456px 0; } - .icon-home { background-position: 0 -24px; } - .icon-file { background-position: -24px -24px; } - .icon-time { background-position: -48px -24px; } - .icon-road { background-position: -72px -24px; } - .icon-download-alt { background-position: -96px -24px; } - .icon-download { background-position: -120px -24px; } - .icon-upload { background-position: -144px -24px; } - .icon-inbox { background-position: -168px -24px; } - .icon-play-circle { background-position: -192px -24px; } - .icon-repeat { background-position: -216px -24px; } - .icon-refresh { background-position: -240px -24px; } - .icon-list-alt { background-position: -264px -24px; } - .icon-lock { background-position: -287px -24px; } - .icon-flag { background-position: -312px -24px; } - .icon-headphones { background-position: -336px -24px; } - .icon-volume-off { background-position: -360px -24px; } - .icon-volume-down { background-position: -384px -24px; } - .icon-volume-up { background-position: -408px -24px; } - .icon-qrcode { background-position: -432px -24px; } - .icon-barcode { background-position: -456px -24px; } - .icon-tag { background-position: 0 -48px; } - .icon-tags { background-position: -25px -48px; } - .icon-book { background-position: -48px -48px; } - .icon-bookmark { background-position: -72px -48px; } - .icon-print { background-position: -96px -48px; } - .icon-camera { background-position: -120px -48px; } - .icon-font { background-position: -144px -48px; } - .icon-bold { background-position: -167px -48px; } - .icon-italic { background-position: -192px -48px; } - .icon-text-height { background-position: -216px -48px; } - .icon-text-width { background-position: -240px -48px; } - .icon-align-left { background-position: -264px -48px; } - .icon-align-center { background-position: -288px -48px; } - .icon-align-right { background-position: -312px -48px; } - .icon-align-justify { background-position: -336px -48px; } - .icon-list { background-position: -360px -48px; } - .icon-indent-left { background-position: -384px -48px; } - .icon-indent-right { background-position: -408px -48px; } - .icon-facetime-video { background-position: -432px -48px; } - .icon-picture { background-position: -456px -48px; } - .icon-pencil { background-position: 0 -72px; } - .icon-map-marker { background-position: -24px -72px; } - .icon-adjust { background-position: -48px -72px; } - .icon-tint { background-position: -72px -72px; } - .icon-edit { background-position: -96px -72px; } - .icon-share { background-position: -120px -72px; } - .icon-check { background-position: -144px -72px; } - .icon-move { background-position: -168px -72px; } - .icon-step-backward { background-position: -192px -72px; } - .icon-fast-backward { background-position: -216px -72px; } - .icon-backward { background-position: -240px -72px; } - .icon-play { background-position: -264px -72px; } - .icon-pause { background-position: -288px -72px; } - .icon-stop { background-position: -312px -72px; } - .icon-forward { background-position: -336px -72px; } - .icon-fast-forward { background-position: -360px -72px; } - .icon-step-forward { background-position: -384px -72px; } - .icon-eject { background-position: -408px -72px; } - .icon-chevron-left { background-position: -432px -72px; } - .icon-chevron-right { background-position: -456px -72px; } - .icon-plus-sign { background-position: 0 -96px; } - .icon-minus-sign { background-position: -24px -96px; } - .icon-remove-sign { background-position: -48px -96px; } - .icon-ok-sign { background-position: -72px -96px; } - .icon-question-sign { background-position: -96px -96px; } - .icon-info-sign { background-position: -120px -96px; } - .icon-screenshot { background-position: -144px -96px; } - .icon-remove-circle { background-position: -168px -96px; } - .icon-ok-circle { background-position: -192px -96px; } - .icon-ban-circle { background-position: -216px -96px; } - .icon-arrow-left { background-position: -240px -96px; } - .icon-arrow-right { background-position: -264px -96px; } - .icon-arrow-up { background-position: -289px -96px; } - .icon-arrow-down { background-position: -312px -96px; } - .icon-share-alt { background-position: -336px -96px; } - .icon-resize-full { background-position: -360px -96px; } - .icon-resize-small { background-position: -384px -96px; } - .icon-plus { background-position: -408px -96px; } - .icon-minus { background-position: -433px -96px; } - .icon-asterisk { background-position: -456px -96px; } - .icon-exclamation-sign { background-position: 0 -120px; } - .icon-gift { background-position: -24px -120px; } - .icon-leaf { background-position: -48px -120px; } - .icon-fire { background-position: -72px -120px; } - .icon-eye-open { background-position: -96px -120px; } - .icon-eye-close { background-position: -120px -120px; } - .icon-warning-sign { background-position: -144px -120px; } - .icon-plane { background-position: -168px -120px; } - .icon-calendar { background-position: -192px -120px; } - .icon-random { - width: 16px; background-position: -216px -120px; + width: 16px; } - .icon-comment { background-position: -240px -120px; } - .icon-magnet { background-position: -264px -120px; } - .icon-chevron-up { background-position: -288px -120px; } - .icon-chevron-down { background-position: -313px -119px; } - .icon-retweet { background-position: -336px -120px; } - .icon-shopping-cart { background-position: -360px -120px; } - .icon-folder-close { - width: 16px; background-position: -384px -120px; + width: 16px; } - .icon-folder-open { - width: 16px; background-position: -408px -120px; + width: 16px; } - .icon-resize-vertical { background-position: -432px -119px; } - .icon-resize-horizontal { background-position: -456px -118px; } - .icon-hdd { background-position: 0 -144px; } - .icon-bullhorn { background-position: -24px -144px; } - .icon-bell { background-position: -48px -144px; } - .icon-certificate { background-position: -72px -144px; } - .icon-thumbs-up { background-position: -96px -144px; } - .icon-thumbs-down { background-position: -120px -144px; } - .icon-hand-right { background-position: -144px -144px; } - .icon-hand-left { background-position: -168px -144px; } - .icon-hand-up { background-position: -192px -144px; } - .icon-hand-down { background-position: -216px -144px; } - .icon-circle-arrow-right { background-position: -240px -144px; } - .icon-circle-arrow-left { background-position: -264px -144px; } - .icon-circle-arrow-up { background-position: -288px -144px; } - .icon-circle-arrow-down { background-position: -312px -144px; } - .icon-globe { background-position: -336px -144px; } - .icon-wrench { background-position: -360px -144px; } - .icon-tasks { background-position: -384px -144px; } - .icon-filter { background-position: -408px -144px; } - .icon-briefcase { background-position: -432px -144px; } - .icon-fullscreen { background-position: -456px -144px; } - .dropup, .dropdown { position: relative; } - .dropdown-toggle { *margin-bottom: -3px; } - .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } - .caret { display: inline-block; width: 0; @@ -3612,12 +2406,10 @@ table th[class*="span"], border-left: 4px solid transparent; content: ""; } - .dropdown .caret { margin-top: 8px; margin-left: 2px; } - .dropdown-menu { position: absolute; top: 100%; @@ -3635,21 +2427,19 @@ table th[class*="span"], *border-right-width: 2px; *border-bottom-width: 2px; -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; } - .dropdown-menu.pull-right { right: 0; left: auto; } - .dropdown-menu .divider { *width: 100%; height: 1px; @@ -3659,7 +2449,6 @@ table th[class*="span"], background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } - .dropdown-menu > li > a { display: block; padding: 3px 20px; @@ -3669,13 +2458,12 @@ table th[class*="span"], color: #333333; white-space: nowrap; } - .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { - color: #ffffff; text-decoration: none; + color: #ffffff; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); @@ -3685,12 +2473,12 @@ table th[class*="span"], background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } - .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #ffffff; text-decoration: none; + outline: 0; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); @@ -3698,132 +2486,112 @@ table th[class*="span"], background-image: -o-linear-gradient(top, #0088cc, #0077b3); background-image: linear-gradient(to bottom, #0088cc, #0077b3); background-repeat: repeat-x; - outline: 0; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } - .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999999; } - .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; - cursor: default; background-color: transparent; background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: default; } - .open { *z-index: 1000; } - .open > .dropdown-menu { display: block; } - .dropdown-backdrop { position: fixed; - top: 0; + left: 0; right: 0; bottom: 0; - left: 0; + top: 0; z-index: 990; } - .pull-right > .dropdown-menu { right: 0; left: auto; } - .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0; border-bottom: 4px solid #000000; content: ""; } - .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } - .dropdown-submenu { position: relative; } - .dropdown-submenu > .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; } - .dropdown-submenu:hover > .dropdown-menu { display: block; } - .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; margin-top: 0; margin-bottom: -2px; -webkit-border-radius: 5px 5px 5px 0; - -moz-border-radius: 5px 5px 5px 0; - border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; } - .dropdown-submenu > a:after { display: block; + content: " "; float: right; width: 0; height: 0; - margin-top: 5px; - margin-right: -10px; border-color: transparent; - border-left-color: #cccccc; border-style: solid; border-width: 5px 0 5px 5px; - content: " "; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; } - .dropdown-submenu:hover > a:after { border-left-color: #ffffff; } - .dropdown-submenu.pull-left { float: none; } - .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; } - .dropdown .dropdown-menu .nav-header { - padding-right: 20px; padding-left: 20px; + padding-right: 20px; } - .typeahead { z-index: 1051; margin-top: 2px; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - .well { min-height: 20px; padding: 19px; @@ -3831,58 +2599,50 @@ table th[class*="span"], background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } - .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } - .well-large { padding: 24px; -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } - .well-small { padding: 9px; -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } - .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; } - .fade.in { opacity: 1; } - .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; } - .collapse.in { height: auto; } - .close { float: right; font-size: 20px; @@ -3893,7 +2653,6 @@ table th[class*="span"], opacity: 0.2; filter: alpha(opacity=20); } - .close:hover, .close:focus { color: #000000; @@ -3902,7 +2661,6 @@ table th[class*="span"], opacity: 0.4; filter: alpha(opacity=40); } - button.close { padding: 0; cursor: pointer; @@ -3910,60 +2668,44 @@ button.close { border: 0; -webkit-appearance: none; } - .btn { display: inline-block; *display: inline; - padding: 4px 12px; + /* IE7 inline-block hack */ + *zoom: 1; + padding: 4px 12px; margin-bottom: 0; - *margin-left: .3em; font-size: 14px; line-height: 20px; - color: #333333; text-align: center; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); background-color: #f5f5f5; - *background-color: #e6e6e6; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); background-repeat: repeat-x; - border: 1px solid #cccccc; - *border: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border: 1px solid #cccccc; + *border: 0; border-bottom-color: #b3b3b3; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn:hover, -.btn:focus, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - color: #333333; - background-color: #e6e6e6; - *background-color: #d9d9d9; -} - -.btn:active, -.btn.active { - background-color: #cccccc \9; + -moz-border-radius: 4px; + border-radius: 4px; + *margin-left: .3em; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); } - .btn:hover, .btn:focus, .btn:active, @@ -3974,46 +2716,36 @@ button.close { background-color: #e6e6e6; *background-color: #d9d9d9; } - .btn:active, .btn.active { background-color: #cccccc \9; } - .btn:first-child { *margin-left: 0; } - -.btn:first-child { - *margin-left: 0; -} - .btn:hover, .btn:focus { color: #333333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; } - .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } - .btn.active, .btn:active { background-image: none; outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } - .btn.disabled, .btn[disabled] { cursor: default; @@ -4021,69 +2753,59 @@ button.close { opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } - .btn-large { padding: 11px 19px; font-size: 17.5px; -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } - .btn-large [class^="icon-"], .btn-large [class*=" icon-"] { margin-top: 4px; } - .btn-small { padding: 2px 10px; font-size: 11.9px; -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } - .btn-small [class^="icon-"], .btn-small [class*=" icon-"] { margin-top: 0; } - .btn-mini [class^="icon-"], .btn-mini [class*=" icon-"] { margin-top: -1px; } - .btn-mini { padding: 0 6px; font-size: 10.5px; -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } - .btn-block { display: block; width: 100%; - padding-right: 0; padding-left: 0; + padding-right: 0; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } - .btn-block + .btn-block { margin-top: 5px; } - input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } - .btn-primary.active, .btn-warning.active, .btn-danger.active, @@ -4092,40 +2814,23 @@ input[type="button"].btn-block { .btn-inverse.active { color: rgba(255, 255, 255, 0.75); } - .btn-primary { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #006dcc; - *background-color: #0044cc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); background-image: -o-linear-gradient(top, #0088cc, #0044cc); background-image: linear-gradient(to bottom, #0088cc, #0044cc); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); border-color: #0044cc #0044cc #002a80; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - color: #ffffff; - background-color: #0044cc; - *background-color: #003bb3; -} - -.btn-primary:active, -.btn-primary.active { - background-color: #003399 \9; + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - .btn-primary:hover, .btn-primary:focus, .btn-primary:active, @@ -4136,45 +2841,27 @@ input[type="button"].btn-block { background-color: #0044cc; *background-color: #003bb3; } - .btn-primary:active, .btn-primary.active { background-color: #003399 \9; } - .btn-warning { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #faa732; - *background-color: #f89406; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); border-color: #f89406 #f89406 #ad6704; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - color: #ffffff; - background-color: #f89406; - *background-color: #df8505; -} - -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; + *background-color: #f89406; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - .btn-warning:hover, .btn-warning:focus, .btn-warning:active, @@ -4185,45 +2872,27 @@ input[type="button"].btn-block { background-color: #f89406; *background-color: #df8505; } - .btn-warning:active, .btn-warning.active { background-color: #c67605 \9; } - .btn-danger { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #da4f49; - *background-color: #bd362f; background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); border-color: #bd362f #bd362f #802420; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - color: #ffffff; - background-color: #bd362f; - *background-color: #a9302a; -} - -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; + *background-color: #bd362f; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - .btn-danger:hover, .btn-danger:focus, .btn-danger:active, @@ -4234,45 +2903,27 @@ input[type="button"].btn-block { background-color: #bd362f; *background-color: #a9302a; } - .btn-danger:active, .btn-danger.active { background-color: #942a25 \9; } - .btn-success { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #5bb75b; - *background-color: #51a351; background-image: -moz-linear-gradient(top, #62c462, #51a351); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); background-image: -webkit-linear-gradient(top, #62c462, #51a351); background-image: -o-linear-gradient(top, #62c462, #51a351); background-image: linear-gradient(to bottom, #62c462, #51a351); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); border-color: #51a351 #51a351 #387038; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - color: #ffffff; - background-color: #51a351; - *background-color: #499249; -} - -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; + *background-color: #51a351; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - .btn-success:hover, .btn-success:focus, .btn-success:active, @@ -4283,45 +2934,27 @@ input[type="button"].btn-block { background-color: #51a351; *background-color: #499249; } - .btn-success:active, .btn-success.active { background-color: #408140 \9; } - .btn-info { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #49afcd; - *background-color: #2f96b4; background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); border-color: #2f96b4 #2f96b4 #1f6377; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - color: #ffffff; - background-color: #2f96b4; - *background-color: #2a85a0; -} - -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; + *background-color: #2f96b4; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - .btn-info:hover, .btn-info:focus, .btn-info:active, @@ -4332,45 +2965,27 @@ input[type="button"].btn-block { background-color: #2f96b4; *background-color: #2a85a0; } - .btn-info:active, .btn-info.active { background-color: #24748c \9; } - .btn-inverse { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #363636; - *background-color: #222222; background-image: -moz-linear-gradient(top, #444444, #222222); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); background-image: -webkit-linear-gradient(top, #444444, #222222); background-image: -o-linear-gradient(top, #444444, #222222); background-image: linear-gradient(to bottom, #444444, #222222); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); border-color: #222222 #222222 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.btn-inverse:hover, -.btn-inverse:focus, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - color: #ffffff; - background-color: #222222; - *background-color: #151515; -} - -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; + *background-color: #222222; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, @@ -4381,278 +2996,230 @@ input[type="button"].btn-block { background-color: #222222; *background-color: #151515; } - .btn-inverse:active, .btn-inverse.active { background-color: #080808 \9; } - button.btn, input[type="submit"].btn { *padding-top: 3px; *padding-bottom: 3px; } - button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } - button.btn.btn-large, input[type="submit"].btn.btn-large { *padding-top: 7px; *padding-bottom: 7px; } - button.btn.btn-small, input[type="submit"].btn.btn-small { *padding-top: 3px; *padding-bottom: 3px; } - button.btn.btn-mini, input[type="submit"].btn.btn-mini { *padding-top: 1px; *padding-bottom: 1px; } - .btn-link, .btn-link:active, .btn-link[disabled] { background-color: transparent; background-image: none; -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } - .btn-link { - color: #0088cc; - cursor: pointer; border-color: transparent; + cursor: pointer; + color: #0088cc; -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .btn-link:hover, .btn-link:focus { color: #005580; text-decoration: underline; background-color: transparent; } - .btn-link[disabled]:hover, .btn-link[disabled]:focus { color: #333333; text-decoration: none; } - .btn-group { position: relative; display: inline-block; *display: inline; - *margin-left: .3em; + /* IE7 inline-block hack */ + *zoom: 1; font-size: 0; - white-space: nowrap; vertical-align: middle; - *zoom: 1; -} - -.btn-group:first-child { - *margin-left: 0; + white-space: nowrap; + *margin-left: .3em; } - .btn-group:first-child { *margin-left: 0; } - .btn-group + .btn-group { margin-left: 5px; } - .btn-toolbar { + font-size: 0; margin-top: 10px; margin-bottom: 10px; - font-size: 0; } - .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group { margin-left: 5px; } - .btn-group > .btn { position: relative; -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .btn-group > .btn + .btn { margin-left: -1px; } - .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: 14px; } - .btn-group > .btn-mini { font-size: 10.5px; } - .btn-group > .btn-small { font-size: 11.9px; } - .btn-group > .btn-large { font-size: 17.5px; } - .btn-group > .btn:first-child { margin-left: 0; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; } - .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; } - .btn-group > .btn.large:first-child { margin-left: 0; - -webkit-border-bottom-left-radius: 6px; - border-bottom-left-radius: 6px; -webkit-border-top-left-radius: 6px; - border-top-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; } - .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - border-bottom-right-radius: 6px; -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; } - .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } - .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } - .btn-group > .btn + .dropdown-toggle { - *padding-top: 5px; + padding-left: 8px; padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + *padding-top: 5px; *padding-bottom: 5px; - padding-left: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } - .btn-group > .btn-mini + .dropdown-toggle { - *padding-top: 2px; + padding-left: 5px; padding-right: 5px; + *padding-top: 2px; *padding-bottom: 2px; - padding-left: 5px; } - .btn-group > .btn-small + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } - .btn-group > .btn-large + .dropdown-toggle { - *padding-top: 7px; + padding-left: 12px; padding-right: 12px; + *padding-top: 7px; *padding-bottom: 7px; - padding-left: 12px; } - .btn-group.open .dropdown-toggle { background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } - .btn-group.open .btn.dropdown-toggle { background-color: #e6e6e6; } - .btn-group.open .btn-primary.dropdown-toggle { background-color: #0044cc; } - .btn-group.open .btn-warning.dropdown-toggle { background-color: #f89406; } - .btn-group.open .btn-danger.dropdown-toggle { background-color: #bd362f; } - .btn-group.open .btn-success.dropdown-toggle { background-color: #51a351; } - .btn-group.open .btn-info.dropdown-toggle { background-color: #2f96b4; } - .btn-group.open .btn-inverse.dropdown-toggle { background-color: #222222; } - .btn .caret { margin-top: 8px; margin-left: 0; } - .btn-large .caret { margin-top: 6px; } - .btn-large .caret { - border-top-width: 5px; - border-right-width: 5px; border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; } - .btn-mini .caret, .btn-small .caret { margin-top: 8px; } - .dropup .btn-large .caret { border-bottom-width: 5px; } - .btn-primary .caret, .btn-warning .caret, .btn-danger .caret, @@ -4662,53 +3229,44 @@ input[type="submit"].btn.btn-mini { border-top-color: #ffffff; border-bottom-color: #ffffff; } - .btn-group-vertical { display: inline-block; *display: inline; /* IE7 inline-block hack */ - *zoom: 1; } - .btn-group-vertical > .btn { display: block; float: none; max-width: 100%; -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .btn-group-vertical > .btn + .btn { - margin-top: -1px; margin-left: 0; + margin-top: -1px; } - .btn-group-vertical > .btn:first-child { -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; } - .btn-group-vertical > .btn:last-child { -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; } - .btn-group-vertical > .btn-large:first-child { -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; } - .btn-group-vertical > .btn-large:last-child { -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; } - .alert { padding: 8px 35px 8px 14px; margin-bottom: 20px; @@ -4716,96 +3274,78 @@ input[type="submit"].btn.btn-mini { background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - .alert, .alert h4 { color: #c09853; } - .alert h4 { margin: 0; } - .alert .close { position: relative; top: -2px; right: -21px; line-height: 20px; } - .alert-success { - color: #468847; background-color: #dff0d8; border-color: #d6e9c6; + color: #468847; } - .alert-success h4 { color: #468847; } - .alert-danger, .alert-error { - color: #b94a48; background-color: #f2dede; border-color: #eed3d7; + color: #b94a48; } - .alert-danger h4, .alert-error h4 { color: #b94a48; } - .alert-info { - color: #3a87ad; background-color: #d9edf7; border-color: #bce8f1; + color: #3a87ad; } - .alert-info h4 { color: #3a87ad; } - .alert-block { padding-top: 14px; padding-bottom: 14px; } - .alert-block > p, .alert-block > ul { margin-bottom: 0; } - .alert-block p + p { margin-top: 5px; } - .nav { - margin-bottom: 20px; margin-left: 0; + margin-bottom: 20px; list-style: none; } - .nav > li > a { display: block; } - .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eeeeee; } - .nav > li > a > img { max-width: none; } - .nav > .pull-right { float: right; } - .nav-header { display: block; padding: 3px 15px; @@ -4816,28 +3356,23 @@ input[type="submit"].btn.btn-mini { text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); text-transform: uppercase; } - .nav li + .nav-header { margin-top: 9px; } - .nav-list { - padding-right: 15px; padding-left: 15px; + padding-right: 15px; margin-bottom: 0; } - .nav-list > li > a, .nav-list .nav-header { - margin-right: -15px; margin-left: -15px; + margin-right: -15px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } - .nav-list > li > a { padding: 3px 15px; } - .nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus { @@ -4845,12 +3380,10 @@ input[type="submit"].btn.btn-mini { text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); background-color: #0088cc; } - .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { margin-right: 2px; } - .nav-list .divider { *width: 100%; height: 1px; @@ -4860,45 +3393,26 @@ input[type="submit"].btn.btn-mini { background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } - .nav-tabs, .nav-pills { *zoom: 1; } - .nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { display: table; - line-height: 0; content: ""; -} - -.nav-tabs:after, -.nav-pills:after { - clear: both; -} - -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; line-height: 0; - content: ""; } - .nav-tabs:after, .nav-pills:after { clear: both; } - .nav-tabs > li, .nav-pills > li { float: left; } - .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; @@ -4906,153 +3420,127 @@ input[type="submit"].btn.btn-mini { margin-right: 2px; line-height: 14px; } - .nav-tabs { border-bottom: 1px solid #ddd; } - .nav-tabs > li { margin-bottom: -1px; } - .nav-tabs > li > a { padding-top: 8px; padding-bottom: 8px; line-height: 20px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; } - .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #dddddd; } - .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus { color: #555555; - cursor: default; background-color: #ffffff; border: 1px solid #ddd; border-bottom-color: transparent; + cursor: default; } - .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } - .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: #ffffff; background-color: #0088cc; } - .nav-stacked > li { float: none; } - .nav-stacked > li > a { margin-right: 0; } - .nav-tabs.nav-stacked { border-bottom: 0; } - .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; } - .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; } - .nav-tabs.nav-stacked > li > a:hover, .nav-tabs.nav-stacked > li > a:focus { - z-index: 2; border-color: #ddd; + z-index: 2; } - .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } - .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } - .nav-tabs .dropdown-menu { -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; } - .nav-pills .dropdown-menu { -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } - .nav .dropdown-toggle .caret { - margin-top: 6px; border-top-color: #0088cc; border-bottom-color: #0088cc; + margin-top: 6px; } - .nav .dropdown-toggle:hover .caret, .nav .dropdown-toggle:focus .caret { border-top-color: #005580; border-bottom-color: #005580; } - /* move down carets for tabs */ - .nav-tabs .dropdown-toggle .caret { margin-top: 8px; } - .nav .active .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } - .nav-tabs .active .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } - .nav > .dropdown.active > a:hover, .nav > .dropdown.active > a:focus { cursor: pointer; } - .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover, @@ -5061,7 +3549,6 @@ input[type="submit"].btn.btn-mini { background-color: #999999; border-color: #999999; } - .nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret, @@ -5071,169 +3558,131 @@ input[type="submit"].btn.btn-mini { opacity: 1; filter: alpha(opacity=100); } - .tabs-stacked .open > a:hover, .tabs-stacked .open > a:focus { border-color: #999999; } - .tabbable { *zoom: 1; } - .tabbable:before, .tabbable:after { display: table; - line-height: 0; content: ""; -} - -.tabbable:after { - clear: both; -} - -.tabbable:before, -.tabbable:after { - display: table; line-height: 0; - content: ""; } - .tabbable:after { clear: both; } - .tab-content { overflow: auto; } - .tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } - .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } - .tab-content > .active, .pill-content > .active { display: block; } - .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } - .tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } - .tabs-below > .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; } - .tabs-below > .nav-tabs > li > a:hover, .tabs-below > .nav-tabs > li > a:focus { - border-top-color: #ddd; border-bottom-color: transparent; + border-top-color: #ddd; } - .tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover, .tabs-below > .nav-tabs > .active > a:focus { border-color: transparent #ddd #ddd #ddd; } - .tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } - .tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } - .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } - .tabs-left > .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; } - .tabs-left > .nav-tabs > li > a:hover, .tabs-left > .nav-tabs > li > a:focus { border-color: #eeeeee #dddddd #eeeeee #eeeeee; } - .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus { border-color: #ddd transparent #ddd #ddd; *border-right-color: #ffffff; } - .tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } - .tabs-right > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; } - .tabs-right > .nav-tabs > li > a:hover, .tabs-right > .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #eeeeee #dddddd; } - .tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover, .tabs-right > .nav-tabs .active > a:focus { border-color: #ddd #ddd #ddd transparent; *border-left-color: #ffffff; } - .nav > .disabled > a { color: #999999; } - .nav > .disabled > a:hover, .nav > .disabled > a:focus { text-decoration: none; - cursor: default; background-color: transparent; + cursor: default; } - .navbar { + overflow: visible; + margin-bottom: 20px; *position: relative; *z-index: 2; - margin-bottom: 20px; - overflow: visible; } - .navbar-inner { min-height: 40px; - padding-right: 20px; padding-left: 20px; + padding-right: 20px; background-color: #fafafa; background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); @@ -5241,51 +3690,35 @@ input[type="submit"].btn.btn-mini { background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); border: 1px solid #d4d4d4; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - *zoom: 1; + -moz-border-radius: 4px; + border-radius: 4px; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + *zoom: 1; } - .navbar-inner:before, .navbar-inner:after { display: table; - line-height: 0; content: ""; + line-height: 0; } - .navbar-inner:after { clear: both; } - -.navbar-inner:before, -.navbar-inner:after { - display: table; - line-height: 0; - content: ""; -} - -.navbar-inner:after { - clear: both; -} - .navbar .container { width: auto; } - .nav-collapse.collapse { height: auto; overflow: visible; } - .navbar .brand { - display: block; float: left; + display: block; padding: 10px 20px 10px; margin-left: -20px; font-size: 20px; @@ -5293,39 +3726,32 @@ input[type="submit"].btn.btn-mini { color: #777777; text-shadow: 0 1px 0 #ffffff; } - .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } - .navbar-text { margin-bottom: 0; line-height: 40px; color: #777777; } - .navbar-link { color: #777777; } - .navbar-link:hover, .navbar-link:focus { color: #333333; } - .navbar .divider-vertical { height: 40px; margin: 0 9px; - border-right: 1px solid #ffffff; border-left: 1px solid #f2f2f2; + border-right: 1px solid #ffffff; } - .navbar .btn, .navbar .btn-group { margin-top: 5px; } - .navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn, @@ -5333,95 +3759,71 @@ input[type="submit"].btn.btn-mini { .navbar .input-append .btn-group { margin-top: 0; } - .navbar-form { margin-bottom: 0; *zoom: 1; } - .navbar-form:before, .navbar-form:after { display: table; - line-height: 0; content: ""; -} - -.navbar-form:after { - clear: both; -} - -.navbar-form:before, -.navbar-form:after { - display: table; line-height: 0; - content: ""; } - .navbar-form:after { clear: both; } - .navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } - .navbar-form input, .navbar-form select, .navbar-form .btn { display: inline-block; margin-bottom: 0; } - .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } - .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 5px; white-space: nowrap; } - .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } - .navbar-search { position: relative; float: left; margin-top: 5px; margin-bottom: 0; } - .navbar-search .search-query { - padding: 4px 14px; margin-bottom: 0; + padding: 4px 14px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; } - .navbar-static-top { position: static; margin-bottom: 0; } - .navbar-static-top .navbar-inner { -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; @@ -5430,52 +3832,43 @@ input[type="submit"].btn.btn-mini { z-index: 1030; margin-bottom: 0; } - .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { border-width: 0 0 1px; } - .navbar-fixed-bottom .navbar-inner { border-width: 1px 0 0; } - .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { - padding-right: 0; padding-left: 0; + padding-right: 0; -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } - .navbar-fixed-top { top: 0; } - .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { - -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); + -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); + box-shadow: 0 1px 10px rgba(0,0,0,.1); } - .navbar-fixed-bottom { bottom: 0; } - .navbar-fixed-bottom .navbar-inner { - -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); + -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); + box-shadow: 0 -1px 10px rgba(0,0,0,.1); } - .navbar .nav { position: relative; left: 0; @@ -5483,16 +3876,13 @@ input[type="submit"].btn.btn-mini { float: left; margin: 0 10px 0 0; } - .navbar .nav.pull-right { float: right; margin-right: 0; } - .navbar .nav > li { float: left; } - .navbar .nav > li > a { float: none; padding: 10px 15px 10px; @@ -5500,18 +3890,15 @@ input[type="submit"].btn.btn-mini { text-decoration: none; text-shadow: 0 1px 0 #ffffff; } - .navbar .nav .dropdown-toggle .caret { margin-top: 8px; } - .navbar .nav > li > a:focus, .navbar .nav > li > a:hover { + background-color: transparent; color: #333333; text-decoration: none; - background-color: transparent; } - .navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { @@ -5519,51 +3906,34 @@ input[type="submit"].btn.btn-mini { text-decoration: none; background-color: #e5e5e5; -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); } - .navbar .btn-navbar { display: none; float: right; padding: 7px 10px; - margin-right: 5px; margin-left: 5px; + margin-right: 5px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #ededed; - *background-color: #e5e5e5; background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e5e5e5 #e5e5e5 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); -} - -.navbar .btn-navbar:hover, -.navbar .btn-navbar:focus, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - color: #ffffff; - background-color: #e5e5e5; - *background-color: #d9d9d9; -} - -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #cccccc \9; + *background-color: #e5e5e5; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); } - .navbar .btn-navbar:hover, .navbar .btn-navbar:focus, .navbar .btn-navbar:active, @@ -5574,121 +3944,105 @@ input[type="submit"].btn.btn-mini { background-color: #e5e5e5; *background-color: #d9d9d9; } - .navbar .btn-navbar:active, .navbar .btn-navbar.active { background-color: #cccccc \9; } - .navbar .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); } - .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } - .navbar .nav > li > .dropdown-menu:before { - position: absolute; - top: -7px; - left: 9px; + content: ''; display: inline-block; + border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; + position: absolute; + top: -7px; + left: 9px; } - .navbar .nav > li > .dropdown-menu:after { - position: absolute; - top: -6px; - left: 10px; + content: ''; display: inline-block; + border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; - border-left: 6px solid transparent; - content: ''; + position: absolute; + top: -6px; + left: 10px; } - .navbar-fixed-bottom .nav > li > .dropdown-menu:before { - top: auto; - bottom: -7px; border-top: 7px solid #ccc; - border-bottom: 0; border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0; + bottom: -7px; + top: auto; } - .navbar-fixed-bottom .nav > li > .dropdown-menu:after { - top: auto; - bottom: -6px; border-top: 6px solid #ffffff; border-bottom: 0; + bottom: -6px; + top: auto; } - .navbar .nav li.dropdown > a:hover .caret, .navbar .nav li.dropdown > a:focus .caret { border-top-color: #333333; border-bottom-color: #333333; } - .navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { - color: #555555; background-color: #e5e5e5; + color: #555555; } - .navbar .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #777777; border-bottom-color: #777777; } - .navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } - .navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { - right: 0; left: auto; + right: 0; } - .navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { - right: 12px; left: auto; + right: 12px; } - .navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { - right: 13px; left: auto; + right: 13px; } - .navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { - right: 100%; left: auto; - margin-right: -1px; + right: 100%; margin-left: 0; + margin-right: -1px; -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; } - .navbar-inverse .navbar-inner { background-color: #1b1b1b; background-image: -moz-linear-gradient(top, #222222, #111111); @@ -5697,120 +4051,90 @@ input[type="submit"].btn.btn-mini { background-image: -o-linear-gradient(top, #222222, #111111); background-image: linear-gradient(to bottom, #222222, #111111); background-repeat: repeat-x; - border-color: #252525; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); + border-color: #252525; } - .navbar-inverse .brand, .navbar-inverse .nav > li > a { color: #999999; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } - .navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:focus { color: #ffffff; } - .navbar-inverse .brand { color: #999999; } - .navbar-inverse .navbar-text { color: #999999; } - .navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { - color: #ffffff; background-color: transparent; + color: #ffffff; } - .navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { color: #ffffff; background-color: #111111; } - .navbar-inverse .navbar-link { color: #999999; } - .navbar-inverse .navbar-link:hover, .navbar-inverse .navbar-link:focus { color: #ffffff; } - .navbar-inverse .divider-vertical { - border-right-color: #222222; border-left-color: #111111; + border-right-color: #222222; } - .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { - color: #ffffff; background-color: #111111; + color: #ffffff; } - .navbar-inverse .nav li.dropdown > a:hover .caret, .navbar-inverse .nav li.dropdown > a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } - .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #999999; border-bottom-color: #999999; } - .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } - .navbar-inverse .navbar-search .search-query { color: #ffffff; background-color: #515151; border-color: #111111; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} - -.navbar-inverse .navbar-search .search-query:-moz-placeholder { - color: #cccccc; -} - -.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { - color: #cccccc; -} - -.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { - color: #cccccc; + -moz-transition: none; + -o-transition: none; + transition: none; } - .navbar-inverse .navbar-search .search-query:-moz-placeholder { color: #cccccc; } - .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { color: #cccccc; } - .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { color: #cccccc; } - .navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { padding: 5px 15px; @@ -5818,45 +4142,28 @@ input[type="submit"].btn.btn-mini { text-shadow: 0 1px 0 #ffffff; background-color: #ffffff; border: 0; - outline: 0; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; } - .navbar-inverse .btn-navbar { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e0e0e; - *background-color: #040404; background-image: -moz-linear-gradient(top, #151515, #040404); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); background-image: -webkit-linear-gradient(top, #151515, #040404); background-image: -o-linear-gradient(top, #151515, #040404); background-image: linear-gradient(to bottom, #151515, #040404); background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); border-color: #040404 #040404 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.navbar-inverse .btn-navbar:hover, -.navbar-inverse .btn-navbar:focus, -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active, -.navbar-inverse .btn-navbar.disabled, -.navbar-inverse .btn-navbar[disabled] { - color: #ffffff; - background-color: #040404; - *background-color: #000000; -} - -.navbar-inverse .btn-navbar:active, -.navbar-inverse .btn-navbar.active { - background-color: #000000 \9; + *background-color: #040404; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } - .navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, @@ -5867,60 +4174,53 @@ input[type="submit"].btn.btn-mini { background-color: #040404; *background-color: #000000; } - .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { background-color: #000000 \9; } - .breadcrumb { padding: 8px 15px; margin: 0 0 20px; list-style: none; background-color: #f5f5f5; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - .breadcrumb > li { display: inline-block; *display: inline; - text-shadow: 0 1px 0 #ffffff; + /* IE7 inline-block hack */ *zoom: 1; + text-shadow: 0 1px 0 #ffffff; } - .breadcrumb > li > .divider { padding: 0 5px; color: #ccc; } - .breadcrumb > .active { color: #999999; } - .pagination { margin: 20px 0; } - .pagination ul { display: inline-block; *display: inline; - margin-bottom: 0; + /* IE7 inline-block hack */ + *zoom: 1; margin-left: 0; + margin-bottom: 0; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *zoom: 1; + -moz-border-radius: 4px; + border-radius: 4px; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } - .pagination ul > li { display: inline; } - .pagination ul > li > a, .pagination ul > li > span { float: left; @@ -5931,153 +4231,123 @@ input[type="submit"].btn.btn-mini { border: 1px solid #dddddd; border-left-width: 0; } - .pagination ul > li > a:hover, .pagination ul > li > a:focus, .pagination ul > .active > a, .pagination ul > .active > span { background-color: #f5f5f5; } - .pagination ul > .active > a, .pagination ul > .active > span { color: #999999; cursor: default; } - .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus { color: #999999; - cursor: default; background-color: transparent; + cursor: default; } - .pagination ul > li:first-child > a, .pagination ul > li:first-child > span { border-left-width: 1px; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; } - .pagination ul > li:last-child > a, .pagination ul > li:last-child > span { -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; } - .pagination-centered { text-align: center; } - .pagination-right { text-align: right; } - .pagination-large ul > li > a, .pagination-large ul > li > span { padding: 11px 19px; font-size: 17.5px; } - .pagination-large ul > li:first-child > a, .pagination-large ul > li:first-child > span { - -webkit-border-bottom-left-radius: 6px; - border-bottom-left-radius: 6px; -webkit-border-top-left-radius: 6px; - border-top-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; } - .pagination-large ul > li:last-child > a, .pagination-large ul > li:last-child > span { -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - border-bottom-right-radius: 6px; -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; } - .pagination-mini ul > li:first-child > a, .pagination-small ul > li:first-child > a, .pagination-mini ul > li:first-child > span, .pagination-small ul > li:first-child > span { - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; -moz-border-radius-topleft: 3px; + border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + border-bottom-left-radius: 3px; } - .pagination-mini ul > li:last-child > a, .pagination-small ul > li:last-child > a, .pagination-mini ul > li:last-child > span, .pagination-small ul > li:last-child > span { -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; -moz-border-radius-bottomright: 3px; + border-bottom-right-radius: 3px; } - .pagination-small ul > li > a, .pagination-small ul > li > span { padding: 2px 10px; font-size: 11.9px; } - .pagination-mini ul > li > a, .pagination-mini ul > li > span { padding: 0 6px; font-size: 10.5px; } - .pager { margin: 20px 0; - text-align: center; list-style: none; + text-align: center; *zoom: 1; } - .pager:before, .pager:after { display: table; - line-height: 0; content: ""; -} - -.pager:after { - clear: both; -} - -.pager:before, -.pager:after { - display: table; line-height: 0; - content: ""; } - .pager:after { clear: both; } - .pager li { display: inline; } - .pager li > a, .pager li > span { display: inline-block; @@ -6085,35 +4355,30 @@ input[type="submit"].btn.btn-mini { background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; } - .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #f5f5f5; } - .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: #999999; - cursor: default; background-color: #fff; + cursor: default; } - .modal-backdrop { position: fixed; top: 0; @@ -6123,17 +4388,14 @@ input[type="submit"].btn.btn-mini { z-index: 1040; background-color: #000000; } - .modal-backdrop.fade { opacity: 0; } - .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } - .modal { position: fixed; top: 10%; @@ -6145,55 +4407,48 @@ input[type="submit"].btn.btn-mini { border: 1px solid #999; border: 1px solid rgba(0, 0, 0, 0.3); *border: 1px solid #999; + /* IE6-7 */ -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - outline: none; + -moz-border-radius: 6px; + border-radius: 6px; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; + outline: none; } - .modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; top: -25%; - -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; - -moz-transition: opacity 0.3s linear, top 0.3s ease-out; - -o-transition: opacity 0.3s linear, top 0.3s ease-out; - transition: opacity 0.3s linear, top 0.3s ease-out; } - .modal.fade.in { top: 10%; } - .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } - .modal-header .close { margin-top: 2px; } - .modal-header h3 { margin: 0; line-height: 30px; } - .modal-body { position: relative; + overflow-y: auto; max-height: 400px; padding: 15px; - overflow-y: auto; } - .modal-form { margin-bottom: 0; } - .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; @@ -6201,85 +4456,62 @@ input[type="submit"].btn.btn-mini { background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - *zoom: 1; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; } - .modal-footer:before, .modal-footer:after { display: table; - line-height: 0; content: ""; -} - -.modal-footer:after { - clear: both; -} - -.modal-footer:before, -.modal-footer:after { - display: table; line-height: 0; - content: ""; } - .modal-footer:after { clear: both; } - .modal-footer .btn + .btn { - margin-bottom: 0; margin-left: 5px; + margin-bottom: 0; } - .modal-footer .btn-group .btn + .btn { margin-left: -1px; } - .modal-footer .btn-block + .btn-block { margin-left: 0; } - .tooltip { position: absolute; z-index: 1030; display: block; + visibility: visible; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); - visibility: visible; } - .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } - .tooltip.top { - padding: 5px 0; margin-top: -3px; + padding: 5px 0; } - .tooltip.right { - padding: 0 5px; margin-left: 3px; + padding: 0 5px; } - .tooltip.bottom { - padding: 5px 0; margin-top: 3px; + padding: 5px 0; } - .tooltip.left { - padding: 0 5px; margin-left: -3px; + padding: 0 5px; } - .tooltip-inner { max-width: 200px; padding: 8px; @@ -6288,10 +4520,9 @@ input[type="submit"].btn.btn-mini { text-decoration: none; background-color: #000000; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - .tooltip-arrow { position: absolute; width: 0; @@ -6299,39 +4530,34 @@ input[type="submit"].btn.btn-mini { border-color: transparent; border-style: solid; } - .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; - border-top-color: #000000; border-width: 5px 5px 0; + border-top-color: #000000; } - .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; - border-right-color: #000000; border-width: 5px 5px 5px 0; + border-right-color: #000000; } - .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; - border-left-color: #000000; border-width: 5px 0 5px 5px; + border-left-color: #000000; } - .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; - border-bottom-color: #000000; border-width: 0 5px 5px; + border-bottom-color: #000000; } - .popover { position: absolute; top: 0; @@ -6341,58 +4567,50 @@ input[type="submit"].btn.btn-mini { max-width: 276px; padding: 1px; text-align: left; - white-space: normal; background-color: #ffffff; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; } - .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; + padding: 8px 14px; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; } - .popover-title:empty { display: none; } - .popover-content { padding: 9px 14px; } - .popover .arrow, .popover .arrow:after { position: absolute; @@ -6402,192 +4620,153 @@ input[type="submit"].btn.btn-mini { border-color: transparent; border-style: solid; } - .popover .arrow { border-width: 11px; } - .popover .arrow:after { border-width: 10px; content: ""; } - .popover.top .arrow { - bottom: -11px; left: 50%; margin-left: -11px; + border-bottom-width: 0; border-top-color: #999; border-top-color: rgba(0, 0, 0, 0.25); - border-bottom-width: 0; + bottom: -11px; } - .popover.top .arrow:after { bottom: 1px; margin-left: -10px; - border-top-color: #ffffff; border-bottom-width: 0; + border-top-color: #ffffff; } - .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; + border-left-width: 0; border-right-color: #999; border-right-color: rgba(0, 0, 0, 0.25); - border-left-width: 0; } - .popover.right .arrow:after { - bottom: -10px; left: 1px; - border-right-color: #ffffff; + bottom: -10px; border-left-width: 0; + border-right-color: #ffffff; } - .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, 0.25); - border-top-width: 0; + top: -11px; } - .popover.bottom .arrow:after { top: 1px; margin-left: -10px; - border-bottom-color: #ffffff; border-top-width: 0; + border-bottom-color: #ffffff; } - .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, 0.25); - border-right-width: 0; } - .popover.left .arrow:after { right: 1px; - bottom: -10px; - border-left-color: #ffffff; border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; } - .thumbnails { margin-left: -20px; list-style: none; *zoom: 1; } - .thumbnails:before, .thumbnails:after { display: table; - line-height: 0; content: ""; -} - -.thumbnails:after { - clear: both; -} - -.thumbnails:before, -.thumbnails:after { - display: table; line-height: 0; - content: ""; } - .thumbnails:after { clear: both; } - .row-fluid .thumbnails { margin-left: 0; } - .thumbnails > li { float: left; margin-bottom: 20px; margin-left: 20px; } - .thumbnail { display: block; padding: 4px; line-height: 20px; border: 1px solid #ddd; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } - a.thumbnail:hover, a.thumbnail:focus { border-color: #0088cc; -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); } - .thumbnail > img { display: block; max-width: 100%; - margin-right: auto; margin-left: auto; + margin-right: auto; } - .thumbnail .caption { padding: 9px; color: #555555; } - .media, .media-body { overflow: hidden; *overflow: visible; zoom: 1; } - .media, .media .media { margin-top: 15px; } - .media:first-child { margin-top: 0; } - .media-object { display: block; } - .media-heading { margin: 0 0 5px; } - .media > .pull-left { margin-right: 10px; } - .media > .pull-right { margin-left: 10px; } - .media-list { margin-left: 0; list-style: none; } - .label, .badge { display: inline-block; @@ -6596,31 +4775,27 @@ a.thumbnail:focus { font-weight: bold; line-height: 14px; color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - white-space: nowrap; vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #999999; } - .label { -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } - .badge { - padding-right: 9px; padding-left: 9px; + padding-right: 9px; -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; } - .label:empty, .badge:empty { display: none; } - a.label:hover, a.label:focus, a.badge:hover, @@ -6629,68 +4804,55 @@ a.badge:focus { text-decoration: none; cursor: pointer; } - .label-important, .badge-important { background-color: #b94a48; } - .label-important[href], .badge-important[href] { background-color: #953b39; } - .label-warning, .badge-warning { background-color: #f89406; } - .label-warning[href], .badge-warning[href] { background-color: #c67605; } - .label-success, .badge-success { background-color: #468847; } - .label-success[href], .badge-success[href] { background-color: #356635; } - .label-info, .badge-info { background-color: #3a87ad; } - .label-info[href], .badge-info[href] { background-color: #2d6987; } - .label-inverse, .badge-inverse { background-color: #333333; } - .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } - .btn .label, .btn .badge { position: relative; top: -1px; } - .btn-mini .label, .btn-mini .badge { top: 0; } - @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; @@ -6699,7 +4861,6 @@ a.badge:focus { background-position: 0 0; } } - @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; @@ -6708,7 +4869,6 @@ a.badge:focus { background-position: 0 0; } } - @-ms-keyframes progress-bar-stripes { from { background-position: 40px 0; @@ -6717,7 +4877,6 @@ a.badge:focus { background-position: 0 0; } } - @-o-keyframes progress-bar-stripes { from { background-position: 0 0; @@ -6726,7 +4885,6 @@ a.badge:focus { background-position: 40px 0; } } - @keyframes progress-bar-stripes { from { background-position: 40px 0; @@ -6735,11 +4893,10 @@ a.badge:focus { background-position: 0 0; } } - .progress { + overflow: hidden; height: 20px; margin-bottom: 20px; - overflow: hidden; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); @@ -6747,21 +4904,20 @@ a.badge:focus { background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); background-repeat: repeat-x; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - .progress .bar { - float: left; - width: 0; + width: 0%; height: 100%; - font-size: 12px; color: #ffffff; + float: left; + font-size: 12px; text-align: center; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e90d2; @@ -6773,23 +4929,21 @@ a.badge:focus { background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; } - .progress .bar + .bar { - -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); } - .progress-striped .bar { background-color: #149bdf; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); @@ -6798,19 +4952,17 @@ a.badge:focus { background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; } - .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; } - .progress-danger .bar, .progress .bar-danger { background-color: #dd514c; @@ -6822,7 +4974,6 @@ a.badge:focus { background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); } - .progress-danger.progress-striped .bar, .progress-striped .bar-danger { background-color: #ee5f5b; @@ -6832,7 +4983,6 @@ a.badge:focus { background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - .progress-success .bar, .progress .bar-success { background-color: #5eb95e; @@ -6844,7 +4994,6 @@ a.badge:focus { background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); } - .progress-success.progress-striped .bar, .progress-striped .bar-success { background-color: #62c462; @@ -6854,7 +5003,6 @@ a.badge:focus { background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - .progress-info .bar, .progress .bar-info { background-color: #4bb1cf; @@ -6866,7 +5014,6 @@ a.badge:focus { background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); } - .progress-info.progress-striped .bar, .progress-striped .bar-info { background-color: #5bc0de; @@ -6876,7 +5023,6 @@ a.badge:focus { background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - .progress-warning .bar, .progress .bar-warning { background-color: #faa732; @@ -6888,7 +5034,6 @@ a.badge:focus { background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); } - .progress-warning.progress-striped .bar, .progress-striped .bar-warning { background-color: #fbb450; @@ -6898,102 +5043,83 @@ a.badge:focus { background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } - .accordion { margin-bottom: 20px; } - .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } - .accordion-heading { border-bottom: 0; } - .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } - .accordion-toggle { cursor: pointer; } - .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } - .carousel { position: relative; margin-bottom: 20px; line-height: 1; } - .carousel-inner { - position: relative; - width: 100%; overflow: hidden; + width: 100%; + position: relative; } - .carousel-inner > .item { - position: relative; display: none; + position: relative; -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; } - .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; line-height: 1; } - .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: 40%; @@ -7009,17 +5135,15 @@ a.badge:focus { background: #222222; border: 3px solid #ffffff; -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } - .carousel-control.right { - right: 15px; left: auto; + right: 15px; } - .carousel-control:hover, .carousel-control:focus { color: #ffffff; @@ -7027,7 +5151,6 @@ a.badge:focus { opacity: 0.9; filter: alpha(opacity=90); } - .carousel-indicators { position: absolute; top: 15px; @@ -7036,7 +5159,6 @@ a.badge:focus { margin: 0; list-style: none; } - .carousel-indicators li { display: block; float: left; @@ -7048,35 +5170,29 @@ a.badge:focus { background-color: rgba(255, 255, 255, 0.25); border-radius: 5px; } - .carousel-indicators .active { background-color: #fff; } - .carousel-caption { position: absolute; + left: 0; right: 0; bottom: 0; - left: 0; padding: 15px; background: #333333; background: rgba(0, 0, 0, 0.75); } - .carousel-caption h4, .carousel-caption p { - line-height: 20px; color: #ffffff; + line-height: 20px; } - .carousel-caption h4 { margin: 0 0 5px; } - .carousel-caption p { margin-bottom: 0; } - .hero-unit { padding: 60px; margin-bottom: 30px; @@ -7086,46 +5202,219 @@ a.badge:focus { color: inherit; background-color: #eeeeee; -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } - .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; - letter-spacing: -1px; color: inherit; + letter-spacing: -1px; } - .hero-unit li { line-height: 30px; } - .pull-right { float: right; } - .pull-left { float: left; } - .hide { display: none; } - .show { display: block; } - .invisible { visibility: hidden; } - .affix { position: fixed; } - +body { + position: relative; + padding-top: 40px; +} +.list-item { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.list-item blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.list-header, +.edit-header { + position: fixed; + width: 100%; + margin-top: 11px; + z-index: 1; + background-color: #ffffff; +} +.list-body { + padding-top: 100px; +} +.edit-header { + padding-top: 10px; +} +.edit-body { + padding-top: 100px; +} +.page-header { + padding-left: 20px; +} +.header-rhs { + width: 226px; + padding-right: 60px; + min-height: 40px; +} +.list-header .header-rhs { + margin: 15px 0; +} +.fixed-header { + position: fixed; + width: 100%; + margin-top: 11px; + z-index: 1; +} +.header-rhs { + width: inherited !important; + padding-right: 20px !important; + padding-bottom: 5px; + display: block; +} +.gridStyle { + border: 1px solid #d4d4d4; + margin: auto; + height: 400px; +} +.gridStyle .ngTopPanel { + background-color: #ffffff; +} +.gridStyle .ngHeaderCell { + background-color: #e4e4e4; +} +.gridStyle .fng-right { + text-align: right; +} +.gridStyle .fng-left { + text-align: left; +} +.gridStyle .fng-centre, +.gridStyle .fng-center { + text-align: center; +} +.gridStyle .ngTotalCell { + font-weight: bold; +} +button.form-btn { + width: 8em; + height: 2em; +} +form.form-horizontal.compact input + .help-block, +form.form-horizontal.compact select + .help-block, +form.form-horizontal.compact textarea + .help-block, +form.form-horizontal.compact .uneditable-input + .help-block, +form.form-horizontal.compact .input-prepend + .help-block, +form.form-horizontal.compact .input-append + .help-block { + margin-top: 0; + margin-bottom: 2px; +} +form.form-horizontal.compact hr { + margin: 8px 0; +} +form .schema-head, +form .sub-doc, +form .schema-foot { + min-height: 20px; + margin-bottom: 20px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +form .schema-head blockquote, +form .sub-doc blockquote, +form .schema-foot blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +form .schema-head { + margin-top: 0; + margin-bottom: 5px; + border: 1px solid #ddd; + padding: 4px 180px; +} +form .sub-doc { + padding: 0 5px 0 0; + width: 97%; + margin-bottom: 3px; +} +form .sub-doc-btns { + margin-left: 15px; +} +form .schema-foot { + padding: 5px 180px; + margin: 5px 0; +} +form input[type="checkbox"].ng-invalid-required:after { + content: "*"; + font-weight: bold; + color: red; + /* padding-left is too small at 12 if inline help is not used*/ + padding-left: 12px; +} +form input.ng-invalid-required, +form select.fng-invalid-required { + background-color: rgba(255, 0, 0, 0.1); +} +form option { + background-color: white; +} +form .fng-select2 { + width: 220px; +} +form .form-inline > .sub-doc { + padding: 0 5px; + border: none; + box-shadow: none; +} +.global-search { + position: relative; + float: right; + width: 236px; +} +.results-container { + width: 6000px; + z-index: 3; + position: absolute; + top: 41px; + right: 0; +} +.search-results { + float: right; + border: 1px solid gray; + -webkit-box-shadow: 10px 10px 10px #888; + box-shadow: 10px 10px 10px #888; + background: white; + padding: 5px; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.search-results .search-result.focus { + color: white; +} /*! * Bootstrap Responsive v2.3.2 * @@ -7135,64 +5424,25 @@ a.badge:focus { * * Designed and built with all the love in the world by @mdo and @fat. */ - -.clearfix { - *zoom: 1; -} - -.clearfix:before, -.clearfix:after { - display: table; - line-height: 0; - content: ""; -} - -.clearfix:after { - clear: both; -} - -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - @-ms-viewport { width: device-width; } - .hidden { display: none; visibility: hidden; } - .visible-phone { display: none !important; } - .visible-tablet { display: none !important; } - .hidden-desktop { display: none !important; } - .visible-desktop { display: inherit !important; } - @media (min-width: 768px) and (max-width: 979px) { .hidden-desktop { display: inherit !important; @@ -7207,7 +5457,6 @@ a.badge:focus { display: none !important; } } - @media (max-width: 767px) { .hidden-desktop { display: inherit !important; @@ -7222,11 +5471,9 @@ a.badge:focus { display: none !important; } } - .visible-print { display: none !important; } - @media print { .visible-print { display: inherit !important; @@ -7235,7 +5482,6 @@ a.badge:focus { display: none !important; } } - @media (min-width: 1200px) { .row { margin-left: -30px; @@ -7244,17 +5490,8 @@ a.badge:focus { .row:before, .row:after { display: table; - line-height: 0; content: ""; - } - .row:after { - clear: both; - } - .row:before, - .row:after { - display: table; line-height: 0; - content: ""; } .row:after { clear: both; @@ -7342,730 +5579,259 @@ a.badge:focus { .offset1 { margin-left: 130px; } - .row { - margin-left: -30px; + .row-fluid { + width: 100%; *zoom: 1; } - .row:before, - .row:after { + .row-fluid:before, + .row-fluid:after { display: table; - line-height: 0; content: ""; - } - .row:after { - clear: both; - } - .row:before, - .row:after { - display: table; line-height: 0; - content: ""; } - .row:after { + .row-fluid:after { clear: both; } - [class*="span"] { + .row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; float: left; - min-height: 1px; - margin-left: 30px; + margin-left: 2.56410256%; + *margin-left: 2.51091107%; } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 1170px; - } - .span12 { - width: 1170px; - } - .span11 { - width: 1070px; - } - .span10 { - width: 970px; - } - .span9 { - width: 870px; - } - .span8 { - width: 770px; - } - .span7 { - width: 670px; - } - .span6 { - width: 570px; - } - .span5 { - width: 470px; - } - .span4 { - width: 370px; - } - .span3 { - width: 270px; - } - .span2 { - width: 170px; - } - .span1 { - width: 70px; - } - .offset12 { - margin-left: 1230px; - } - .offset11 { - margin-left: 1130px; - } - .offset10 { - margin-left: 1030px; - } - .offset9 { - margin-left: 930px; - } - .offset8 { - margin-left: 830px; - } - .offset7 { - margin-left: 730px; - } - .offset6 { - margin-left: 630px; - } - .offset5 { - margin-left: 530px; - } - .offset4 { - margin-left: 430px; - } - .offset3 { - margin-left: 330px; - } - .offset2 { - margin-left: 230px; - } - .offset1 { - margin-left: 130px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 30px; - margin-left: 2.564102564102564%; - *margin-left: 2.5109110747408616%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.564102564102564%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851063829%; - } - .row-fluid .span11 { - width: 91.45299145299145%; - *width: 91.39979996362975%; - } - .row-fluid .span10 { - width: 82.90598290598291%; - *width: 82.8527914166212%; - } - .row-fluid .span9 { - width: 74.35897435897436%; - *width: 74.30578286961266%; - } - .row-fluid .span8 { - width: 65.81196581196582%; - *width: 65.75877432260411%; - } - .row-fluid .span7 { - width: 57.26495726495726%; - *width: 57.21176577559556%; - } - .row-fluid .span6 { - width: 48.717948717948715%; - *width: 48.664757228587014%; - } - .row-fluid .span5 { - width: 40.17094017094017%; - *width: 40.11774868157847%; - } - .row-fluid .span4 { - width: 31.623931623931625%; - *width: 31.570740134569924%; - } - .row-fluid .span3 { - width: 23.076923076923077%; - *width: 23.023731587561375%; - } - .row-fluid .span2 { - width: 14.52991452991453%; - *width: 14.476723040552828%; - } - .row-fluid .span1 { - width: 5.982905982905983%; - *width: 5.929714493544281%; - } - .row-fluid .offset12 { - margin-left: 105.12820512820512%; - *margin-left: 105.02182214948171%; - } - .row-fluid .offset12:first-child { - margin-left: 102.56410256410257%; - *margin-left: 102.45771958537915%; - } - .row-fluid .offset11 { - margin-left: 96.58119658119658%; - *margin-left: 96.47481360247316%; - } - .row-fluid .offset11:first-child { - margin-left: 94.01709401709402%; - *margin-left: 93.91071103837061%; - } - .row-fluid .offset10 { - margin-left: 88.03418803418803%; - *margin-left: 87.92780505546462%; - } - .row-fluid .offset10:first-child { - margin-left: 85.47008547008548%; - *margin-left: 85.36370249136206%; - } - .row-fluid .offset9 { - margin-left: 79.48717948717949%; - *margin-left: 79.38079650845607%; - } - .row-fluid .offset9:first-child { - margin-left: 76.92307692307693%; - *margin-left: 76.81669394435352%; - } - .row-fluid .offset8 { - margin-left: 70.94017094017094%; - *margin-left: 70.83378796144753%; - } - .row-fluid .offset8:first-child { - margin-left: 68.37606837606839%; - *margin-left: 68.26968539734497%; - } - .row-fluid .offset7 { - margin-left: 62.393162393162385%; - *margin-left: 62.28677941443899%; - } - .row-fluid .offset7:first-child { - margin-left: 59.82905982905982%; - *margin-left: 59.72267685033642%; - } - .row-fluid .offset6 { - margin-left: 53.84615384615384%; - *margin-left: 53.739770867430444%; - } - .row-fluid .offset6:first-child { - margin-left: 51.28205128205128%; - *margin-left: 51.175668303327875%; - } - .row-fluid .offset5 { - margin-left: 45.299145299145295%; - *margin-left: 45.1927623204219%; - } - .row-fluid .offset5:first-child { - margin-left: 42.73504273504273%; - *margin-left: 42.62865975631933%; - } - .row-fluid .offset4 { - margin-left: 36.75213675213675%; - *margin-left: 36.645753773413354%; - } - .row-fluid .offset4:first-child { - margin-left: 34.18803418803419%; - *margin-left: 34.081651209310785%; - } - .row-fluid .offset3 { - margin-left: 28.205128205128204%; - *margin-left: 28.0987452264048%; - } - .row-fluid .offset3:first-child { - margin-left: 25.641025641025642%; - *margin-left: 25.53464266230224%; - } - .row-fluid .offset2 { - margin-left: 19.65811965811966%; - *margin-left: 19.551736679396257%; - } - .row-fluid .offset2:first-child { - margin-left: 17.094017094017094%; - *margin-left: 16.98763411529369%; - } - .row-fluid .offset1 { - margin-left: 11.11111111111111%; - *margin-left: 11.004728132387708%; - } - .row-fluid .offset1:first-child { - margin-left: 8.547008547008547%; - *margin-left: 8.440625568285142%; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 30px; - margin-left: 2.564102564102564%; - *margin-left: 2.5109110747408616%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; + .row-fluid [class*="span"]:first-child { + margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.564102564102564%; + margin-left: 2.56410256%; } .row-fluid .span12 { width: 100%; - *width: 99.94680851063829%; + *width: 99.94680851%; } .row-fluid .span11 { - width: 91.45299145299145%; - *width: 91.39979996362975%; + width: 91.45299145%; + *width: 91.39979996%; } .row-fluid .span10 { - width: 82.90598290598291%; - *width: 82.8527914166212%; + width: 82.90598291%; + *width: 82.85279142%; } .row-fluid .span9 { - width: 74.35897435897436%; - *width: 74.30578286961266%; + width: 74.35897436%; + *width: 74.30578287%; } .row-fluid .span8 { - width: 65.81196581196582%; - *width: 65.75877432260411%; + width: 65.81196581%; + *width: 65.75877432%; } .row-fluid .span7 { - width: 57.26495726495726%; - *width: 57.21176577559556%; + width: 57.26495726%; + *width: 57.21176578%; } .row-fluid .span6 { - width: 48.717948717948715%; - *width: 48.664757228587014%; + width: 48.71794872%; + *width: 48.66475723%; } .row-fluid .span5 { - width: 40.17094017094017%; - *width: 40.11774868157847%; + width: 40.17094017%; + *width: 40.11774868%; } .row-fluid .span4 { - width: 31.623931623931625%; - *width: 31.570740134569924%; + width: 31.62393162%; + *width: 31.57074013%; } .row-fluid .span3 { - width: 23.076923076923077%; - *width: 23.023731587561375%; + width: 23.07692308%; + *width: 23.02373159%; } .row-fluid .span2 { - width: 14.52991452991453%; - *width: 14.476723040552828%; + width: 14.52991453%; + *width: 14.47672304%; } .row-fluid .span1 { - width: 5.982905982905983%; - *width: 5.929714493544281%; + width: 5.98290598%; + *width: 5.92971449%; } .row-fluid .offset12 { - margin-left: 105.12820512820512%; - *margin-left: 105.02182214948171%; + margin-left: 105.12820513%; + *margin-left: 105.02182215%; } .row-fluid .offset12:first-child { - margin-left: 102.56410256410257%; - *margin-left: 102.45771958537915%; + margin-left: 102.56410256%; + *margin-left: 102.45771959%; } .row-fluid .offset11 { - margin-left: 96.58119658119658%; - *margin-left: 96.47481360247316%; + margin-left: 96.58119658%; + *margin-left: 96.4748136%; } .row-fluid .offset11:first-child { - margin-left: 94.01709401709402%; - *margin-left: 93.91071103837061%; + margin-left: 94.01709402%; + *margin-left: 93.91071104%; } .row-fluid .offset10 { - margin-left: 88.03418803418803%; - *margin-left: 87.92780505546462%; + margin-left: 88.03418803%; + *margin-left: 87.92780506%; } .row-fluid .offset10:first-child { - margin-left: 85.47008547008548%; - *margin-left: 85.36370249136206%; + margin-left: 85.47008547%; + *margin-left: 85.36370249%; } .row-fluid .offset9 { - margin-left: 79.48717948717949%; - *margin-left: 79.38079650845607%; + margin-left: 79.48717949%; + *margin-left: 79.38079651%; } .row-fluid .offset9:first-child { - margin-left: 76.92307692307693%; - *margin-left: 76.81669394435352%; + margin-left: 76.92307692%; + *margin-left: 76.81669394%; } .row-fluid .offset8 { - margin-left: 70.94017094017094%; - *margin-left: 70.83378796144753%; + margin-left: 70.94017094%; + *margin-left: 70.83378796%; } .row-fluid .offset8:first-child { - margin-left: 68.37606837606839%; - *margin-left: 68.26968539734497%; + margin-left: 68.37606838%; + *margin-left: 68.2696854%; } .row-fluid .offset7 { - margin-left: 62.393162393162385%; - *margin-left: 62.28677941443899%; + margin-left: 62.39316239%; + *margin-left: 62.28677941%; } .row-fluid .offset7:first-child { - margin-left: 59.82905982905982%; - *margin-left: 59.72267685033642%; + margin-left: 59.82905983%; + *margin-left: 59.72267685%; } .row-fluid .offset6 { - margin-left: 53.84615384615384%; - *margin-left: 53.739770867430444%; + margin-left: 53.84615385%; + *margin-left: 53.73977087%; } .row-fluid .offset6:first-child { - margin-left: 51.28205128205128%; - *margin-left: 51.175668303327875%; + margin-left: 51.28205128%; + *margin-left: 51.1756683%; } .row-fluid .offset5 { - margin-left: 45.299145299145295%; - *margin-left: 45.1927623204219%; + margin-left: 45.2991453%; + *margin-left: 45.19276232%; } .row-fluid .offset5:first-child { - margin-left: 42.73504273504273%; - *margin-left: 42.62865975631933%; + margin-left: 42.73504274%; + *margin-left: 42.62865976%; } .row-fluid .offset4 { - margin-left: 36.75213675213675%; - *margin-left: 36.645753773413354%; + margin-left: 36.75213675%; + *margin-left: 36.64575377%; } .row-fluid .offset4:first-child { - margin-left: 34.18803418803419%; - *margin-left: 34.081651209310785%; + margin-left: 34.18803419%; + *margin-left: 34.08165121%; } .row-fluid .offset3 { - margin-left: 28.205128205128204%; - *margin-left: 28.0987452264048%; + margin-left: 28.20512821%; + *margin-left: 28.09874523%; } .row-fluid .offset3:first-child { - margin-left: 25.641025641025642%; - *margin-left: 25.53464266230224%; + margin-left: 25.64102564%; + *margin-left: 25.53464266%; } .row-fluid .offset2 { - margin-left: 19.65811965811966%; - *margin-left: 19.551736679396257%; + margin-left: 19.65811966%; + *margin-left: 19.55173668%; } .row-fluid .offset2:first-child { - margin-left: 17.094017094017094%; - *margin-left: 16.98763411529369%; + margin-left: 17.09401709%; + *margin-left: 16.98763412%; } .row-fluid .offset1 { - margin-left: 11.11111111111111%; - *margin-left: 11.004728132387708%; + margin-left: 11.11111111%; + *margin-left: 11.00472813%; } .row-fluid .offset1:first-child { - margin-left: 8.547008547008547%; - *margin-left: 8.440625568285142%; + margin-left: 8.54700855%; + *margin-left: 8.44062557%; } input, textarea, .uneditable-input { margin-left: 0; } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 30px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 1156px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 1056px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 956px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 856px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 756px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 656px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 556px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 456px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 356px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 256px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 156px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 56px; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 30px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 1156px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 1056px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 956px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 856px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 756px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 656px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 556px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 456px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 356px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 256px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 156px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 56px; - } - .thumbnails { - margin-left: -30px; - } - .thumbnails > li { - margin-left: 30px; - } - .row-fluid .thumbnails { - margin-left: 0; - } -} - -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - line-height: 0; - content: ""; - } - .row:after { - clear: both; - } - .row:before, - .row:after { - display: table; - line-height: 0; - content: ""; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; } - .span3 { - width: 166px; + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; } - .span2 { - width: 104px; + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; } - .span1 { - width: 42px; + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; } - .offset12 { - margin-left: 764px; + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; } - .offset11 { - margin-left: 702px; + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; } - .offset10 { - margin-left: 640px; + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; } - .offset9 { - margin-left: 578px; + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; } - .offset8 { - margin-left: 516px; + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; } - .offset7 { - margin-left: 454px; + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; } - .offset6 { - margin-left: 392px; + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; } - .offset5 { - margin-left: 330px; + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; } - .offset4 { - margin-left: 268px; + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; } - .offset3 { - margin-left: 206px; + .thumbnails { + margin-left: -30px; } - .offset2 { - margin-left: 144px; + .thumbnails > li { + margin-left: 30px; } - .offset1 { - margin-left: 82px; + .row-fluid .thumbnails { + margin-left: 0; } +} +@media (min-width: 768px) and (max-width: 979px) { .row { margin-left: -20px; *zoom: 1; @@ -8073,17 +5839,8 @@ a.badge:focus { .row:before, .row:after { display: table; - line-height: 0; content: ""; - } - .row:after { - clear: both; - } - .row:before, - .row:after { - display: table; line-height: 0; - content: ""; } .row:after { clear: both; @@ -8178,432 +5935,172 @@ a.badge:focus { .row-fluid:before, .row-fluid:after { display: table; - line-height: 0; content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid:before, - .row-fluid:after { - display: table; line-height: 0; - content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; - float: left; width: 100%; min-height: 30px; - margin-left: 2.7624309392265194%; - *margin-left: 2.709239449864817%; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.7624309392265194%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851063829%; - } - .row-fluid .span11 { - width: 91.43646408839778%; - *width: 91.38327259903608%; - } - .row-fluid .span10 { - width: 82.87292817679558%; - *width: 82.81973668743387%; - } - .row-fluid .span9 { - width: 74.30939226519337%; - *width: 74.25620077583166%; - } - .row-fluid .span8 { - width: 65.74585635359117%; - *width: 65.69266486422946%; - } - .row-fluid .span7 { - width: 57.18232044198895%; - *width: 57.12912895262725%; - } - .row-fluid .span6 { - width: 48.61878453038674%; - *width: 48.56559304102504%; - } - .row-fluid .span5 { - width: 40.05524861878453%; - *width: 40.00205712942283%; - } - .row-fluid .span4 { - width: 31.491712707182323%; - *width: 31.43852121782062%; - } - .row-fluid .span3 { - width: 22.92817679558011%; - *width: 22.87498530621841%; - } - .row-fluid .span2 { - width: 14.3646408839779%; - *width: 14.311449394616199%; - } - .row-fluid .span1 { - width: 5.801104972375691%; - *width: 5.747913483013988%; - } - .row-fluid .offset12 { - margin-left: 105.52486187845304%; - *margin-left: 105.41847889972962%; - } - .row-fluid .offset12:first-child { - margin-left: 102.76243093922652%; - *margin-left: 102.6560479605031%; - } - .row-fluid .offset11 { - margin-left: 96.96132596685082%; - *margin-left: 96.8549429881274%; - } - .row-fluid .offset11:first-child { - margin-left: 94.1988950276243%; - *margin-left: 94.09251204890089%; - } - .row-fluid .offset10 { - margin-left: 88.39779005524862%; - *margin-left: 88.2914070765252%; - } - .row-fluid .offset10:first-child { - margin-left: 85.6353591160221%; - *margin-left: 85.52897613729868%; - } - .row-fluid .offset9 { - margin-left: 79.8342541436464%; - *margin-left: 79.72787116492299%; - } - .row-fluid .offset9:first-child { - margin-left: 77.07182320441989%; - *margin-left: 76.96544022569647%; - } - .row-fluid .offset8 { - margin-left: 71.2707182320442%; - *margin-left: 71.16433525332079%; - } - .row-fluid .offset8:first-child { - margin-left: 68.50828729281768%; - *margin-left: 68.40190431409427%; - } - .row-fluid .offset7 { - margin-left: 62.70718232044199%; - *margin-left: 62.600799341718584%; - } - .row-fluid .offset7:first-child { - margin-left: 59.94475138121547%; - *margin-left: 59.838368402492065%; - } - .row-fluid .offset6 { - margin-left: 54.14364640883978%; - *margin-left: 54.037263430116376%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121546961326%; - *margin-left: 51.27483249088986%; - } - .row-fluid .offset5 { - margin-left: 45.58011049723757%; - *margin-left: 45.47372751851417%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767955801105%; - *margin-left: 42.71129657928765%; - } - .row-fluid .offset4 { - margin-left: 37.01657458563536%; - *margin-left: 36.91019160691196%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414364640884%; - *margin-left: 34.14776066768544%; - } - .row-fluid .offset3 { - margin-left: 28.45303867403315%; - *margin-left: 28.346655695309746%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773480663%; - *margin-left: 25.584224756083227%; - } - .row-fluid .offset2 { - margin-left: 19.88950276243094%; - *margin-left: 19.783119783707537%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182320442%; - *margin-left: 17.02068884448102%; - } - .row-fluid .offset1 { - margin-left: 11.32596685082873%; - *margin-left: 11.219583872105325%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591160221%; - *margin-left: 8.457152932878806%; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; + -moz-box-sizing: border-box; + box-sizing: border-box; float: left; - width: 100%; - min-height: 30px; - margin-left: 2.7624309392265194%; - *margin-left: 2.709239449864817%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + margin-left: 2.76243094%; + *margin-left: 2.70923945%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.7624309392265194%; + margin-left: 2.76243094%; } .row-fluid .span12 { width: 100%; - *width: 99.94680851063829%; + *width: 99.94680851%; } .row-fluid .span11 { - width: 91.43646408839778%; - *width: 91.38327259903608%; + width: 91.43646409%; + *width: 91.3832726%; } .row-fluid .span10 { - width: 82.87292817679558%; - *width: 82.81973668743387%; + width: 82.87292818%; + *width: 82.81973669%; } .row-fluid .span9 { - width: 74.30939226519337%; - *width: 74.25620077583166%; + width: 74.30939227%; + *width: 74.25620078%; } .row-fluid .span8 { - width: 65.74585635359117%; - *width: 65.69266486422946%; + width: 65.74585635%; + *width: 65.69266486%; } .row-fluid .span7 { - width: 57.18232044198895%; - *width: 57.12912895262725%; + width: 57.18232044%; + *width: 57.12912895%; } .row-fluid .span6 { - width: 48.61878453038674%; - *width: 48.56559304102504%; + width: 48.61878453%; + *width: 48.56559304%; } .row-fluid .span5 { - width: 40.05524861878453%; - *width: 40.00205712942283%; + width: 40.05524862%; + *width: 40.00205713%; } .row-fluid .span4 { - width: 31.491712707182323%; - *width: 31.43852121782062%; + width: 31.49171271%; + *width: 31.43852122%; } .row-fluid .span3 { - width: 22.92817679558011%; - *width: 22.87498530621841%; + width: 22.9281768%; + *width: 22.87498531%; } .row-fluid .span2 { - width: 14.3646408839779%; - *width: 14.311449394616199%; + width: 14.36464088%; + *width: 14.31144939%; } .row-fluid .span1 { - width: 5.801104972375691%; - *width: 5.747913483013988%; + width: 5.80110497%; + *width: 5.74791348%; } .row-fluid .offset12 { - margin-left: 105.52486187845304%; - *margin-left: 105.41847889972962%; + margin-left: 105.52486188%; + *margin-left: 105.4184789%; } .row-fluid .offset12:first-child { - margin-left: 102.76243093922652%; - *margin-left: 102.6560479605031%; + margin-left: 102.76243094%; + *margin-left: 102.65604796%; } .row-fluid .offset11 { - margin-left: 96.96132596685082%; - *margin-left: 96.8549429881274%; + margin-left: 96.96132597%; + *margin-left: 96.85494299%; } .row-fluid .offset11:first-child { - margin-left: 94.1988950276243%; - *margin-left: 94.09251204890089%; + margin-left: 94.19889503%; + *margin-left: 94.09251205%; } .row-fluid .offset10 { - margin-left: 88.39779005524862%; - *margin-left: 88.2914070765252%; + margin-left: 88.39779006%; + *margin-left: 88.29140708%; } .row-fluid .offset10:first-child { - margin-left: 85.6353591160221%; - *margin-left: 85.52897613729868%; + margin-left: 85.63535912%; + *margin-left: 85.52897614%; } .row-fluid .offset9 { - margin-left: 79.8342541436464%; - *margin-left: 79.72787116492299%; + margin-left: 79.83425414%; + *margin-left: 79.72787116%; } .row-fluid .offset9:first-child { - margin-left: 77.07182320441989%; - *margin-left: 76.96544022569647%; + margin-left: 77.0718232%; + *margin-left: 76.96544023%; } .row-fluid .offset8 { - margin-left: 71.2707182320442%; - *margin-left: 71.16433525332079%; + margin-left: 71.27071823%; + *margin-left: 71.16433525%; } .row-fluid .offset8:first-child { - margin-left: 68.50828729281768%; - *margin-left: 68.40190431409427%; + margin-left: 68.50828729%; + *margin-left: 68.40190431%; } .row-fluid .offset7 { - margin-left: 62.70718232044199%; - *margin-left: 62.600799341718584%; + margin-left: 62.70718232%; + *margin-left: 62.60079934%; } .row-fluid .offset7:first-child { - margin-left: 59.94475138121547%; - *margin-left: 59.838368402492065%; - } - .row-fluid .offset6 { - margin-left: 54.14364640883978%; - *margin-left: 54.037263430116376%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121546961326%; - *margin-left: 51.27483249088986%; - } - .row-fluid .offset5 { - margin-left: 45.58011049723757%; - *margin-left: 45.47372751851417%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767955801105%; - *margin-left: 42.71129657928765%; - } - .row-fluid .offset4 { - margin-left: 37.01657458563536%; - *margin-left: 36.91019160691196%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414364640884%; - *margin-left: 34.14776066768544%; - } - .row-fluid .offset3 { - margin-left: 28.45303867403315%; - *margin-left: 28.346655695309746%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773480663%; - *margin-left: 25.584224756083227%; - } - .row-fluid .offset2 { - margin-left: 19.88950276243094%; - *margin-left: 19.783119783707537%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182320442%; - *margin-left: 17.02068884448102%; - } - .row-fluid .offset1 { - margin-left: 11.32596685082873%; - *margin-left: 11.219583872105325%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591160221%; - *margin-left: 8.457152932878806%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 710px; + margin-left: 59.94475138%; + *margin-left: 59.8383684%; } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 648px; + .row-fluid .offset6 { + margin-left: 54.14364641%; + *margin-left: 54.03726343%; } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 586px; + .row-fluid .offset6:first-child { + margin-left: 51.38121547%; + *margin-left: 51.27483249%; } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 524px; + .row-fluid .offset5 { + margin-left: 45.5801105%; + *margin-left: 45.47372752%; } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 462px; + .row-fluid .offset5:first-child { + margin-left: 42.81767956%; + *margin-left: 42.71129658%; } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 400px; + .row-fluid .offset4 { + margin-left: 37.01657459%; + *margin-left: 36.91019161%; } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 338px; + .row-fluid .offset4:first-child { + margin-left: 34.25414365%; + *margin-left: 34.14776067%; } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 276px; + .row-fluid .offset3 { + margin-left: 28.45303867%; + *margin-left: 28.3466557%; } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 214px; + .row-fluid .offset3:first-child { + margin-left: 25.69060773%; + *margin-left: 25.58422476%; } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 152px; + .row-fluid .offset2 { + margin-left: 19.88950276%; + *margin-left: 19.78311978%; } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 90px; + .row-fluid .offset2:first-child { + margin-left: 17.12707182%; + *margin-left: 17.02068884%; } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 28px; + .row-fluid .offset1 { + margin-left: 11.32596685%; + *margin-left: 11.21958387%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591%; + *margin-left: 8.45715293%; } input, textarea, @@ -8674,25 +6171,24 @@ a.badge:focus { width: 28px; } } - @media (max-width: 767px) { body { - padding-right: 20px; padding-left: 20px; + padding-right: 20px; } .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { - margin-right: -20px; margin-left: -20px; + margin-right: -20px; } .container-fluid { padding: 0; } .dl-horizontal dt { float: none; - width: auto; clear: none; + width: auto; text-align: left; } .dl-horizontal dd { @@ -8715,20 +6211,20 @@ a.badge:focus { [class*="span"], .uneditable-input[class*="span"], .row-fluid [class*="span"] { - display: block; float: none; + display: block; width: 100%; margin-left: 0; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } .span12, .row-fluid .span12 { width: 100%; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } .row-fluid [class*="offset"]:first-child { margin-left: 0; @@ -8744,8 +6240,8 @@ a.badge:focus { width: 100%; min-height: 30px; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } .input-prepend input, .input-append input, @@ -8760,8 +6256,8 @@ a.badge:focus { .modal { position: fixed; top: 20px; - right: 20px; left: 20px; + right: 20px; width: auto; margin: 0; } @@ -8772,7 +6268,6 @@ a.badge:focus { top: 20px; } } - @media (max-width: 480px) { .nav-collapse { -webkit-transform: translate3d(0, 0, 0); @@ -8798,13 +6293,13 @@ a.badge:focus { padding-top: 0; } .form-horizontal .form-actions { - padding-right: 10px; padding-left: 10px; + padding-right: 10px; } .media .pull-left, .media .pull-right { - display: block; float: none; + display: block; margin-bottom: 10px; } .media-object { @@ -8813,8 +6308,8 @@ a.badge:focus { } .modal { top: 10px; - right: 10px; left: 10px; + right: 10px; } .modal-header .close { padding: 10px; @@ -8824,7 +6319,6 @@ a.badge:focus { position: static; } } - @media (max-width: 979px) { body { padding-top: 0; @@ -8848,8 +6342,8 @@ a.badge:focus { padding: 0; } .navbar .brand { - padding-right: 10px; padding-left: 10px; + padding-right: 10px; margin: 0 0 0 -5px; } .nav-collapse { @@ -8878,15 +6372,15 @@ a.badge:focus { font-weight: bold; color: #777777; -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } .nav-collapse .btn { padding: 4px 10px 4px; font-weight: normal; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 2px; @@ -8908,26 +6402,26 @@ a.badge:focus { background-color: #111111; } .nav-collapse.in .btn-group { - padding: 0; margin-top: 5px; + padding: 0; } .nav-collapse .dropdown-menu { position: static; top: auto; left: auto; - display: none; float: none; + display: none; max-width: none; - padding: 0; margin: 0 15px; + padding: 0; background-color: transparent; border: none; -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } .nav-collapse .open > .dropdown-menu { display: block; @@ -8950,9 +6444,9 @@ a.badge:focus { margin: 10px 0; border-top: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); + -moz-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); } .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { @@ -8965,227 +6459,141 @@ a.badge:focus { } .nav-collapse, .nav-collapse.collapse { - height: 0; overflow: hidden; + height: 0; } .navbar .btn-navbar { display: block; } .navbar-static .navbar-inner { - padding-right: 10px; padding-left: 10px; + padding-right: 10px; } } - -@media (min-width: 980px) { +@media (min-width: 979px + 1) { .nav-collapse.collapse { height: auto !important; overflow: visible !important; } } - /** * Select2 Bootstrap CSS 1.0 * Compatible with select2 3.3.2 and bootstrap 2.3.1 * MIT License */ - .select2-container { vertical-align: middle; } - .select2-container.input-mini { width: 60px; } - .select2-container.input-small { width: 90px; } - .select2-container.input-medium { width: 150px; } - .select2-container.input-large { width: 210px; } - .select2-container.input-xlarge { width: 270px; } - .select2-container.input-xxlarge { width: 530px; } - .select2-container.input-default { width: 220px; } - .select2-container[class*="span"] { float: none; margin-left: 0; } - .select2-container .select2-choice, .select2-container-multi .select2-choices { height: 28px; line-height: 29px; - background: none; - background-color: #ffffff; border: 1px solid #cccccc; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background: none; + background-color: #ffffff; filter: none; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } - .select2-container .select2-choice div, .select2-container.select2-container-disabled .select2-choice div, .select2-container .select2-choice .select2-arrow, .select2-container.select2-container-disabled .select2-choice .select2-arrow { - background: none; border-left: none; + background: none; filter: none; } - .control-group.error [class^="select2-choice"] { border-color: #b94a48; } - .select2-container-multi .select2-choices .select2-search-field { height: 28px; line-height: 27px; } - .select2-container-active .select2-choice, .select2-container-multi.select2-container-active .select2-choices { border-color: rgba(82, 168, 236, 0.8); outline: none; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); } - [class^="input-"] .select2-container { font-size: 14px; } - .input-prepend [class^="select2-choice"] { - border-bottom-left-radius: 0; border-top-left-radius: 0; + border-bottom-left-radius: 0; } - .input-append [class^="select2-choice"] { border-top-right-radius: 0; border-bottom-right-radius: 0; } - .select2-dropdown-open [class^="select2-choice"] { - border-bottom-right-radius: 0; border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } - .select2-dropdown-open.select2-drop-above [class^="select2-choice"] { - border-top-right-radius: 0; border-top-left-radius: 0; + border-top-right-radius: 0; } - [class^="input-"] .select2-offscreen { position: absolute; } - /** * This stops the quick flash when a native selectbox is shown and * then replaced by a select2 input when javascript kicks in. This can be * removed if javascript is not present */ - select.select2 { height: 28px; visibility: hidden; } - -body { - position: relative; - padding-top: 40px; -} - .list-item { - min-height: 20px; - padding: 19px; padding: 9px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; -webkit-border-radius: 3px; - -moz-border-radius: 4px; - -moz-border-radius: 3px; - border-radius: 4px; + -moz-border-radius: 3px; border-radius: 3px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} - -.list-item blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} - -.list-header, -.edit-header { - position: fixed; - z-index: 1; - width: 100%; - margin-top: 11px; - background-color: #ffffff; -} - -.list-body { - padding-top: 100px; -} - -.edit-header { - padding-top: 10px; -} - -.edit-body { - padding-top: 100px; } - .page-header { - min-height: 40px; - padding-left: 20px; font-family: inherit; - font-size: 17.5px; font-weight: bold; color: inherit; - border-bottom: 2px solid inherit; -} - -.header-rhs { - width: 185px; + font-size: 17.5px; min-height: 40px; - padding-right: 60px; } - -.list-header .header-rhs { - margin: 15px 0; -} - .fixed-header { - position: fixed; - z-index: 1; - width: 100%; - margin-top: 11px; background-color: #ffffff; } - @media (max-width: 979px) { .page-body { padding-top: 0; @@ -9193,177 +6601,33 @@ body { .page-header { position: static; } + .global-search { + padding-right: 1em; + } } - -.header-rhs { - display: block; - width: inherited !important; - padding-right: 20px !important; - padding-bottom: 5px; -} - -.gridStyle { - height: 400px; - margin: auto; - border: 1px solid #d4d4d4; -} - -.gridStyle .ngTopPanel { - background-color: #ffffff; -} - -.gridStyle .ngHeaderCell { - background-color: #e4e4e4; -} - -.gridStyle .fng-right { - text-align: right; -} - -.gridStyle .fng-left { - text-align: left; -} - -.gridStyle .fng-centre, -.gridStyle .fng-center { - text-align: center; -} - -.gridStyle .ngTotalCell { - font-weight: bold; -} - -button.form-btn { - width: 8em; - height: 2em; -} - form.form-horizontal.compact .control-group { margin-bottom: 2px; } - -form.form-horizontal.compact input + .help-block, -form.form-horizontal.compact select + .help-block, -form.form-horizontal.compact textarea + .help-block, -form.form-horizontal.compact .uneditable-input + .help-block, -form.form-horizontal.compact .input-prepend + .help-block, -form.form-horizontal.compact .input-append + .help-block { - margin-top: 0; - margin-bottom: 2px; -} - -form.form-horizontal.compact hr { - margin: 8px 0; -} - form .schema-head, form .sub-doc, form .schema-foot { - min-height: 20px; - margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} - -form .schema-head blockquote, -form .sub-doc blockquote, -form .schema-foot blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} - -form .schema-head { - padding: 4px 180px; - margin-top: 0; - margin-bottom: 5px; - border: 1px solid #ddd; -} - -form .sub-doc { - width: 97%; - padding: 0 5px 0 0; - margin-bottom: 3px; -} - -form .sub-doc-btns { - margin-left: 15px; -} - -form .schema-foot { - padding: 5px 180px; - margin: 5px 0; -} - -form input[type="checkbox"].ng-invalid-required:after { - padding-left: 12px; - font-weight: bold; - color: red; - content: "*"; -} - -form input.ng-invalid-required, -form select.fng-invalid-required { - background-color: rgba(255, 0, 0, 0.1); -} - -form option { - background-color: white; + -moz-border-radius: 4px; + border-radius: 4px; } - -form .fng-select2 { - width: 220px; -} - form .form-inline > .sub-doc { - padding: 0 5px; background-color: #ffffff; - border: none; - box-shadow: none; -} - -.global-search { - position: relative; - float: right; - width: 236px; -} - -.results-container { - position: absolute; - top: 41px; - right: 0; - z-index: 3; - width: 6000px; -} - -.search-results { - float: right; - padding: 5px; - background: white; - border: 1px solid gray; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - -webkit-box-shadow: 10px 10px 10px #888; - box-shadow: 10px 10px 10px #888; } - .search-results .search-result { color: #0088cc; } - .search-results .search-result.focus { - color: white; background-color: #005580; } - @media (max-width: 979px) { .global-search { padding-right: 1em; } -} \ No newline at end of file +} diff --git a/app/css/forms-angular-bs2.less b/app/css/forms-angular-bs2.less new file mode 100644 index 00000000..a958ee69 --- /dev/null +++ b/app/css/forms-angular-bs2.less @@ -0,0 +1,81 @@ +// Twitter Bootstrap 2 version of forms-angular.less + +@import "forms-angular-bs-common.less"; + +@icon-font-path: "../fonts/glyphicons/"; + +@import "../bower_components/bootstrap/less/responsive"; + +@import "../bower_components/select2-bootstrap-css/lib/select2-bootstrap"; + +// To use forms-angular-bs2.css from bower these paths are needed +@iconSpritePath: "../img/glyphicons-halflings.png"; +@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; + +.list-item { + .well-small; +} + +.page-header { + font-family: @headingsFontFamily; + font-weight: @headingsFontWeight; + color: @headingsColor; + font-size: @fontSizeLarge; + min-height: @navbarHeight; +} + +.fixed-header { + background-color: @bodyBackground; +} + +@media (max-width: @navbarCollapseWidth) { + + // UNFIX THE TOPBAR + // ---------------- + // // Remove any padding from the page body + .page-body { + padding-top: 0; + } + // Unfix the navbars + .page-header { + position: static; + } + + .global-search { + padding-right : 1em; + } +} + +form { + &.form-horizontal.compact { + .control-group { + margin-bottom: 2px; + } + } + + .schema-head, .sub-doc, .schema-foot { + background-color: @wellBackground; + border: 1px solid darken(@wellBackground, 7%); + .border-radius(@baseBorderRadius); + } + + .form-inline > .sub-doc { + background-color: @bodyBackground; + } +} + +.search-results { + .search-result { + color: @linkColor; + } + .search-result.focus { + background-color: @linkColorHover; + } +} + +@media (max-width: @navbarCollapseWidth) { + + .global-search { + padding-right : 1em; + } +} diff --git a/app/css/forms-angular-bs3.css b/app/css/forms-angular-bs3.css new file mode 100644 index 00000000..f90eead8 --- /dev/null +++ b/app/css/forms-angular-bs3.css @@ -0,0 +1,6440 @@ +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +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: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +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 { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + 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-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +@media print { + * { + text-shadow: none !important; + color: #000 !important; + background: transparent !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^="javascript:"]:after, + a[href^="#"]: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; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +* { + -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: 62.5%; + -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: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #428bca; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + 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 { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +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: #999999; +} +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: 200; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +cite { + font-style: normal; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-muted { + color: #999999; +} +.text-primary { + color: #428bca; +} +a.text-primary:hover { + color: #3071a9; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #428bca; +} +a.bg-primary:hover { + background-color: #3071a9; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} +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; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 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; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; +} +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: #999999; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; + text-align: right; +} +.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'; +} +blockquote:before, +blockquote:after { + content: ""; +} +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; + white-space: nowrap; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + 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 { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -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-left: 15px; + padding-right: 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: 0%; +} +.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: 0%; +} +.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: 0%; + } + .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: 0%; + } + .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: 0%; + } + .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: 0%; + } + .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: 0%; + } + .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: 0%; + } + .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 { + max-width: 100%; + background-color: transparent; +} +th { + text-align: left; +} +.table { + 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 #dddddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} +.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 #dddddd; +} +.table .table { + background-color: #ffffff; +} +.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 #dddddd; +} +.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 #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.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.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.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.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.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.danger:hover > th { + background-color: #ebcccc; +} +@media (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + overflow-x: scroll; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #dddddd; + -webkit-overflow-scrolling: touch; + } + .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 { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + 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; + /* IE8-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: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-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, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999999; +} +.form-control::-webkit-input-placeholder { + color: #999999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +input[type="date"] { + line-height: 34px; +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + display: block; + min-height: 20px; + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; +} +.radio label, +.checkbox label { + display: inline; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.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; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.has-feedback .form-control-feedback { + position: absolute; + top: 25px; + right: 0; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; +} +.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 { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; +} +.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 { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + border-color: #a94442; + background-color: #f2dede; +} +.has-error .form-control-feedback { + color: #a94442; +} +.form-control-static { + margin-bottom: 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 .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; + padding-left: 0; + vertical-align: middle; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 7px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +.form-horizontal .form-control-static { + padding-top: 7px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + top: 0; + right: 15px; +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333333; + background-color: #ebebeb; + border-color: #adadad; +} +.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: #ffffff; + border-color: #cccccc; +} +.btn-default .badge { + color: #ffffff; + background-color: #333333; +} +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} +.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: #428bca; + border-color: #357ebd; +} +.btn-primary .badge { + color: #428bca; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #47a447; + border-color: #398439; +} +.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: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #269abc; +} +.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: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ed9c28; + border-color: #d58512; +} +.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: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #d2322d; + border-color: #ac2925; +} +.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: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #ffffff; +} +.btn-link { + color: #428bca; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} +.btn-link, +.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: #2a6496; + 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: #999999; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + 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%; + padding-left: 0; + padding-right: 0; +} +.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 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} +@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.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: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro: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"; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.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; + list-style: none; + font-size: 14px; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} +.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: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #428bca; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #999999; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.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:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} +.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-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-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-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 > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 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-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.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-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.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.33; + 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: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + 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-bottom-right-radius: 0; + border-top-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-bottom-left-radius: 0; + border-top-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 { + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 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: #eeeeee; +} +.nav > li.disabled > a { + color: #999999; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} +.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 #dddddd; +} +.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: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.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 #dddddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + 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: #ffffff; + } +} +.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: #ffffff; + background-color: #428bca; +} +.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 { + text-align: center; + margin-bottom: 5px; +} +.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 #dddddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + 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: #ffffff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-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 { + max-height: 340px; + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + 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-left: 0; + padding-right: 0; + } +} +.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; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + height: 50px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: none; +} +.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; + 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-nav.navbar-right:last-child { + margin-right: -15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; +} +@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 .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; + padding-left: 0; + vertical-align: middle; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +.navbar-form .row { + margin-left: 5px; + margin-right: 0; +} +.navbar-form .form-group .input-group { + display: table-cell; +} +.navbar-form .form-group .input-group .input-group-addon { + display: none; +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-form.navbar-right:last-child { + margin-right: -15px; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + 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-left: 15px; + margin-right: 15px; + } + .navbar-text.navbar-right:last-child { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777777; +} +.navbar-default .navbar-nav > li > a { + color: #777777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #dddddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888888; +} +.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 { + background-color: #e7e7e7; + color: #555555; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + 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: #555555; + 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: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777777; +} +.navbar-default .navbar-link:hover { + color: #333333; +} +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #999999; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #999999; +} +.navbar-inverse .navbar-nav > li > a { + color: #999999; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.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 { + background-color: #080808; + color: #ffffff; +} +@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: #999999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + 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: #ffffff; + 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: #444444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #999999; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.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 { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; +} +.breadcrumb > .active { + color: #999999; +} +.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; + line-height: 1.42857143; + text-decoration: none; + color: #428bca; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #2a6496; + background-color: #eeeeee; + border-color: #dddddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.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: #999999; + background-color: #ffffff; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +.label[href]:hover, +.label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #999999; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} +.label-primary { + background-color: #428bca; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} +.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; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #999999; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.container .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #428bca; +} +.thumbnail .caption { + padding: 9px; + color: #333333; +} +.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 { + padding-right: 35px; +} +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #31708f; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; +} +.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; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-object { + display: block; +} +.media-heading { + margin: 0 0 5px; +} +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +a.list-group-item { + color: #555555; +} +a.list-group-item .list-group-item-heading { + color: #333333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} +a.list-group-item.active .list-group-item-heading, +a.list-group-item.active:hover .list-group-item-heading, +a.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +a.list-group-item.active .list-group-item-text, +a.list-group-item.active:hover .list-group-item-text, +a.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.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 { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.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 { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.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 { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.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: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-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 { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table { + margin-bottom: 0; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-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 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 { + border-top: 1px solid #dddddd; +} +.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 { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; + overflow: hidden; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #dddddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.panel-default { + border-color: #dddddd; +} +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} +.panel-primary { + border-color: #428bca; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} +.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-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-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-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-footer + .panel-collapse .panel-body { + border-bottom-color: #ebccd1; +} +.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, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 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: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: auto; + overflow-y: scroll; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: none; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857143px; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 20px; +} +.modal-footer { + margin-top: 15px; + padding: 19px 20px 20px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + 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: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + right: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + background-color: #ffffff; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + 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 { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +.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; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: none; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.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; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} +.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%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 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: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix: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-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix: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-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: 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; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !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; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +body { + position: relative; + padding-top: 40px; +} +.list-item { + 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, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.list-item blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.list-header, +.edit-header { + position: fixed; + width: 100%; + margin-top: 11px; + z-index: 1; + background-color: #ffffff; +} +.list-body { + padding-top: 100px; +} +.edit-header { + padding-top: 10px; +} +.edit-body { + padding-top: 100px; +} +.page-header { + padding-left: 20px; +} +.header-rhs { + width: 226px; + padding-right: 60px; + min-height: 40px; +} +.list-header .header-rhs { + margin: 15px 0; +} +.fixed-header { + position: fixed; + width: 100%; + margin-top: 11px; + z-index: 1; +} +.header-rhs { + width: inherited !important; + padding-right: 20px !important; + padding-bottom: 5px; + display: block; +} +.gridStyle { + border: 1px solid #d4d4d4; + margin: auto; + height: 400px; +} +.gridStyle .ngTopPanel { + background-color: #ffffff; +} +.gridStyle .ngHeaderCell { + background-color: #e4e4e4; +} +.gridStyle .fng-right { + text-align: right; +} +.gridStyle .fng-left { + text-align: left; +} +.gridStyle .fng-centre, +.gridStyle .fng-center { + text-align: center; +} +.gridStyle .ngTotalCell { + font-weight: bold; +} +button.form-btn { + width: 8em; + height: 2em; +} +form.form-horizontal.compact input + .help-block, +form.form-horizontal.compact select + .help-block, +form.form-horizontal.compact textarea + .help-block, +form.form-horizontal.compact .uneditable-input + .help-block, +form.form-horizontal.compact .input-prepend + .help-block, +form.form-horizontal.compact .input-append + .help-block { + margin-top: 0; + margin-bottom: 2px; +} +form.form-horizontal.compact hr { + margin: 8px 0; +} +form .schema-head, +form .sub-doc, +form .schema-foot { + min-height: 20px; + margin-bottom: 20px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +form .schema-head blockquote, +form .sub-doc blockquote, +form .schema-foot blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +form .schema-head { + margin-top: 0; + margin-bottom: 5px; + border: 1px solid #ddd; + padding: 4px 180px; +} +form .sub-doc { + padding: 0 5px 0 0; + width: 97%; + margin-bottom: 3px; +} +form .sub-doc-btns { + margin-left: 15px; +} +form .schema-foot { + padding: 5px 180px; + margin: 5px 0; +} +form input[type="checkbox"].ng-invalid-required:after { + content: "*"; + font-weight: bold; + color: red; + /* padding-left is too small at 12 if inline help is not used*/ + padding-left: 12px; +} +form input.ng-invalid-required, +form select.fng-invalid-required { + background-color: rgba(255, 0, 0, 0.1); +} +form option { + background-color: white; +} +form .fng-select2 { + width: 220px; +} +form .form-inline > .sub-doc { + padding: 0 5px; + border: none; + box-shadow: none; +} +.global-search { + position: relative; + float: right; + width: 236px; +} +.results-container { + width: 6000px; + z-index: 3; + position: absolute; + top: 41px; + right: 0; +} +.search-results { + float: right; + border: 1px solid gray; + -webkit-box-shadow: 10px 10px 10px #888; + box-shadow: 10px 10px 10px #888; + background: white; + padding: 5px; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.search-results .search-result.focus { + color: white; +} +/** + * Select2 Bootstrap CSS + * Compatible with Select2 3.3.2, 3.4.1, 3.4.2 and Twitter Bootstrap 3.0.0 + * MIT License + */ +/** + * Reset Bootstrap 3 .form-control styles which - if applied to the + * original -element the Select2-plugin may be run against - + * are copied to the .select2-container. + * + * 1. Overwrite .select2-container's original display:inline-block + * with Bootstrap 3's default for .form-control, display:block; + * courtesy of @juristr (@see https://github.com/fk/select2-bootstrap-css/pull/1) + */ +.select2-container.form-control { + background: transparent; + border: none; + display: block; + /* 1 */ + margin: 0; + padding: 0; +} +/** + * Adjust Select2 inputs to fit Bootstrap 3 default .form-control appearance. + */ +.select2-container .select2-choices .select2-search-field input, +.select2-container .select2-choice, +.select2-container .select2-choices { + background: none; + padding: 0; + border-color: #cccccc; + border-radius: 4px; + color: #555555; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + background-color: #ffffff; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.select2-search input { + border-color: #cccccc; + border-radius: 4px; + color: #555555; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + background-color: #ffffff; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.select2-container .select2-choices .select2-search-field input { + -webkit-box-shadow: none; + box-shadow: none; +} +/** + * Adjust Select2 input heights to match the Bootstrap default. + */ +.select2-container .select2-choice { + height: 38px; + line-height: 1.42857143; +} +/** + * Address Multi Select2's height which - depending on how many elements have been selected - + * may grown higher than their initial size. + */ +.select2-container.select2-container-multi.form-control { + height: auto; +} +/** + * Address Bootstrap 3 control sizing classes + * @see http://getbootstrap.com/css/#forms-control-sizes + */ +.select2-container.input-sm .select2-choice, +.input-group-sm .select2-container .select2-choice { + height: 30px; + line-height: 1.5; + border-radius: 3px; +} +.select2-container.input-lg .select2-choice, +.input-group-lg .select2-container .select2-choice { + height: 54px; + line-height: 1.33; + border-radius: 6px; +} +.select2-container-multi .select2-choices .select2-search-field input { + height: 36px; +} +.select2-container-multi.input-sm .select2-choices .select2-search-field input, +.input-group-sm .select2-container-multi .select2-choices .select2-search-field input { + height: 28px; +} +.select2-container-multi.input-lg .select2-choices .select2-search-field input, +.input-group-lg .select2-container-multi .select2-choices .select2-search-field input { + height: 52px; +} +/** + * Adjust height and line-height for .select2-search-field amd multi-select Select2 widgets. + * + * 1. Class repetition to address missing .select2-chosen in Select2 < 3.3.2. + */ +.select2-container-multi .select2-choices .select2-search-field input { + margin: 0; +} +.select2-chosen, +.select2-choice > span:first-child, +.select2-container .select2-choices .select2-search-field input { + padding: 8px 12px; +} +.input-sm .select2-chosen, +.input-group-sm .select2-chosen, +.input-sm .select2-choice > span:first-child, +.input-group-sm .select2-choice > span:first-child, +.input-sm .select2-choices .select2-search-field input, +.input-group-sm .select2-choices .select2-search-field input { + padding: 5px 10px; +} +.input-lg .select2-chosen, +.input-group-lg .select2-chosen, +.input-lg .select2-choice > span:first-child, +.input-group-lg .select2-choice > span:first-child, +.input-lg .select2-choices .select2-search-field input, +.input-group-lg .select2-choices .select2-search-field input { + padding: 14px 16px; +} +.select2-container-multi .select2-choices .select2-search-choice { + margin-top: 5px; + margin-bottom: 3px; +} +.select2-container-multi.input-sm .select2-choices .select2-search-choice, +.input-group-sm .select2-container-multi .select2-choices .select2-search-choice { + margin-top: 3px; + margin-bottom: 2px; +} +.select2-container-multi.input-lg .select2-choices .select2-search-choice, +.input-group-lg .select2-container-multi .select2-choices .select2-search-choice { + line-height: 24px; +} +/** + * Adjust the single Select2's dropdown arrow button appearance. + * + * 1. For Select2 v.3.3.2. + */ +.select2-container .select2-choice .select2-arrow, +.select2-container .select2-choice div { + border-left: 1px solid #cccccc; + background: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.select2-dropdown-open .select2-choice .select2-arrow, +.select2-dropdown-open .select2-choice div { + border-left-color: transparent; + background: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +/** + * Adjust the dropdown arrow button icon position for the single-select Select2 elements + * to make it line up vertically now that we increased the height of .select2-container. + * + * 1. Class repetition to address missing .select2-chosen in Select2 v.3.3.2. + */ +.select2-container .select2-choice .select2-arrow b, +.select2-container .select2-choice div b { + background-position: 0 3px; +} +.select2-dropdown-open .select2-choice .select2-arrow b, +.select2-dropdown-open .select2-choice div b { + background-position: -18px 3px; +} +.select2-container.input-sm .select2-choice .select2-arrow b, +.input-group-sm .select2-container .select2-choice .select2-arrow b, +.select2-container.input-sm .select2-choice div b, +.input-group-sm .select2-container .select2-choice div b { + background-position: 0 1px; +} +.select2-dropdown-open.input-sm .select2-choice .select2-arrow b, +.input-group-sm .select2-dropdown-open .select2-choice .select2-arrow b, +.select2-dropdown-open.input-sm .select2-choice div b, +.input-group-sm .select2-dropdown-open .select2-choice div b { + background-position: -18px 1px; +} +.select2-container.input-lg .select2-choice .select2-arrow b, +.input-group-lg .select2-container .select2-choice .select2-arrow b, +.select2-container.input-lg .select2-choice div b, +.input-group-lg .select2-container .select2-choice div b { + background-position: 0 9px; +} +.select2-dropdown-open.input-lg .select2-choice .select2-arrow b, +.input-group-lg .select2-dropdown-open .select2-choice .select2-arrow b, +.select2-dropdown-open.input-lg .select2-choice div b, +.input-group-lg .select2-dropdown-open .select2-choice div b { + background-position: -18px 9px; +} +/** + * Address Bootstrap's validation states and change Select2's border colors and focus states. + * Apply .has-warning, .has-danger or .has-succes to #select2-drop to match Bootstraps' colors. + */ +.has-warning .select2-choice, +.has-warning .select2-choices { + border-color: #c09853; +} +.has-warning .select2-container-active .select2-choice, +.has-warning .select2-container-multi.select2-container-active .select2-choices { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} +.has-warning.select2-drop-active { + border-color: #a47e3c; +} +.has-warning.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #a47e3c; +} +.has-error .select2-choice, +.has-error .select2-choices { + border-color: #b94a48; +} +.has-error .select2-container-active .select2-choice, +.has-error .select2-container-multi.select2-container-active .select2-choices { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} +.has-error.select2-drop-active { + border-color: #953b39; +} +.has-error.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #953b39; +} +.has-success .select2-choice, +.has-success .select2-choices { + border-color: #468847; +} +.has-success .select2-container-active .select2-choice, +.has-success .select2-container-multi.select2-container-active .select2-choices { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} +.has-success.select2-drop-active { + border-color: #356635; +} +.has-success.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #356635; +} +/** + * Make Select2's active-styles - applied to .select2-container when the widget receives focus - + * fit Bootstrap 3's .form-element:focus appearance. + */ +.select2-container-active .select2-choice, +.select2-container-multi.select2-container-active .select2-choices { + border-color: #66afe9; + outline: none; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} +.select2-drop-active { + border-color: #66afe9; +} +.select2-drop-auto-width, +.select2-drop.select2-drop-above.select2-drop-active { + border-top-color: #66afe9; +} +/** + * Select2 widgets in Bootstrap Input Groups + * + * When Select2 widgets are combined with other elements using Bootstrap 3's + * "Input Group" component, we don't want specific edges of the Select2 container + * to have a border-radius. + * + * In Bootstrap 2, input groups required a markup where these style adjustments + * could be bound to a CSS-class identifying if the additional elements are appended, + * prepended or both. + * + * Bootstrap 3 doesn't rely on these classes anymore, so we have to use our own. + * Use .select2-bootstrap-prepend and .select2-bootstrap-append on a Bootstrap 3 .input-group + * to let the contained Select2 widget know which edges should not be rounded as they are + * directly followed by another element. + * + * @see http://getbootstrap.com/components/#input-groups + */ +.input-group.select2-bootstrap-prepend [class^="select2-choice"] { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.input-group.select2-bootstrap-append [class^="select2-choice"] { + border-bottom-right-radius: 0 !important; + border-top-right-radius: 0 !important; +} +.select2-dropdown-open [class^="select2-choice"] { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +/** + * Adjust Select2's choices hover and selected styles to match Bootstrap 3's default dropdown styles. + */ +.select2-results .select2-highlighted { + color: #ffffff; + background-color: #2fa4e7; +} +/** + * Adjust alignment of Bootstrap 3 buttons in Bootstrap 3 Input Groups to address + * Multi Select2's height which - depending on how many elements have been selected - + * may grown higher than their initial size. + */ +.select2-bootstrap-append .select2-container-multiple, +.select2-bootstrap-prepend .select2-container-multiple, +.select2-bootstrap-append .input-group-btn, +.select2-bootstrap-prepend .input-group-btn, +.select2-bootstrap-append .input-group-btn .btn, +.select2-bootstrap-prepend .input-group-btn .btn { + vertical-align: top; +} +/** + * Make Multi Select2's choices match Bootstrap 3's default button styles. + */ +.select2-container-multi .select2-choices .select2-search-choice { + color: #555555; + background: #ffffff; + border-color: rgba(0, 0, 0, 0.1); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: none; + box-shadow: none; +} +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #ebebeb; + border-color: rgba(0, 0, 0, 0.1); + color: #555555; + -webkit-box-shadow: none; + box-shadow: none; +} +/** + * Address Multi Select2's choice close-button vertical alignment. + */ +.select2-search-choice-close { + margin-top: -7px; + top: 50%; +} +/** + * Adjust the single Select2's clear button position (used to reset the select box + * back to the placeholder value and visible once a selection is made + * activated by Select2's "allowClear" option). + */ +.select2-container .select2-choice abbr { + top: 50%; +} +/** + * Adjust "no results" and "selection limit" messages to make use + * of Bootstrap 3's default "Alert" style. + * + * @see http://getbootstrap.com/components/#alerts-default + */ +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-selection-limit { + background-color: #fcf8e3; + color: #c09853; +} +/** + * Address disabled Select2 styles. + * + * 1. For Select2 v.3.3.2. + * 2. Revert border-left:0 inherited from Select2's CSS to prevent the arrow + * from jumping when switching from disabled to enabled state and vice versa. + */ +.select2-container.select2-container-disabled .select2-choice, +.select2-container.select2-container-disabled .select2-choices { + cursor: not-allowed; + background-color: #eeeeee; + border-color: #cccccc; +} +.select2-container.select2-container-disabled .select2-choice .select2-arrow, +.select2-container.select2-container-disabled .select2-choices .select2-arrow, +.select2-container.select2-container-disabled .select2-choice div, +.select2-container.select2-container-disabled .select2-choices div { + background-color: transparent; + border-left: 1px solid transparent; + /* 2 */ +} +/** + * Address Select2's loading indicator position - which should not stick + * to the right edge of Select2's search input. + * + * 1. in .select2-search input + * 2. in Multi Select2's .select2-search-field input + * 3. in the status-message of infinite-scroll with remote data (@see http://ivaynberg.github.io/select2/#infinite) + * + * These styles alter Select2's default background-position of 100% + * and supply the new background-position syntax to browsers which support it: + * + * 1. Android, Safari < 6/Mobile, IE<9: change to a relative background-position of 99% + * 2. Chrome 25+, Firefox 13+, IE 9+, Opera 10.5+: use the new CSS3-background-position syntax + * + * @see http://www.w3.org/TR/css3-background/#background-position + * + * @todo Since both Select2 and Bootstrap 3 only support IE8 and above, + * we could use the :after-pseudo-element to display the loading indicator. + * Alternatively, we could supply an altered loading indicator image which already + * contains an offset to the right. + */ +.select2-search input.select2-active, +.select2-container-multi .select2-choices .select2-search-field input.select2-active, +.select2-more-results.select2-active { + background-position: 99%; + /* 4 */ + background-position: right 4px center; + /* 5 */ +} +.list-item { + padding: 9px; + border-radius: 3px; + min-height: 40px; +} +.page-header { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + color: #317eac; + font-size: 18px; + border-bottom: 2px solid #317eac; + min-height: 50px; +} +.fixed-header { + background-color: #ffffff; +} +@media (max-width: 768px) { + .page-body { + padding-top: 0; + } + .page-header { + position: static; + } + .global-search { + padding-right: 1em; + } +} +form.form-horizontal .form-group { + margin-left: 0; + margin-right: 0; +} +form.form-horizontal.compact .form-group { + margin-bottom: 2px; +} +form .schema-head, +form .sub-doc, +form .schema-foot { + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; +} +form .checkbox input[type="checkbox"] { + margin-left: -5px; +} +form .form-inline > .sub-doc { + background-color: #ffffff; +} +.search-results .search-result { + color: #2fa4e7; +} +.search-results .search-result.focus { + background-color: #157ab5; +} +.form-inline .row { + margin-left: 5px; + margin-right: 0; +} +.form-inline .form-group .input-group { + display: table-cell; +} +.form-inline .form-group .input-group .input-group-addon { + display: none; +} +form .tab-content { + margin-top: 5px; +} +.navbar { + background-image: -webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-image: linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0); + border-bottom: 1px solid #178acc; + filter: none; + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} +.navbar-default .badge { + background-color: #fff; + color: #2fa4e7; +} +.navbar-inverse { + background-image: -webkit-linear-gradient(#04519b, #044687 60%, #033769); + background-image: linear-gradient(#04519b, #044687 60%, #033769); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff033769', GradientType=0); + filter: none; + border-bottom: 1px solid #022241; +} +.navbar-inverse .badge { + background-color: #fff; + color: #033c73; +} +.navbar .navbar-nav > li > a, +.navbar-brand { + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); +} +@media (max-width: 767px) { + .navbar .dropdown-header { + color: #fff; + } +} +.btn { + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); +} +.btn .caret { + border-top-color: #fff; +} +.btn-default { + background-image: -webkit-linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-image: linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0); + filter: none; + border-bottom: 1px solid #e6e6e6; +} +.btn-default:hover { + color: #555555; +} +.btn-default .caret { + border-top-color: #555555; +} +.btn-default { + background-image: -webkit-linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-image: linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0); + filter: none; + border-bottom: 1px solid #e6e6e6; +} +.btn-primary { + background-image: -webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-image: linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0); + filter: none; + border-bottom: 1px solid #178acc; +} +.btn-success { + background-image: -webkit-linear-gradient(#88c149, #73a839 60%, #699934); + background-image: linear-gradient(#88c149, #73a839 60%, #699934); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff88c149', endColorstr='#ff699934', GradientType=0); + filter: none; + border-bottom: 1px solid #59822c; +} +.btn-info { + background-image: -webkit-linear-gradient(#04519b, #033c73 60%, #02325f); + background-image: linear-gradient(#04519b, #033c73 60%, #02325f); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff02325f', GradientType=0); + filter: none; + border-bottom: 1px solid #022241; +} +.btn-warning { + background-image: -webkit-linear-gradient(#ff6707, #dd5600 60%, #c94e00); + background-image: linear-gradient(#ff6707, #dd5600 60%, #c94e00); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff6707', endColorstr='#ffc94e00', GradientType=0); + filter: none; + border-bottom: 1px solid #aa4200; +} +.btn-danger { + background-image: -webkit-linear-gradient(#e12b31, #c71c22 60%, #b5191f); + background-image: linear-gradient(#e12b31, #c71c22 60%, #b5191f); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe12b31', endColorstr='#ffb5191f', GradientType=0); + filter: none; + border-bottom: 1px solid #9a161a; +} +.panel-primary .panel-heading, +.panel-success .panel-heading, +.panel-warning .panel-heading, +.panel-danger .panel-heading, +.panel-info .panel-heading, +.panel-primary .panel-title, +.panel-success .panel-title, +.panel-warning .panel-title, +.panel-danger .panel-title, +.panel-info .panel-title { + color: #fff; +} +.schema-page form { + margin: 0px; +} +.big-box { + height: 19em; + padding: 15px; + margin-bottom: 5px; + margin-top: 32px; +} +.ui-scrollfix { + position: fixed; +} +/* Add additional stylesheets below +-------------------------------------------------- */ +/* + Bootstrap's documentation styles (just to prove I am super lazy) + Special styles for presenting Bootstrap's documentation and examples +*/ +/* Body and structure +-------------------------------------------------- */ +/* Tweak navbar brand link to be super sleek +-------------------------------------------------- */ +body > .navbar { + font-size: 13px; +} +/* Change the docs' brand */ +body > .navbar .brand { + padding-right: 0; + padding-left: 0; + margin-left: 20px; + float: right; + font-weight: bold; + color: #000; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 30px rgba(255, 255, 255, 0.125); + -webkit-transition: all .2s linear; + -moz-transition: all .2s linear; + transition: all .2s linear; +} +body > .navbar .brand:hover { + text-decoration: none; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 30px rgba(255, 255, 255, 0.4); +} +/* Sections +-------------------------------------------------- */ +/* padding for in-page bookmarks and fixed navbar */ +section { + padding-top: 30px; +} +section > .page-header, +section > .lead { + color: #5a5a5a; +} +section > ul li { + margin-bottom: 5px; +} +/* Separators (hr) */ +.docs-separator { + margin: 40px 0 39px; +} +/* Faded out hr */ +hr.soften { + height: 1px; + margin: 70px 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)); + background-image: -ms-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)); + border: 0; +} +/* Footer +-------------------------------------------------- */ +.footer { + text-align: center; + padding: 30px 0; + margin-top: 70px; + border-top: 1px solid #e5e5e5; + background-color: #f5f5f5; +} +.footer p { + margin-bottom: 0; + color: #777; +} +.footer-links { + margin: 10px 0; +} +.footer-links li { + display: inline; + padding: 0 2px; +} +.footer-links li:first-child { + padding-left: 0; +} +/* Sidenav for Docs +-------------------------------------------------- */ +.docs-sidenav { + width: 228px; + margin: 30px 0 0; + padding: 0; + background-color: #fff; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} +.docs-sidenav > li > a { + display: block; + width: 190px \9; + margin: 0 0 -1px; + padding: 8px 14px; + border: 1px solid #e5e5e5; +} +.docs-sidenav > li:first-child > a { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} +.docs-sidenav > li:last-child > a { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.docs-sidenav > .active > a { + position: relative; + z-index: 2; + padding: 9px 15px; + border: 0; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.1), inset -1px 0 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.1), inset -1px 0 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.1), inset -1px 0 0 rgba(0, 0, 0, 0.1); +} +/* Chevrons */ +.docs-sidenav .icon-chevron-right { + float: right; + margin-top: 2px; + margin-right: -6px; + opacity: .25; +} +.docs-sidenav > li > a:hover { + background-color: #f5f5f5; +} +.docs-sidenav a:hover .icon-chevron-right { + opacity: .5; +} +.docs-sidenav .active .icon-chevron-right, +.docs-sidenav .active a:hover .icon-chevron-right { + background-image: url(../img/glyphicons-halflings-white.png); + opacity: 1; +} +.docs-sidenav.affix { + top: 40px; +} +.docs-sidenav.affix-bottom { + position: absolute; + top: auto; + bottom: 270px; +} +.ghb { + display: none; +} +@media (min-width: 1300px) { + .ghb { + display: block; + } +} +.big-box { + height: 19em; + padding: 15px; +} +.docs-sidenav.ui-scrollfix { + top: 80px; +} diff --git a/app/demo/css/demo-bs3.less b/app/demo/css/demo-bs3.less new file mode 100644 index 00000000..9c254822 --- /dev/null +++ b/app/demo/css/demo-bs3.less @@ -0,0 +1,15 @@ +@import "../../css/forms-angular-bs3.less"; + +// Use a free Bootswatch (http://bootswatch.com/) theme for the demo +@import "bootswatch-cerulean-3.1.1.less"; +@import "variables-cerulean-3.1.1.less"; +@import "demo-bs-common.less"; + +.big-box { + height: 19em; + padding : 15px; +} + +.docs-sidenav.ui-scrollfix { + top: 80px; +} diff --git a/app/css/variables.less b/app/demo/css/variables-cerulean-2.3.2.less similarity index 100% rename from app/css/variables.less rename to app/demo/css/variables-cerulean-2.3.2.less diff --git a/app/demo/css/variables-cerulean-3.1.1.less b/app/demo/css/variables-cerulean-3.1.1.less new file mode 100644 index 00000000..e6c639a4 --- /dev/null +++ b/app/demo/css/variables-cerulean-3.1.1.less @@ -0,0 +1,829 @@ +// Cerulean 3.1.1 +// Variables +// -------------------------------------------------- + + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +@gray-darker: lighten(#000, 13.5%); // #222 +@gray-dark: lighten(#000, 20%); // #333 +@gray: lighten(#000, 33.5%); // #555 +@gray-light: lighten(#000, 60%); // #999 +@gray-lighter: lighten(#000, 93.5%); // #eee + +@brand-primary: #2FA4E7; +@brand-success: #73A839; +@brand-info: #033C73; +@brand-warning: #DD5600; +@brand-danger: #C71C22; + + +//== Scaffolding +// +// ## Settings for some of the most global styles. + +//** Background color for ``. +@body-bg: #fff; +//** Global text color on ``. +@text-color: @gray; + +//** Global textual link color. +@link-color: @brand-primary; +//** Link hover color set via `darken()` function. +@link-hover-color: darken(@link-color, 15%); + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; +@font-family-serif: Georgia, "Times New Roman", Times, serif; +//** Default monospace fonts for ``, ``, and `
`.
+@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
+@font-family-base:        @font-family-sans-serif;
+
+@font-size-base:          14px;
+@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
+@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
+
+@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
+@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
+@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
+@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
+@font-size-h5:            @font-size-base;
+@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+@line-height-base:        1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+@headings-font-family:    @font-family-base;
+@headings-font-weight:    500;
+@headings-line-height:    1.1;
+@headings-color:          #317EAC;
+
+
+//-- Iconography
+//
+//## Specify custom locations of the include Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+@icon-font-path:          "../fonts/";
+@icon-font-name:          "glyphicons-halflings-regular";
+@icon-font-svg-id:        "glyphicons_halflingsregular";
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+@padding-base-vertical:     8px;
+@padding-base-horizontal:   12px;
+
+@padding-large-vertical:    14px;
+@padding-large-horizontal:  16px;
+
+@padding-small-vertical:    5px;
+@padding-small-horizontal:  10px;
+
+@padding-xs-vertical:       1px;
+@padding-xs-horizontal:     5px;
+
+@line-height-large:         1.33;
+@line-height-small:         1.5;
+
+@border-radius-base:        4px;
+@border-radius-large:       6px;
+@border-radius-small:       3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+@component-active-color:    #fff;
+//** Global background color for active items (e.g., navs or dropdowns).
+@component-active-bg:       @brand-primary;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+@caret-width-base:          4px;
+//** Carets increase slightly in size for larger components.
+@caret-width-large:         5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ``s.
+@table-cell-padding:            8px;
+//** Padding for cells in `.table-condensed`.
+@table-condensed-cell-padding:  5px;
+
+//** Default background color used for all tables.
+@table-bg:                      transparent;
+//** Background color used for `.table-striped`.
+@table-bg-accent:               #f9f9f9;
+//** Background color used for `.table-hover`.
+@table-bg-hover:                #f5f5f5;
+@table-bg-active:               @table-bg-hover;
+
+//** Border color for table and cell borders.
+@table-border-color:            #ddd;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+@btn-font-weight:                normal;
+
+@btn-default-color:              @text-color;
+@btn-default-bg:                 #fff;
+@btn-default-border:             rgba(0, 0, 0, 0.1);
+
+@btn-primary-color:              #fff;
+@btn-primary-bg:                 @brand-primary;
+@btn-primary-border:             @btn-primary-bg;
+
+@btn-success-color:              #fff;
+@btn-success-bg:                 @brand-success;
+@btn-success-border:             @btn-success-bg;
+
+@btn-info-color:                 #fff;
+@btn-info-bg:                    @brand-info;
+@btn-info-border:                @btn-info-bg;
+
+@btn-warning-color:              #fff;
+@btn-warning-bg:                 @brand-warning;
+@btn-warning-border:             @btn-warning-bg;
+
+@btn-danger-color:               #fff;
+@btn-danger-bg:                  @brand-danger;
+@btn-danger-border:              @btn-danger-bg;
+
+@btn-link-disabled-color:        @gray-light;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+@input-bg:                       #fff;
+//** `` background color
+@input-bg-disabled:              @gray-lighter;
+
+//** Text color for ``s
+@input-color:                    @text-color;
+//** `` border color
+@input-border:                   #ccc;
+//** `` border radius
+@input-border-radius:            @border-radius-base;
+//** Border color for inputs on focus
+@input-border-focus:             #66afe9;
+
+//** Placeholder text color
+@input-color-placeholder:        @gray-light;
+
+//** Default `.form-control` height
+@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
+//** Large `.form-control` height
+@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
+//** Small `.form-control` height
+@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
+
+@legend-color:                   @text-color;
+@legend-border-color:            #e5e5e5;
+
+//** Background color for textual input addons
+@input-group-addon-bg:           @gray-lighter;
+//** Border color for textual input addons
+@input-group-addon-border-color: @input-border;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+@dropdown-bg:                    #fff;
+//** Dropdown menu `border-color`.
+@dropdown-border:                rgba(0,0,0,.15);
+//** Dropdown menu `border-color` **for IE8**.
+@dropdown-fallback-border:       #ccc;
+//** Divider color for between dropdown items.
+@dropdown-divider-bg:            #e5e5e5;
+
+//** Dropdown link text color.
+@dropdown-link-color:            @gray-dark;
+//** Hover color for dropdown links.
+@dropdown-link-hover-color:      #fff;
+//** Hover background for dropdown links.
+@dropdown-link-hover-bg:         @dropdown-link-active-bg;
+
+//** Active dropdown menu item text color.
+@dropdown-link-active-color:     #fff;
+//** Active dropdown menu item background color.
+@dropdown-link-active-bg:        @component-active-bg;
+
+//** Disabled dropdown menu item background color.
+@dropdown-link-disabled-color:   @text-muted;
+
+//** Text color for headers within dropdown menus.
+@dropdown-header-color:          @text-muted;
+
+// Note: Deprecated @dropdown-caret-color as of v3.1.0
+@dropdown-caret-color:           #000;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+@zindex-navbar:            1000;
+@zindex-dropdown:          1000;
+@zindex-popover:           1010;
+@zindex-tooltip:           1030;
+@zindex-navbar-fixed:      1030;
+@zindex-modal-background:  1040;
+@zindex-modal:             1050;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1
+@screen-xs:                  480px;
+@screen-xs-min:              @screen-xs;
+@screen-phone:               @screen-xs-min;
+
+// Small screen / tablet
+// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1
+@screen-sm:                  768px;
+@screen-sm-min:              @screen-sm;
+@screen-tablet:              @screen-sm-min;
+
+// Medium screen / desktop
+// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1
+@screen-md:                  992px;
+@screen-md-min:              @screen-md;
+@screen-desktop:             @screen-md-min;
+
+// Large screen / wide desktop
+// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1
+@screen-lg:                  1200px;
+@screen-lg-min:              @screen-lg;
+@screen-lg-desktop:          @screen-lg-min;
+
+// So media queries don't overlap when required, provide a maximum
+@screen-xs-max:              (@screen-sm-min - 1);
+@screen-sm-max:              (@screen-md-min - 1);
+@screen-md-max:              (@screen-lg-min - 1);
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+@grid-columns:              12;
+//** Padding between columns. Gets divided in half for the left and right.
+@grid-gutter-width:         30px;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+@grid-float-breakpoint:     @screen-sm-min;
+//** Point at which the navbar begins collapsing.
+@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+@container-tablet:             ((720px + @grid-gutter-width));
+//** For `@screen-sm-min` and up.
+@container-sm:                 @container-tablet;
+
+// Medium screen / desktop
+@container-desktop:            ((940px + @grid-gutter-width));
+//** For `@screen-md-min` and up.
+@container-md:                 @container-desktop;
+
+// Large screen / wide desktop
+@container-large-desktop:      ((1140px + @grid-gutter-width));
+//** For `@screen-lg-min` and up.
+@container-lg:                 @container-large-desktop;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+@navbar-height:                    50px;
+@navbar-margin-bottom:             @line-height-computed;
+@navbar-border-radius:             @border-radius-base;
+@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));
+@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
+@navbar-collapse-max-height:       340px;
+
+@navbar-default-color:             #ddd;
+@navbar-default-bg:                @brand-primary;
+@navbar-default-border:            darken(@navbar-default-bg, 6.5%);
+
+// Navbar links
+@navbar-default-link-color:                #fff;
+@navbar-default-link-hover-color:          #fff;
+@navbar-default-link-hover-bg:             darken(@navbar-default-bg, 10%);
+@navbar-default-link-active-color:         #fff;
+@navbar-default-link-active-bg:            darken(@navbar-default-bg, 10%);
+@navbar-default-link-disabled-color:       #ddd;
+@navbar-default-link-disabled-bg:          transparent;
+
+// Navbar brand label
+@navbar-default-brand-color:               @navbar-default-link-color;
+@navbar-default-brand-hover-color:         #fff;
+@navbar-default-brand-hover-bg:            none;
+
+// Navbar toggle
+@navbar-default-toggle-hover-bg:           darken(@navbar-default-bg, 10%);
+@navbar-default-toggle-icon-bar-bg:        #fff;
+@navbar-default-toggle-border-color:       darken(@navbar-default-bg, 10%);
+
+
+// Inverted navbar
+// Reset inverted navbar basics
+@navbar-inverse-color:                      #fff;
+@navbar-inverse-bg:                         @brand-info;
+@navbar-inverse-border:                     darken(@navbar-inverse-bg, 5%);
+
+// Inverted navbar links
+@navbar-inverse-link-color:                 #fff;
+@navbar-inverse-link-hover-color:           #fff;
+@navbar-inverse-link-hover-bg:              darken(@navbar-inverse-bg, 5%);
+@navbar-inverse-link-active-color:          #fff;
+@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 5%);
+@navbar-inverse-link-disabled-color:        #ccc;
+@navbar-inverse-link-disabled-bg:           transparent;
+
+// Inverted navbar brand label
+@navbar-inverse-brand-color:                @navbar-inverse-link-color;
+@navbar-inverse-brand-hover-color:          #fff;
+@navbar-inverse-brand-hover-bg:             none;
+
+// Inverted navbar toggle
+@navbar-inverse-toggle-hover-bg:            darken(@navbar-inverse-bg, 5%);
+@navbar-inverse-toggle-icon-bar-bg:         #fff;
+@navbar-inverse-toggle-border-color:        darken(@navbar-inverse-bg, 5%);
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+@nav-link-padding:                          10px 15px;
+@nav-link-hover-bg:                         @gray-lighter;
+
+@nav-disabled-link-color:                   @gray-light;
+@nav-disabled-link-hover-color:             @gray-light;
+
+@nav-open-link-hover-color:                 #fff;
+
+//== Tabs
+@nav-tabs-border-color:                     #ddd;
+
+@nav-tabs-link-hover-border-color:          @gray-lighter;
+
+@nav-tabs-active-link-hover-bg:             @body-bg;
+@nav-tabs-active-link-hover-color:          @gray;
+@nav-tabs-active-link-hover-border-color:   #ddd;
+
+@nav-tabs-justified-link-border-color:            #ddd;
+@nav-tabs-justified-active-link-border-color:     @body-bg;
+
+//== Pills
+@nav-pills-border-radius:                   @border-radius-base;
+@nav-pills-active-link-hover-bg:            @component-active-bg;
+@nav-pills-active-link-hover-color:         @component-active-color;
+
+
+//== Pagination
+//
+//##
+
+@pagination-color:                     @link-color;
+@pagination-bg:                        #fff;
+@pagination-border:                    #ddd;
+
+@pagination-hover-color:               @link-hover-color;
+@pagination-hover-bg:                  @gray-lighter;
+@pagination-hover-border:              #ddd;
+
+@pagination-active-color:              @gray-light;
+@pagination-active-bg:                 #f5f5f5;
+@pagination-active-border:             @pagination-hover-border;
+
+@pagination-disabled-color:            @gray-light;
+@pagination-disabled-bg:               #fff;
+@pagination-disabled-border:           #ddd;
+
+
+//== Pager
+//
+//##
+
+@pager-bg:                             @pagination-bg;
+@pager-border:                         @pagination-border;
+@pager-border-radius:                  15px;
+
+@pager-hover-bg:                       @pagination-hover-bg;
+
+@pager-active-bg:                      @pagination-active-bg;
+@pager-active-color:                   @pagination-active-color;
+
+@pager-disabled-color:                 @gray-light;
+
+
+//== Jumbotron
+//
+//##
+
+@jumbotron-padding:              30px;
+@jumbotron-color:                inherit;
+@jumbotron-bg:                   @gray-lighter;
+@jumbotron-heading-color:        inherit;
+@jumbotron-font-size:            ceil((@font-size-base * 1.5));
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+@state-success-text:             #468847;
+@state-success-bg:               #dff0d8;
+@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
+
+@state-info-text:                #3a87ad;
+@state-info-bg:                  #d9edf7;
+@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
+
+@state-warning-text:             #c09853;
+@state-warning-bg:               #fcf8e3;
+@state-warning-border:           darken(spin(@state-warning-bg, -10), 3%);
+
+@state-danger-text:              #b94a48;
+@state-danger-bg:                #f2dede;
+@state-danger-border:            darken(spin(@state-danger-bg, -10), 3%);
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+@tooltip-max-width:           200px;
+//** Tooltip text color
+@tooltip-color:               #fff;
+//** Tooltip background color
+@tooltip-bg:                  rgba(0,0,0,.9);
+@tooltip-opacity:             .9;
+
+//** Tooltip arrow width
+@tooltip-arrow-width:         5px;
+//** Tooltip arrow color
+@tooltip-arrow-color:         @tooltip-bg;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+@popover-bg:                          #fff;
+//** Popover maximum width
+@popover-max-width:                   276px;
+//** Popover border color
+@popover-border-color:                rgba(0,0,0,.2);
+//** Popover fallback border color
+@popover-fallback-border-color:       #ccc;
+
+//** Popover title background color
+@popover-title-bg:                    darken(@popover-bg, 3%);
+
+//** Popover arrow width
+@popover-arrow-width:                 10px;
+//** Popover arrow color
+@popover-arrow-color:                 #fff;
+
+//** Popover outer arrow width
+@popover-arrow-outer-width:           (@popover-arrow-width + 1);
+//** Popover outer arrow color
+@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
+//** Popover outer arrow fallback color
+@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+@label-default-bg:            @gray-light;
+//** Primary label background color
+@label-primary-bg:            @brand-primary;
+//** Success label background color
+@label-success-bg:            @brand-success;
+//** Info label background color
+@label-info-bg:               @brand-info;
+//** Warning label background color
+@label-warning-bg:            @brand-warning;
+//** Danger label background color
+@label-danger-bg:             @brand-danger;
+
+//** Default label text color
+@label-color:                 #fff;
+//** Default text color of a linked label
+@label-link-hover-color:      #fff;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+@modal-inner-padding:         20px;
+
+//** Padding applied to the modal title
+@modal-title-padding:         15px;
+//** Modal title line-height
+@modal-title-line-height:     @line-height-base;
+
+//** Background color of modal content area
+@modal-content-bg:                             #fff;
+//** Modal content border color
+@modal-content-border-color:                   rgba(0,0,0,.2);
+//** Modal content border color **for IE8**
+@modal-content-fallback-border-color:          #999;
+
+//** Modal backdrop background color
+@modal-backdrop-bg:           #000;
+//** Modal backdrop opacity
+@modal-backdrop-opacity:      .5;
+//** Modal header border color
+@modal-header-border-color:   #e5e5e5;
+//** Modal footer border color
+@modal-footer-border-color:   @modal-header-border-color;
+
+@modal-lg:                    900px;
+@modal-md:                    600px;
+@modal-sm:                    300px;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+@alert-padding:               15px;
+@alert-border-radius:         @border-radius-base;
+@alert-link-font-weight:      bold;
+
+@alert-success-bg:            @state-success-bg;
+@alert-success-text:          @state-success-text;
+@alert-success-border:        @state-success-border;
+
+@alert-info-bg:               @state-info-bg;
+@alert-info-text:             @state-info-text;
+@alert-info-border:           @state-info-border;
+
+@alert-warning-bg:            @state-warning-bg;
+@alert-warning-text:          @state-warning-text;
+@alert-warning-border:        @state-warning-border;
+
+@alert-danger-bg:             @state-danger-bg;
+@alert-danger-text:           @state-danger-text;
+@alert-danger-border:         @state-danger-border;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+@progress-bg:                 #f5f5f5;
+//** Progress bar text color
+@progress-bar-color:          #fff;
+
+//** Default progress bar color
+@progress-bar-bg:             @brand-primary;
+//** Success progress bar color
+@progress-bar-success-bg:     @brand-success;
+//** Warning progress bar color
+@progress-bar-warning-bg:     @brand-warning;
+//** Danger progress bar color
+@progress-bar-danger-bg:      @brand-danger;
+//** Info progress bar color
+@progress-bar-info-bg:        @brand-info;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+@list-group-bg:                 #fff;
+//** `.list-group-item` border color
+@list-group-border:             #ddd;
+//** List group border radius
+@list-group-border-radius:      @border-radius-base;
+
+//** Background color of single list elements on hover
+@list-group-hover-bg:           #f5f5f5;
+//** Text color of active list elements
+@list-group-active-color:       @component-active-color;
+//** Background color of active list elements
+@list-group-active-bg:          @component-active-bg;
+//** Border color of active list elements
+@list-group-active-border:      @list-group-active-bg;
+@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
+
+@list-group-link-color:         #555;
+@list-group-link-heading-color: #333;
+
+
+//== Panels
+//
+//##
+
+@panel-bg:                    #fff;
+@panel-body-padding:          15px;
+@panel-border-radius:         @border-radius-base;
+
+//** Border color for elements within panels
+@panel-inner-border:          #ddd;
+@panel-footer-bg:             #f5f5f5;
+
+@panel-default-text:          @text-color;
+@panel-default-border:        #ddd;
+@panel-default-heading-bg:    #f5f5f5;
+
+@panel-primary-text:          #fff;
+@panel-primary-border:        @panel-default-border;
+@panel-primary-heading-bg:    @brand-primary;
+
+@panel-success-text:          @state-success-text;
+@panel-success-border:        @panel-default-border;
+@panel-success-heading-bg:    @brand-success;
+
+@panel-info-text:             @state-info-text;
+@panel-info-border:           @panel-default-border;
+@panel-info-heading-bg:       @brand-info;
+
+@panel-warning-text:          @state-warning-text;
+@panel-warning-border:        @panel-default-border;
+@panel-warning-heading-bg:    @brand-warning;
+
+@panel-danger-text:           @state-danger-text;
+@panel-danger-border:         @panel-default-border;
+@panel-danger-heading-bg:     @brand-danger;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+@thumbnail-padding:           4px;
+//** Thumbnail background color
+@thumbnail-bg:                @body-bg;
+//** Thumbnail border color
+@thumbnail-border:            #ddd;
+//** Thumbnail border radius
+@thumbnail-border-radius:     @border-radius-base;
+
+//** Custom text color for thumbnail captions
+@thumbnail-caption-color:     @text-color;
+//** Padding around the thumbnail caption
+@thumbnail-caption-padding:   9px;
+
+
+//== Wells
+//
+//##
+
+@well-bg:                     #f5f5f5;
+@well-border:                 darken(@well-bg, 7%);
+
+
+//== Badges
+//
+//##
+
+@badge-color:                 #fff;
+//** Linked badge text color on hover
+@badge-link-hover-color:      #fff;
+@badge-bg:                    @brand-primary;
+
+//** Badge text color in active nav link
+@badge-active-color:          @link-color;
+//** Badge background color in active nav link
+@badge-active-bg:             #fff;
+
+@badge-font-weight:           bold;
+@badge-line-height:           1;
+@badge-border-radius:         10px;
+
+
+//== Breadcrumbs
+//
+//##
+
+@breadcrumb-padding-vertical:   8px;
+@breadcrumb-padding-horizontal: 15px;
+//** Breadcrumb background color
+@breadcrumb-bg:                 #f5f5f5;
+//** Breadcrumb text color
+@breadcrumb-color:              #ccc;
+//** Text color of current page in the breadcrumb
+@breadcrumb-active-color:       @gray-light;
+//** Textual separator for between breadcrumb elements
+@breadcrumb-separator:          "/";
+
+
+//== Carousel
+//
+//##
+
+@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
+
+@carousel-control-color:                      #fff;
+@carousel-control-width:                      15%;
+@carousel-control-opacity:                    .5;
+@carousel-control-font-size:                  20px;
+
+@carousel-indicator-active-bg:                #fff;
+@carousel-indicator-border-color:             #fff;
+
+@carousel-caption-color:                      #fff;
+
+
+//== Close
+//
+//##
+
+@close-font-weight:           bold;
+@close-color:                 #000;
+@close-text-shadow:           0 1px 0 #fff;
+
+
+//== Code
+//
+//##
+
+@code-color:                  #c7254e;
+@code-bg:                     #f9f2f4;
+
+@kbd-color:                   #fff;
+@kbd-bg:                      #333;
+
+@pre-bg:                      #f5f5f5;
+@pre-color:                   @gray-dark;
+@pre-border-color:            #ccc;
+@pre-scrollable-max-height:   340px;
+
+
+//== Type
+//
+//##
+
+//** Text muted color
+@text-muted:                  @gray-light;
+//** Abbreviations and acronyms border color
+@abbr-border-color:           @gray-light;
+//** Headings small color
+@headings-small-color:        @gray-light;
+//** Blockquote small color
+@blockquote-small-color:      @gray-light;
+//** Blockquote font size
+@blockquote-font-size:        (@font-size-base * 1.25);
+//** Blockquote border color
+@blockquote-border-color:     @gray-lighter;
+//** Page header border color
+@page-header-border-color:    @gray-lighter;
+
+
+//== Miscellaneous
+//
+//##
+
+//** Horizontal line color.
+@hr-border:                   @gray-lighter;
+
+//** Horizontal offset for forms and lists.
+@component-offset-horizontal: 180px;
diff --git a/app/demo/demo.js b/app/demo/demo.js
index a70ad611..b828d346 100644
--- a/app/demo/demo.js
+++ b/app/demo/demo.js
@@ -1,38 +1,27 @@
 'use strict';
-angular.module('HashBangURLs', []).config(['$locationProvider', function($location) {
-    $location.hashPrefix('!');
-}]);
-
-var myDemoApp = angular.module('myDemoApp', ['formsAngular','HashBangURLs']);
-
-myDemoApp.config(['$routeProvider', function ($routeProvider) {
 
-        $routeProvider.
-            when('/index', {templateUrl: 'partials/landing-page.html'}).
-            when('/get-started', {templateUrl: 'partials/get-started.html'}).
-            when('/forms', {templateUrl: 'partials/forms.html'}).
-            when('/schemas', {templateUrl: 'partials/schemas.html'}).
-            when('/reporting', {templateUrl: 'partials/reporting.html'}).
-            when('/more', {templateUrl: 'partials/more.html'}).
-            when('/in-the-wild', {templateUrl: 'partials/in-the-wild.html'}).
-            when('/examples', {templateUrl: 'partials/examples.html'}).
-            when('/api-docs', {templateUrl: 'partials/api-docs.html'}).
-            when('/404', {templateUrl: 'partials/404.html'}).
-            when('/z_custom_form/new', {templateUrl: 'partials/custom-new.html'}).            // example view override
-            when('/z_custom_form/:id/edit', {templateUrl: 'partials/custom-edit.html'}).      // example view override
-            when('/z_custom_form/:form/new', {templateUrl: 'partials/custom-new.html'}).      // example view override with specified form content
-            when('/z_custom_form/:form/:id/edit', {templateUrl: 'partials/custom-edit.html'}).// example view override with specified form content
+var myDemoApp = angular.module('myDemoApp', ['formsAngular']);
 
-            // This next block is the default forms angular routing.  Can't figure out how to get it to work from that module.
-            when('/analyse/:model/:reportSchemaName', {templateUrl: 'partials/base-analysis.html'}).
-            when('/analyse/:model', {templateUrl: 'partials/base-analysis.html'}).
-            when('/:model/:id/edit', {templateUrl: 'partials/base-edit.html'}).
-            when('/:model/new', {templateUrl: 'partials/base-edit.html'}).
-            when('/:model', {templateUrl: 'partials/base-list.html'}).
-            when('/:model/:form/:id/edit', {templateUrl: 'partials/base-edit.html'}).  // non default form (different fields etc)
-            when('/:model/:form/new', {templateUrl: 'partials/base-edit.html'}).       // non default form (different fields etc)
-            when('/:model/:form', {templateUrl: 'partials/base-list.html'}).           // list page with links to non default form
+myDemoApp.config(['formRoutesProvider', function (formRoutes) {
+  formRoutes.setRoutes([
+    {route: '/index',                         options: {templateUrl: 'partials/landing-page.html'}},
+    {route: '/get-started',                   options: {templateUrl: 'partials/get-started.html'}},
+    {route: '/forms',                         options: {templateUrl: 'partials/forms.html'}},
+    {route: '/schemas',                       options: {templateUrl: 'partials/schemas.html'}},
+    {route: '/reporting',                     options: {templateUrl: 'partials/reporting.html'}},
+    {route: '/more',                          options: {templateUrl: 'partials/more.html'}},
+    {route: '/in-the-wild',                   options: {templateUrl: 'partials/in-the-wild.html'}},
+    {route: '/examples',                      options: {templateUrl: 'partials/examples.html'}},
+    {route: '/api-docs',                      options: {templateUrl: 'partials/api-docs.html'}},
+    {route: '/404',                           options: {templateUrl: 'partials/404.html'}},
+    {route: '/z_custom_form/new',             options: {templateUrl: 'partials/custom-new.html'}},            // example view override
+    {route: '/z_custom_form/:id/edit',        options: {templateUrl: 'partials/custom-edit.html'}},      // example view override
+    {route: '/z_custom_form/:form/new',       options: {templateUrl: 'partials/custom-new.html'}},      // example view override with specified form content
+    {route: '/z_custom_form/:form/:id/edit',  options: {templateUrl: 'partials/custom-edit.html'}} // example view override with specified form content
+  ], '/index');
+}]);
 
-            otherwise({redirectTo: '/index'});
-    }]
-);
+formsAngular.config(['urlServiceProvider', 'cssFrameworkServiceProvider', function (urlService, cssFrameworkService) {
+  urlService.setOptions({html5Mode: false, hashPrefix: '!'});
+  cssFrameworkService.setOptions({framework: 'bs2'});  // e2e tests depend on this being bs2
+}]);
diff --git a/app/demo/directives/affix.js b/app/demo/directives/affix.js
index cde0f628..44bb615e 100644
--- a/app/demo/directives/affix.js
+++ b/app/demo/directives/affix.js
@@ -1,113 +1,110 @@
+'use strict';
 
 myDemoApp
-    .directive('affix', ['$compile', '$location', function($compile, $location) {
+  .directive('affix', ['$compile', 'cssFrameworkService', function ($compile, cssFrameworkService) {
+    return {
+      restrict: 'E',
+      replace: true,
+      templateUrl: '/demo/template/affix-' + cssFrameworkService.framework() + '.html',
+      compile: function () {
+        var body = $('body');
+        var affixes = [];
         return {
-            restrict: 'E',
-            replace: true,
-            template: '',
-            compile: function() {
-                var body = $('body');
-                var affixes = [];
-                return {
-                    post: function(scope, element) {
-                        scope.affixes = affixes;
-                        $('.affix-section', body).find('section').each(function() {
-                            var section = $(this);
-                            affixes.push({
-                                id : section.attr('id'),
-                                name : section.attr('name')
-                            });
-                            $compile(element)(scope);
-                        });
+          post: function (scope, element) {
+            scope.affixes = affixes;
+            $('.affix-section', body).find('section').each(function () {
+              var section = $(this);
+              affixes.push({
+                id: section.attr('id'),
+                name: section.attr('name')
+              });
+              $compile(element)(scope);
+            });
 
-                    }
-                };
-            }
+          }
         };
-    }])
-    .directive('affixScroll', ['$window', function ($window) {
-        return {
-            link: function (scope, element) {
-                var offset;
-                var buffer = 80;
-                var top = element.offset().top - buffer;
-                var bottom = top + element.height() - buffer;
+      }
+    };
+  }])
+  .directive('affixScroll', ['$window', function ($window) {
+    return {
+      link: function (scope, element) {
+        var offset;
+        var buffer = 80;
+        var top = element.offset().top - buffer;
+        var bottom = top + element.height() - buffer;
 
-                // scroll spy functionality
-                angular.element($window).on('scroll.affix-scroll', function () {
-                    var id = element.attr('id');
-                    if (angular.isDefined($window.pageYOffset)) {
-                        offset = $window.pageYOffset;
-                    } else {
-                        var iebody = (document.compatMode && document.compatMode !== "BackCompat") ? document.documentElement : document.body;
-                        offset = iebody.scrollTop;
-                    }
+        // scroll spy functionality
+        angular.element($window).on('scroll.affix-scroll', function () {
+          var id = element.attr('id');
+          if (angular.isDefined($window.pageYOffset)) {
+            offset = $window.pageYOffset;
+          } else {
+            var iebody = (document.compatMode && document.compatMode !== 'BackCompat') ? document.documentElement : document.body;
+            offset = iebody.scrollTop;
+          }
 
-                    var modal = $('li#'+id+'Opt');
-                    if (top < offset && offset < bottom) {
-                        if (!modal.hasClass('active')) {
-                            modal.addClass('active');
-                        }
-                    } else {
-                        if (modal.hasClass('active')) {
-                            modal.removeClass('active');
-                        }
-                    }
-                });
+          var modal = $('li#' + id + 'Opt');
+          if (top < offset && offset < bottom) {
+            if (!modal.hasClass('active')) {
+              modal.addClass('active');
             }
-        };
-    }])
-    .directive('uiScrollfix', ['$window', function ($window) {
-        'use strict';
-        return {
-            require: '^?uiScrollfixTarget',
-            link: function (scope, elm, attrs, uiScrollfixTarget) {
-                var top = elm[0].offsetTop,
-                    $target = uiScrollfixTarget && uiScrollfixTarget.$element || angular.element($window);
+          } else {
+            if (modal.hasClass('active')) {
+              modal.removeClass('active');
+            }
+          }
+        });
+      }
+    };
+  }])
+  .directive('uiScrollfix', ['$window', function ($window) {
+    return {
+      require: '^?uiScrollfixTarget',
+      link: function (scope, elm, attrs, uiScrollfixTarget) {
+        var top = elm[0].offsetTop,
+          $target = uiScrollfixTarget && uiScrollfixTarget.$element || angular.element($window);
 
-                if (!attrs.uiScrollfix) {
-                    attrs.uiScrollfix = top;
-                } else if (typeof(attrs.uiScrollfix) === 'string') {
-                    // charAt is generally faster than indexOf: http://jsperf.com/indexof-vs-charat
-                    if (attrs.uiScrollfix.charAt(0) === '-') {
-                        attrs.uiScrollfix = top - parseFloat(attrs.uiScrollfix.substr(1));
-                    } else if (attrs.uiScrollfix.charAt(0) === '+') {
-                        attrs.uiScrollfix = top + parseFloat(attrs.uiScrollfix.substr(1));
-                    }
-                }
+        if (!attrs.uiScrollfix) {
+          attrs.uiScrollfix = top;
+        } else if (typeof(attrs.uiScrollfix) === 'string') {
+          // charAt is generally faster than indexOf: http://jsperf.com/indexof-vs-charat
+          if (attrs.uiScrollfix.charAt(0) === '-') {
+            attrs.uiScrollfix = top - parseFloat(attrs.uiScrollfix.substr(1));
+          } else if (attrs.uiScrollfix.charAt(0) === '+') {
+            attrs.uiScrollfix = top + parseFloat(attrs.uiScrollfix.substr(1));
+          }
+        }
 
-                function onScroll() {
-                    // if pageYOffset is defined use it, otherwise use other crap for IE
-                    var offset;
-                    if (angular.isDefined($window.pageYOffset)) {
-                        offset = $window.pageYOffset;
-                    } else {
-                        var iebody = (document.compatMode && document.compatMode !== "BackCompat") ? document.documentElement : document.body;
-                        offset = iebody.scrollTop;
-                    }
-                    if (!elm.hasClass('ui-scrollfix') && offset > attrs.uiScrollfix) {
-                        elm.addClass('ui-scrollfix');
-                    } else if (elm.hasClass('ui-scrollfix') && offset < attrs.uiScrollfix) {
-                        elm.removeClass('ui-scrollfix');
-                    }
-                }
+        function onScroll() {
+          // if pageYOffset is defined use it, otherwise use other crap for IE
+          var offset;
+          if (angular.isDefined($window.pageYOffset)) {
+            offset = $window.pageYOffset;
+          } else {
+            var iebody = (document.compatMode && document.compatMode !== 'BackCompat') ? document.documentElement : document.body;
+            offset = iebody.scrollTop;
+          }
+          if (!elm.hasClass('ui-scrollfix') && offset > attrs.uiScrollfix) {
+            elm.addClass('ui-scrollfix');
+          } else if (elm.hasClass('ui-scrollfix') && offset < attrs.uiScrollfix) {
+            elm.removeClass('ui-scrollfix');
+          }
+        }
 
-                $target.on('scroll', onScroll);
+        $target.on('scroll', onScroll);
 
-                // Unbind scroll event handler when directive is removed
-                scope.$on('$destroy', function() {
-                    $target.off('scroll', onScroll);
-                });
-            }
-        };
-    }])
-    .directive('uiScrollfixTarget', [function () {
-        'use strict';
-        return {
-            controller: function($element) {
-                this.$element = $element;
-            }
-        };
-    }]);
+        // Unbind scroll event handler when directive is removed
+        scope.$on('$destroy', function () {
+          $target.off('scroll', onScroll);
+        });
+      }
+    };
+  }])
+  .directive('uiScrollfixTarget', [function () {
+    return {
+      controller: function ($element) {
+        this.$element = $element;
+      }
+    };
+  }]);
diff --git a/app/demo/directives/bespoke-field.js b/app/demo/directives/bespoke-field.js
index 5e030549..5d205219 100644
--- a/app/demo/directives/bespoke-field.js
+++ b/app/demo/directives/bespoke-field.js
@@ -1,31 +1,52 @@
-myDemoApp.directive('emailField', ['$compile','$filter', function ($compile, $filter) {
-        return {
-            restrict: 'E',
-            replace: true,
-            priority: 1,
-            compile: function () {
-                return function (scope, element, attrs) {
-                    scope.$watch(attrs.formInput, function () {
-                        var info = scope[attrs.schema];
-                        var template = '
'; - if (!info.label) { - info.label = $filter('titleCase')(info.name); - } - if (info.label !== '') { - template += ''; - } - template += '
' + - '
' + - '@' + - '' + - '
' + - '
'; - template += '
'; - - element.replaceWith($compile(template)(scope)); - }); - }; +'use strict'; +myDemoApp.directive('emailField', ['$compile', '$filter', 'cssFrameworkService', function ($compile, $filter, cssFrameworkService) { + return { + restrict: 'E', + replace: true, + priority: 1, + compile: function () { + return function (scope, element, attrs) { + scope.$watch(attrs.formInput, function () { + var info = scope[attrs.schema], + template; + if (cssFrameworkService.framework() === 'bs2') { + template = '
'; + if (!info.label) { + info.label = $filter('titleCase')(info.name); + } + if (info.label !== '') { + template += ''; + } + template += '
' + + '
' + + '@' + + '' + + '
' + + '
'; + template += '
'; + } else { + template = '
'; + if (!info.label) { + info.label = $filter('titleCase')(info.name); } - }; - }]); + if (info.label !== '') { + template += ''; + } + template += '
' + + '
' + + '
' + + '@' + + '' + + '
' + + '
' + + '
'; + template += '
'; + } + + element.replaceWith($compile(template)(scope)); + }); + }; + } + }; +}]); diff --git a/app/demo/directives/friends.js b/app/demo/directives/friends.js index 82279449..4cdc2e89 100644 --- a/app/demo/directives/friends.js +++ b/app/demo/directives/friends.js @@ -1,59 +1,56 @@ -myDemoApp.controller('FriendCtrl',['$scope', '$routeParams', '$location', '$http', function($scope, $routeParams, $location, $http) { - $scope.frdShowAdd = false; - $scope.frdNewFriend = {}; - $scope.frdHideDetails = function() { - $scope.frdPopupName = 'Move mouse over a friend'; - $scope.frdPopupPhone = 'to see their details'; - }; +'use strict'; +myDemoApp.controller('FriendCtrl', ['$scope', '$routeParams', '$location', '$http', function ($scope, $routeParams, $location, $http) { + $scope.frdShowAdd = false; + $scope.frdNewFriend = {}; + $scope.frdHideDetails = function () { + $scope.frdPopupName = 'Move mouse over a friend'; + $scope.frdPopupPhone = 'to see their details'; + }; - $scope.frdShowDetails = function (friend) { - $http.get('api/a_unadorned_mongoose/' + friend.friend).success(function (data) { - if (data && data.success != false) { - $scope.frdPopupName = data.forename + ' ' + data.surname; - $scope.frdPopupPhone = data.phone; - } else { - $scope.frdPopupName = 'This friend does not exist - someone may have deleted the record'; - } - }).error(function () { - $scope.frdPopupName = 'Error reading friend details'; - $scope.frdPopupPhone = 'Please try again'; - }); - }; - - $scope.frdRemoveFriend = function(friend) { - for (var i = 0; i < $scope.record.friendList.length; i++) { - if ($scope.record.friendList[i].friend == friend.friend) { - $scope.record.friendList.splice(i,1); - break; - } - } - }; + $scope.frdShowDetails = function (friend) { + $http.get('/api/a_unadorned_mongoose/' + friend.friend).success(function (data) { + if (data && data.success !== false) { + $scope.frdPopupName = data.forename + ' ' + data.surname; + $scope.frdPopupPhone = data.phone; + } else { + $scope.frdPopupName = 'This friend does not exist - someone may have deleted the record'; + } + }).error(function () { + $scope.frdPopupName = 'Error reading friend details'; + $scope.frdPopupPhone = 'Please try again'; + }); + }; - $scope.frdShowAddForm = function() { - $scope.frdShowAdd=true; - $scope.frdNewFriend = {}; - }; + $scope.frdRemoveFriend = function (friend) { + for (var i = 0; i < $scope.record.friendList.length; i++) { + if ($scope.record.friendList[i].friend === friend.friend) { + $scope.record.friendList.splice(i, 1); + break; + } + } + }; - $scope.frdSaveFriend = function() { - var theFriend = angular.copy($scope.frdNewFriend.friendList); - delete theFriend.friend; - theFriend.friend = $scope.frdNewFriend.friendList.friend.id; - $scope.record.friendList.push(theFriend); - $scope.frdShowAdd=false; - }; + $scope.frdShowAddForm = function () { + $scope.frdShowAdd = true; + $scope.frdNewFriend = {}; + }; - $scope.frdIsFriendSaveDisabled = function() { - return $scope.newFriendForm.$invalid || $scope.newFriendForm.$pristine; - }; + $scope.frdSaveFriend = function () { + var theFriend = angular.copy($scope.frdNewFriend.friendList); + delete theFriend.friend; + theFriend.friend = $scope.frdNewFriend.friendList.friend.id; + $scope.record.friendList.push(theFriend); + $scope.frdShowAdd = false; + }; - $scope.frdHideDetails(); + $scope.frdHideDetails(); }]).directive('friends', function () { - return { - restrict: 'E', - replace: true, - priority: 1, - controller: 'FriendCtrl', - templateUrl: 'demo/template/friends.html' - } - }); + return { + restrict: 'E', + replace: true, + priority: 1, + controller: 'FriendCtrl', + templateUrl: 'demo/template/friends.html' + }; +}); diff --git a/app/demo/fonts/glyphicons-halflings-regular.eot b/app/demo/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 00000000..4a4ca865 Binary files /dev/null and b/app/demo/fonts/glyphicons-halflings-regular.eot differ diff --git a/app/demo/fonts/glyphicons-halflings-regular.svg b/app/demo/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 00000000..e3e2dc73 --- /dev/null +++ b/app/demo/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/demo/fonts/glyphicons-halflings-regular.ttf b/app/demo/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 00000000..67fa00bf Binary files /dev/null and b/app/demo/fonts/glyphicons-halflings-regular.ttf differ diff --git a/app/demo/fonts/glyphicons-halflings-regular.woff b/app/demo/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 00000000..8c54182a Binary files /dev/null and b/app/demo/fonts/glyphicons-halflings-regular.woff differ diff --git a/app/demo/template/affix-bs2.html b/app/demo/template/affix-bs2.html new file mode 100644 index 00000000..8ed93d37 --- /dev/null +++ b/app/demo/template/affix-bs2.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/app/demo/template/affix-bs3.html b/app/demo/template/affix-bs3.html new file mode 100644 index 00000000..ecabb44a --- /dev/null +++ b/app/demo/template/affix-bs3.html @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/demo/template/friends.html b/app/demo/template/friends.html index 2382ec93..76f97c10 100644 --- a/app/demo/template/friends.html +++ b/app/demo/template/friends.html @@ -1,10 +1,10 @@

Add Friend

- +
- - + +

@@ -13,14 +13,14 @@

Add Friend

-
{{frdPopupInstructions}}{{frdPopupName}}
{{frdPopupPhone}}
+
{{frdPopupInstructions}}{{frdPopupName}}
{{frdPopupPhone}}
\ No newline at end of file diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 00000000..7a64d1a3 Binary files /dev/null and b/app/favicon.ico differ diff --git a/app/favicon.xcf b/app/favicon.xcf new file mode 100644 index 00000000..8eb3f198 Binary files /dev/null and b/app/favicon.xcf differ diff --git a/app/index.html b/app/index.html index ae1a0071..eaec364b 100644 --- a/app/index.html +++ b/app/index.html @@ -3,6 +3,7 @@ + forms-angular - - - - + + + + -
- +
+
-

and in the customer model

addressList: {type: [AddressSchema], mergeKey: 'type', form: {pane: 'Address', labels: 'Addresses'}}

We need a way of having the delivery address appear on one form (for the operation user) and the invoice address on the - finance form, even though they are in the same field.

+ finance form, even though they are in the same field.

forms-angular has the concept of a subkey for this scenario. The custom schema for the operations user would contain:

-
addressList: {subkey: {keyList: {type: 'Delivery'}, containerType: 'well-small', title: 'Address', titleTagOrClass: 'h5'}}
+
addressList: {subkey:
+  {keyList: {type: 'Delivery'}, containerType: 'well-small', title: 'Address', titleTagOrClass: 'h5'}
+}

while that for finance might include

addressList: {subkey:
-    [
-        {keyList: {type: 'Invoice'}, containerType: 'well-small', title: 'Invoice To:'},
-        {keyList: {type: 'Delivery'}, containerType: 'well-small', title: 'Deliver To:'}
-    ]
+  [
+    {keyList: {type: 'Invoice'}, containerType: 'well-small', title: 'Invoice To:'},
+    {keyList: {type: 'Delivery'}, containerType: 'well-small', title: 'Deliver To:'}
+  ]
 }
-

Note that subkey can be an object or an array of objects. Where there are multiple sub docs that match the subkey the first will be used.

+

Note that subkey can be an object or an array of objects. Where there are multiple sub docs that match the subkey the first will be used.

- + \ No newline at end of file diff --git a/app/template/form-button-bs2.html b/app/template/form-button-bs2.html new file mode 100644 index 00000000..5e12a04a --- /dev/null +++ b/app/template/form-button-bs2.html @@ -0,0 +1,8 @@ +
+ + +
+
+ + +
diff --git a/app/template/form-button-bs3.html b/app/template/form-button-bs3.html new file mode 100644 index 00000000..7346c0c3 --- /dev/null +++ b/app/template/form-button-bs3.html @@ -0,0 +1,8 @@ +
+ + +
+
+ + +
\ No newline at end of file diff --git a/app/template/search-bs2.html b/app/template/search-bs2.html new file mode 100644 index 00000000..62374376 --- /dev/null +++ b/app/template/search-bs2.html @@ -0,0 +1,14 @@ + +
+
+
+ {{result.resourceText}} {{result.text}} +
+
(plus more - continue typing to narrow down search...) +
+
+
diff --git a/app/template/search-bs3.html b/app/template/search-bs3.html new file mode 100644 index 00000000..53e0c92a --- /dev/null +++ b/app/template/search-bs3.html @@ -0,0 +1,14 @@ + +
+
+
+ {{result.resourceText}} {{result.text}} +
+
(plus more - continue typing to narrow down search...) +
+
+
\ No newline at end of file diff --git a/bower.json b/bower.json index 8d8aa784..baea387e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "forms-angular", - "version": "0.2.0", + "version": "0.3.5", "homepage": "https://github.com/mchapman/forms-angular", "description": "No nonsense forms for the MEAN stack", "keywords": [ @@ -18,14 +18,15 @@ "node_modules", "components" ], + "comments": [ + "Do not upgrade ng-grid to anything less than 2.0.10 (https://github.com/angular-ui/ng-grid/issues/1142)" + ], "dependencies": { - "angular": "1.2", - "angular-route": "1.2", - "angular-mocks": "1.2", + "angular": "1.3.0-beta.8", + "angular-route": "1.3.0-beta.8", "angular-ui-bootstrap-bower": "0.8.0", - "angular-sanitize": "1.2", + "angular-sanitize": "1.3.0-beta.8", "angular-ui-select2": "0.0.4", - "ckeditor":"4", "bootstrap": "2.3.2", "html5shiv-dist": "3.6.2", "jquery": "1.10", @@ -34,9 +35,18 @@ "underscore": "1.6", "angular-ui-date": "git://github.com/mchapman/ui-date#patch-1", "ngInfiniteScroll": "~1.0.0", - "ng-grid": "~2.0.7", + "ng-grid": "2.0.7", "angular-elastic": "~2", "select2-bootstrap-css": "~1.2", - "jspdf": "*" + "jspdf": "1.0.115", + "ng-ckeditor": "0.2.1", + "ckeditor": "*" + }, + "devDependencies": { + "angular-mocks": "1.3.0-beta.8", + "components-font-awesome": "~4.1.0" + }, + "resolutions": { + "angular": "1.3.0-beta.8" } } diff --git a/config/karma.conf.js b/config/karma.conf.js index 95fe5af3..b8d7a42e 100644 --- a/config/karma.conf.js +++ b/config/karma.conf.js @@ -12,21 +12,24 @@ module.exports = function(config) { "app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js", "app/bower_components/angular-ui-date/src/date.js", "app/bower_components/angular-ui-select2/src/select2.js", - "app/bower_components/ngInfiniteScroll/ng-infinite-scroll.js", + "app/bower_components/ngInfiniteScroll/build/ng-infinite-scroll.js", "app/bower_components/ng-grid/build/ng-grid.js", "app/bower_components/select2/select2.js", 'app/bower_components/angular-mocks/angular-mocks.js', 'app/bower_components/angular-elastic/elastic.js', - 'app/bower_components/jspdf/dist/jspdf.source.js', - 'app/bower_components/ckeditor/ckeditor.js', + 'app/bower_components/jspdf/dist/jspdf.debug.js', + 'app/bower_components/ng-ckeditor/libs/ckeditor/ckeditor.js', + 'app/bower_components/ng-ckeditor/ng-ckeditor.js', 'app/js/forms-angular.js', 'app/js/**/*.js', 'app/demo/demo.js', + 'app/template/*.html', 'app/demo/directives/bespoke-field.js', 'test/unit/**/*.js' ], autoWatch : true, + usePolling: true, browsers : ['PhantomJS'], @@ -43,8 +46,16 @@ module.exports = function(config) { 'karma-jasmine', 'karma-chrome-launcher', 'karma-phantomjs-launcher', + 'karma-ng-html2js-preprocessor', 'karma-firefox-launcher', 'karma-junit-reporter' - ] + ], + ngHtml2JsPreprocessor: { + // strip this from the file path + stripPrefix: 'app/' + }, + preprocessors: { + 'app/template/*.html': 'ng-html2js' + } }); }; \ No newline at end of file diff --git a/config/karma.midway.conf.js b/config/karma.midway.conf.js index b4f04671..0974318a 100644 --- a/config/karma.midway.conf.js +++ b/config/karma.midway.conf.js @@ -12,22 +12,25 @@ module.exports = function(config) { "app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js", "app/bower_components/angular-ui-date/src/date.js", "app/bower_components/angular-ui-select2/src/select2.js", - "app/bower_components/ngInfiniteScroll/ng-infinite-scroll.js", + "app/bower_components/ngInfiniteScroll/build/ng-infinite-scroll.js", "app/bower_components/ng-grid/build/ng-grid.js", "app/bower_components/select2/select2.js", 'app/bower_components/angular-mocks/angular-mocks.js', - 'app/bower_components/jspdf/dist/jspdf.source.js', + 'app/bower_components/jspdf/dist/jspdf.debug.js', 'app/bower_components/angular-elastic/elastic.js', - 'app/bower_components/ckeditor/ckeditor.js', + 'app/bower_components/ng-ckeditor/libs/ckeditor/ckeditor.js', + 'app/bower_components/ng-ckeditor/ng-ckeditor.js', 'app/js/forms-angular.js', 'app/js/**/*.js', 'app/demo/demo.js', 'app/demo/**/*.js', + 'app/template/*.html', 'app/demo/template/*.html', 'test/midway/**/*.js' ], autoWatch : true, + usePolling: true, browsers : ['PhantomJS'], @@ -53,6 +56,7 @@ module.exports = function(config) { stripPrefix: 'app/' }, preprocessors: { + 'app/template/*.html': 'ng-html2js', 'app/demo/template/*.html': 'ng-html2js' } }); diff --git a/dist/favicon.ico b/dist/favicon.ico new file mode 100644 index 00000000..7a64d1a3 Binary files /dev/null and b/dist/favicon.ico differ diff --git a/dist/img/270bc532.forkme_right_darkblue_121621.png b/dist/img/270bc532.forkme_right_darkblue_121621.png deleted file mode 100644 index e9d21d9e..00000000 Binary files a/dist/img/270bc532.forkme_right_darkblue_121621.png and /dev/null differ diff --git a/dist/img/5b41b310.screen.png b/dist/img/5b41b310.screen.png deleted file mode 100644 index 2be89df9..00000000 Binary files a/dist/img/5b41b310.screen.png and /dev/null differ diff --git a/dist/img/8936b0c9.ccc.png b/dist/img/8936b0c9.ccc.png deleted file mode 100644 index 93835073..00000000 Binary files a/dist/img/8936b0c9.ccc.png and /dev/null differ diff --git a/dist/img/8a3f0937.caremarkjobs.png b/dist/img/8a3f0937.caremarkjobs.png deleted file mode 100644 index 686e1b1e..00000000 Binary files a/dist/img/8a3f0937.caremarkjobs.png and /dev/null differ diff --git a/dist/img/96eec0c8.plait.png b/dist/img/96eec0c8.plait.png deleted file mode 100644 index 5c886b94..00000000 Binary files a/dist/img/96eec0c8.plait.png and /dev/null differ diff --git a/dist/img/ae369a9e.Home_icon_black.png b/dist/img/ae369a9e.Home_icon_black.png deleted file mode 100644 index 6635abf7..00000000 Binary files a/dist/img/ae369a9e.Home_icon_black.png and /dev/null differ diff --git a/dist/index.html b/dist/index.html index a0040cc8..6b5d15ad 100644 --- a/dist/index.html +++ b/dist/index.html @@ -3,92 +3,94 @@ + forms-angular - + -
- +
+
-'); - scope = $rootScope; - scope.schema = [ - {name: "email", id: "1", label: "Email", type: "text", directive: "email-field"} - ]; - scope.errorMessage = 'Test error'; - scope.alertTitle = 'Error!'; - $compile(elm)(scope); - scope.$digest(); - })); - - it('displays appropriately', function () { - var h4 = elm.find('h4'); - expect(h4.text()).toBe('Error!'); - var alert = elm.find('span.errMsg'); - expect(alert.text()).toBe('Test error'); - }); - }); + it('should have an attribute of bobby', function () { + var input = elm.find('input'); + expect(input.attr('bobby')).toBeDefined(); + }); - describe('supports bootstrap control sizing', function () { + describe('a text box label', function () { beforeEach(inject(function ($rootScope, $compile) { - elm = angular.element('
'); - scope = $rootScope; - scope.formSchema = {name: "desc", id: "desc_id", label: "Description", size: "small", type: "text"}; - $compile(elm)(scope); - scope.$digest(); + elm = angular.element('
'); + scope = $rootScope; + scope.formSchema = { + name: 'desc', + id: 'desc_id', + label: 'Description', + type: 'text' + }; + $compile(elm)(scope); + scope.$digest(); })); - it('should have input', function () { - var input = elm.find('input'); - expect(input).toHaveClass('ng-pristine'); - expect(input).toHaveClass('ng-valid'); - expect(input).toHaveClass('input-small'); - expect(input.attr('id')).toBe('desc_id'); - expect(input.attr('type')).toBe('text'); - }); - - }); + it('should have an attribute of bobby', function () { + var label = elm.find('label'); + expect(label.attr('bobby')).toBeDefined(); - describe('supports showWhen', function () { + }); + }); + describe('a control group', function () { beforeEach(inject(function ($rootScope, $compile) { - elm = angular.element('
'); - scope = $rootScope; - scope.formSchema = [ - {name:'boolean', type:'checkbox'}, - {name: "desc", id: "desc_id", label: "Description", size: "small", type: "text", showWhen:{lhs:'$boolean', comp:'eq', rhs:true}}, - {"formStyle":"inline","name":"exams","schema":[ - {showWhen:{lhs:'$boolean', comp:'eq', rhs:true},"name":"exams.subject","type":"text","id":"f_exams_subject","label":"Subject"}, - {"name":"exams.result","type":"select","options":"f_exams_resultOptions","id":"f_exams_result","label":"Result"}, - {"showWhen":{"lhs":"$exams.result","comp":"eq","rhs":"fail"},"name":"exams.retakeDate","type":"text","add":"ui-date ui-date-format ","id":"f_exams_retakeDate","label":"Retake Date"} - ]} - ]; - scope.record = {boolean:true,name:'any name',exams:[{subject:'Maths'}]}; - $compile(elm)(scope); - scope.$digest(); + elm = angular.element('
'); + scope = $rootScope; + scope.formSchema = { + name: 'desc', + id: 'desc_id', + label: 'Description', + type: 'text' + }; + $compile(elm)(scope); + scope.$digest(); })); - it('on simple field', function () { - var cg = elm.find('#cg_desc_id'); - expect(cg.attr('ng-show')).toBe('record.boolean===true'); - }); - - it('on nested field', function () { - var cg = elm.find('#cg_f_exams_subject'); - expect(cg.attr('ng-show')).toBe('record.boolean===true'); + it('should have an attribute of bobby', function () { + var group = elm.find('.control-group'); + expect(group.attr('bobby')).toBeDefined(); }); + }); + }); + }); - it('dependent on nested field', function () { - var cg = elm.find('#cg_f_exams_retakeDate'); - expect(cg.attr('ng-show')).toBe("record.exams[$index].result==='fail'"); - }); + describe('arbitrary attributes get passed in', function () { - }); + beforeEach(inject(function ($rootScope, $compile) { + elm = angular.element('
'); + scope = $rootScope; + scope.formSchema = {name: 'desc', id: 'desc_id', label: 'Description', type: 'text'}; + $compile(elm)(scope); + scope.$digest(); + })); - describe('Testing add all functionality, ', function() { - - describe('a text box', function() { - - beforeEach(inject(function($rootScope, $compile) { - elm = angular.element('
'); - scope = $rootScope; - scope.formSchema = { - name: "desc", - id: "desc_id", - label: "Description", - type: "text" - }; - $compile(elm)(scope); - scope.$digest(); - })); - - it('should have an attribute of bobby', function() { - var input = elm.find('input'); - expect(input.attr('bobby')).toBeDefined(); - }); - - describe('a text box label', function() { - - beforeEach(inject(function($rootScope, $compile) { - elm = angular.element('
'); - scope = $rootScope; - scope.formSchema = { - name: "desc", - id: "desc_id", - label: "Description", - type: "text" - }; - $compile(elm)(scope); - scope.$digest(); - })); - - it('should have an attribute of bobby', function() { - var label = elm.find('label'); - expect(label.attr('bobby')).toBeDefined(); - - }); - }); - - describe('a control group', function() { - beforeEach(inject(function($rootScope, $compile) { - elm = angular.element('
'); - scope = $rootScope; - scope.formSchema = { - name: "desc", - id: "desc_id", - label: "Description", - type: "text" - }; - $compile(elm)(scope); - scope.$digest(); - })); - - it('should have an attribute of bobby', function() { - var group = elm.find('.control-group'); - expect(group.attr('bobby')).toBeDefined(); - }); - }); - }); + it('should have the test-me attribute', function () { + var form = elm.find('form'); + expect(form.attr('test-me')).toBe('A Test'); }); + }); - describe('arbitrary attributes get passed in', function () { + describe('labels in inline forms (BS2)', function () { - beforeEach(inject(function ($rootScope, $compile) { - elm = angular.element('
'); - scope = $rootScope; - scope.formSchema = {name: "desc", id: "desc_id", label: "Description", type: "text"}; - $compile(elm)(scope); - scope.$digest(); - })); + beforeEach(inject(function ($rootScope, $compile) { + elm = angular.element('
'); + scope = $rootScope; + scope.formSchema = {name: 'desc', id: 'descId', label: 'Description', type: 'text'}; + $compile(elm)(scope); + scope.$digest(); + })); - it('should have the test-me attribute', function () { - var form = elm.find('form'); - expect(form.attr('test-me')).toBe('A Test'); - }); + it('should not have a label', function () { + var label = elm.find('label'); + expect(label.length).toBe(0); }); + }); + }); diff --git a/test/unit/helpers.js b/test/unit/helpers.js index 51b65b0b..5a8c1bac 100644 --- a/test/unit/helpers.js +++ b/test/unit/helpers.js @@ -1,11 +1,13 @@ -beforeEach(function() { - this.addMatchers({ - toHaveClass: function(cls) { - this.message = function() { - return "Expected '" + angular.mock.dump(this.actual) + "' to have class '" + cls + "'."; - }; +'use strict'; - return this.actual.hasClass(cls); - } - }); +beforeEach(function () { + this.addMatchers({ + toHaveClass: function (cls) { + this.message = function () { + return 'Expected "' + angular.mock.dump(this.actual) + '" to have class "' + cls + '".'; + }; + + return this.actual.hasClass(cls); + } + }); }); diff --git a/test/unit/linksSpec.js b/test/unit/linksSpec.js index 6c32bcf5..827508e5 100644 --- a/test/unit/linksSpec.js +++ b/test/unit/linksSpec.js @@ -1,149 +1,147 @@ -describe('Links', function () { - - var schemaThrough, dataThrough; +'use strict'; - beforeEach(function () { - angular.mock.module('formsAngular'); - }); +describe('Links', function () { - describe('simple link', function () { - - describe('controller', function () { - - var $httpBackend; - - afterEach(function () { - $httpBackend.verifyNoOutstandingExpectation(); - $httpBackend.verifyNoOutstandingRequest(); - }); - - describe('process schema', function () { - var scope, ctrl; - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/collection').respond({ - "textField": {"path": "textField", "instance": "String", "options": {"form": {"label": "Organisation Name"}, "list": true}, "_index": null}, - "lookupField": {"path": "lookupField", "instance": "ObjectID", "options": {"ref": "Person", form: {link: {linkOnly: true, text: "My link text"}}}, "_index": null} - }); - $httpBackend.whenGET('api/collection/3').respond({ - "textField": "This is some text", "lookupField": 123456789 - }); - $location.$$path = '/collection/3/edit'; - scope = $rootScope.$new(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - })); - - it('generates correct schema', function () { - expect(scope.formSchema[1].ref).toBe('Person'); - expect(scope.formSchema[1].type).toBe('link'); - expect(scope.formSchema[1].linkText).toBe('My link text'); - expect(scope.formSchema[1].link).toBe(undefined); - schemaThrough = scope.formSchema[1]; - dataThrough = scope.record; - }); - - }); - - describe('form generation', function () { - - var elm, scope; - - beforeEach(inject(function ($rootScope, $compile) { - elm = angular.element( - '
' + - '' + - '
'); - - scope = $rootScope; - scope.formSchema = schemaThrough; - scope.record = dataThrough; - $compile(elm)(scope); - scope.$digest(); - })); - // - it('should have a link', function () { - var anchor = elm.find('a'); - expect(anchor.attr('href')).toBe('/#!/Person/123456789/edit'); - expect(anchor.text()).toBe('My link text'); - }); - - }); + var schemaThrough, dataThrough; + + beforeEach(function () { + angular.mock.module('formsAngular'); + }); + + describe('simple link', function () { + + describe('controller', function () { + + var $httpBackend; + + afterEach(function () { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); + }); + + describe('process schema', function () { + var scope, ctrl; + + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/collection').respond({ + 'textField': {'path': 'textField', 'instance': 'String', 'options': {'form': {'label': 'Organisation Name'}, 'list': true}, '_index': null}, + 'lookupField': {'path': 'lookupField', 'instance': 'ObjectID', 'options': {'ref': 'Person', form: {link: {linkOnly: true, text: 'My link text'}}}, '_index': null} + }); + $httpBackend.whenGET('/api/collection/3').respond({'textField': 'This is some text', 'lookupField': 123456789}); + $location.$$path = '/collection/3/edit'; + scope = $rootScope.$new(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + })); + + it('generates correct schema', function () { + expect(scope.formSchema[1].ref).toBe('Person'); + expect(scope.formSchema[1].type).toBe('link'); + expect(scope.formSchema[1].linkText).toBe('My link text'); + expect(scope.formSchema[1].link).toBe(undefined); + schemaThrough = scope.formSchema[1]; + dataThrough = scope.record; + }); + }); + + describe('form generation', function () { + + var elm, scope; + + beforeEach(inject(function ($rootScope, $compile) { + elm = angular.element( + '
' + + '' + + '
'); + + scope = $rootScope; + scope.formSchema = schemaThrough; + scope.record = dataThrough; + $compile(elm)(scope); + scope.$digest(); + })); + // + it('should have a link', function () { + var anchor = elm.find('a'); + expect(anchor.attr('href')).toBe('/#!/Person/123456789/edit'); + expect(anchor.text()).toBe('My link text'); }); + }); + }); - describe('link to a form schema', function () { - - describe('controller', function () { - - var $httpBackend; - - afterEach(function () { - $httpBackend.verifyNoOutstandingExpectation(); - $httpBackend.verifyNoOutstandingRequest(); - }); - - describe('process schema', function () { - var scope, ctrl; - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/collection').respond({ - "textField": {"path": "textField", "instance": "String", "options": {"form": {"label": "Organisation Name"}, "list": true}, "_index": null}, - "lookupField": {"path": "lookupField", "instance": "ObjectID", "options": {"ref": "Person", form: {link: {linkOnly: true, form:'myschema', text: "My link text"}}}, "_index": null} - }); - $httpBackend.whenGET('api/collection/3').respond({ - "textField": "This is some text", "lookupField": 123456789 - }); - $location.$$path = '/collection/3/edit'; - scope = $rootScope.$new(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - })); - - it('generates correct schema', function () { - expect(scope.formSchema[1].ref).toBe('Person'); - expect(scope.formSchema[1].type).toBe('link'); - expect(scope.formSchema[1].linkText).toBe('My link text'); - expect(scope.formSchema[1].form).toBe('myschema'); - expect(scope.formSchema[1].link).toBe(undefined); - schemaThrough = scope.formSchema[1]; - dataThrough = scope.record; - }); - - }); - - describe('form generation', function () { - - var elm, scope; - - beforeEach(inject(function ($rootScope, $compile) { - elm = angular.element( - '
' + - '' + - '
'); - - scope = $rootScope; - scope.formSchema = schemaThrough; - scope.record = dataThrough; - $compile(elm)(scope); - scope.$digest(); - })); - // - it('should have a link', function () { - var anchor = elm.find('a'); - expect(anchor.attr('href')).toBe('/#!/Person/myschema/123456789/edit'); - expect(anchor.text()).toBe('My link text'); - }); - - }); + }); + + describe('link to a form schema', function () { + + describe('controller', function () { + + var $httpBackend; + + afterEach(function () { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); + }); + + describe('process schema', function () { + var scope, ctrl; + + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/collection').respond({ + 'textField': {'path': 'textField', 'instance': 'String', 'options': {'form': {'label': 'Organisation Name'}, 'list': true}, '_index': null}, + 'lookupField': {'path': 'lookupField', 'instance': 'ObjectID', 'options': {'ref': 'Person', form: {link: {linkOnly: true, form: 'myschema', text: 'My link text'}}}, '_index': null} + }); + $httpBackend.whenGET('/api/collection/3').respond({'textField': 'This is some text', 'lookupField': 123456789}); + $location.$$path = '/collection/3/edit'; + scope = $rootScope.$new(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + })); + + it('generates correct schema', function () { + expect(scope.formSchema[1].ref).toBe('Person'); + expect(scope.formSchema[1].type).toBe('link'); + expect(scope.formSchema[1].linkText).toBe('My link text'); + expect(scope.formSchema[1].form).toBe('myschema'); + expect(scope.formSchema[1].link).toBe(undefined); + schemaThrough = scope.formSchema[1]; + dataThrough = scope.record; + }); + }); + + describe('form generation', function () { + + var elm, scope; + + beforeEach(inject(function ($rootScope, $compile) { + elm = angular.element( + '
' + + '' + + '
'); + + scope = $rootScope; + scope.formSchema = schemaThrough; + scope.record = dataThrough; + $compile(elm)(scope); + scope.$digest(); + })); + // + it('should have a link', function () { + var anchor = elm.find('a'); + expect(anchor.attr('href')).toBe('/#!/Person/myschema/123456789/edit'); + expect(anchor.text()).toBe('My link text'); }); + }); + }); + }); + }); diff --git a/test/unit/locationParseSpec.js b/test/unit/locationParseSpec.js index b3b4bbbe..965e1d13 100644 --- a/test/unit/locationParseSpec.js +++ b/test/unit/locationParseSpec.js @@ -1,58 +1,58 @@ 'use strict'; -describe("Location parsing", function() { - - beforeEach(angular.mock.module('formsAngular')); - - describe("$locationParse", function() { - it('should parse model/id/edit', inject(function($locationParse) { - var parsedObject = $locationParse('/b_using_options/5194c43185810b1e947cd8c2/edit'); - expect(parsedObject.modelName).toBe("b_using_options"); - expect(parsedObject.id).toBe("5194c43185810b1e947cd8c2"); - expect(parsedObject.newRecord).toBe(false); - expect(parsedObject.formName).toBe(undefined); - })); - - it('should parse model/new', inject(function($locationParse) { - var parsedObject = $locationParse('/mymodel/new'); - expect(parsedObject.modelName).toBe("mymodel"); - expect(parsedObject.id).toBe(undefined); - expect(parsedObject.newRecord).toBe(true); - expect(parsedObject.formName).toBe(undefined); - })); - - it('should parse model', inject(function($locationParse) { - var parsedObject = $locationParse('/mymodel'); - expect(parsedObject.modelName).toBe("mymodel"); - expect(parsedObject.id).toBe(undefined); - expect(parsedObject.newRecord).toBe(false); - expect(parsedObject.formName).toBe(undefined); - })); - - it('should parse model/form/id/edit', inject(function($locationParse) { - var parsedObject = $locationParse('/b_using_options/myform/5194c43185810b1e947cd8c2/edit'); - expect(parsedObject.modelName).toBe("b_using_options"); - expect(parsedObject.id).toBe("5194c43185810b1e947cd8c2"); - expect(parsedObject.newRecord).toBe(false); - expect(parsedObject.formName).toBe("myform"); - })); - - it('should parse model/form/new', inject(function($locationParse) { - var parsedObject = $locationParse('/mymodel/myform/new'); - expect(parsedObject.modelName).toBe("mymodel"); - expect(parsedObject.id).toBe(undefined); - expect(parsedObject.newRecord).toBe(true); - expect(parsedObject.formName).toBe("myform"); - })); - - it('should parse model/form', inject(function($locationParse) { - var parsedObject = $locationParse('/mymodel/myform'); - expect(parsedObject.modelName).toBe("mymodel"); - expect(parsedObject.id).toBe(undefined); - expect(parsedObject.newRecord).toBe(false); - expect(parsedObject.formName).toBe("myform"); - })); - - }) +describe('Location parsing', function () { + + beforeEach(angular.mock.module('formsAngular')); + + describe('$locationParse', function () { + it('should parse model/id/edit', inject(function ($locationParse) { + var parsedObject = $locationParse('/b_using_options/5194c43185810b1e947cd8c2/edit'); + expect(parsedObject.modelName).toBe('b_using_options'); + expect(parsedObject.id).toBe('5194c43185810b1e947cd8c2'); + expect(parsedObject.newRecord).toBe(false); + expect(parsedObject.formName).toBe(undefined); + })); + + it('should parse model/new', inject(function ($locationParse) { + var parsedObject = $locationParse('/mymodel/new'); + expect(parsedObject.modelName).toBe('mymodel'); + expect(parsedObject.id).toBe(undefined); + expect(parsedObject.newRecord).toBe(true); + expect(parsedObject.formName).toBe(undefined); + })); + + it('should parse model', inject(function ($locationParse) { + var parsedObject = $locationParse('/mymodel'); + expect(parsedObject.modelName).toBe('mymodel'); + expect(parsedObject.id).toBe(undefined); + expect(parsedObject.newRecord).toBe(false); + expect(parsedObject.formName).toBe(undefined); + })); + + it('should parse model/form/id/edit', inject(function ($locationParse) { + var parsedObject = $locationParse('/b_using_options/myform/5194c43185810b1e947cd8c2/edit'); + expect(parsedObject.modelName).toBe('b_using_options'); + expect(parsedObject.id).toBe('5194c43185810b1e947cd8c2'); + expect(parsedObject.newRecord).toBe(false); + expect(parsedObject.formName).toBe('myform'); + })); + + it('should parse model/form/new', inject(function ($locationParse) { + var parsedObject = $locationParse('/mymodel/myform/new'); + expect(parsedObject.modelName).toBe('mymodel'); + expect(parsedObject.id).toBe(undefined); + expect(parsedObject.newRecord).toBe(true); + expect(parsedObject.formName).toBe('myform'); + })); + + it('should parse model/form', inject(function ($locationParse) { + var parsedObject = $locationParse('/mymodel/myform'); + expect(parsedObject.modelName).toBe('mymodel'); + expect(parsedObject.id).toBe(undefined); + expect(parsedObject.newRecord).toBe(false); + expect(parsedObject.formName).toBe('myform'); + })); + + }); }); diff --git a/test/unit/nestedSchemasSpec.js b/test/unit/nestedSchemasSpec.js index ae0bdaab..64395531 100644 --- a/test/unit/nestedSchemasSpec.js +++ b/test/unit/nestedSchemasSpec.js @@ -1,88 +1,213 @@ -describe('formInput', function () { - var elm, scope; +'use strict'; - // load the form code - beforeEach(angular.mock.module('formsAngular')); +describe('formInput', function () { + var elm, scope; - describe('simple text input', function () { + // load the form code + beforeEach(angular.mock.module('formsAngular')); - beforeEach(inject(function ($rootScope, $compile) { - elm = angular.element( - '
' + - '' + - '
'); + describe('simple text input', function () { - scope = $rootScope; - scope.formSchema = [ - {"name":"surname","id":"f_surname","label":"Surname","type":"text","add":"autofocus "}, - {"name":"forename","id":"f_forename","label":"Forename","type":"text"}, - {"name":"address.street","id":"f_address_street","label":"Address Street","type":"text"}, - {"name":"address.town","id":"f_address_town","label":"Address Town","type":"text"}, - {"name":"studies.courses","id":"f_studies_courses","label":"Studies Courses","noRemove":true,"schema": - [ - {"name":"studies.courses.subject","id":"f_studies.courses.subject","label":"Subject","type":"text","add":"autofocus "}, - {"name":"studies.courses.grade","id":"f_studies.courses.grade","label":"Grade","type":"text"}, - {"name":"studies.courses.teachers","id":"f_studies.courses.teachers","label":"Teachers","schema": - [ - {"name":"teachers.teacher","id":"f_teachers.teacher","label":"Teacher","ref":"b_using_options","type":"select","options":"f_teachers_teacherOptions","ids":"f_teachers_teacher_ids"}, - {"name":"teachers.room","id":"f_teachers.room","label":"Room","type":"number"} - ] - } - ] - }, - {"name":"studies.exams","id":"f_studies_exams","label":"Studies Exams","schema": - [ - {"name":"studies.exams.subject","id":"f_studies.exams.subject","label":"Subject","type":"text","add":"autofocus autofocus "}, - {"name":"studies.exams.examDate","id":"f_studies.exams.examDate","label":"Exam Date","type":"text","add":"ui-date ui-date-format=\"dd/mm/yy\" "}, - {"name":"studies.exams.score","id":"f_studies.exams.score","label":"Score","type":"number"}, - {"name":"studies.exams.result","id":"f_studies.exams.result","label":"Result","type":"select","options":"f_studies_exams_resultOptions"}, - {"name":"studies.exams.grader","id":"f_studies.exams.grader","label":"Grader","ref":"b_using_options","type":"select","options":"f_studies_exams_graderOptions","ids":"f_studies_exams_grader_ids"} - ] - } - ]; + beforeEach(inject(function ($rootScope, $compile) { + elm = angular.element( + '
' + + '' + + '
'); - scope.record = { - "surname": "Smith", - "forename": "John", - "address.street": "4 High Street", - "address.town": "Anytown", - "studies": - { - "courses": - [ - {"subject":"English","grade":"A","teachers":[]} - ], - "exams": - [ - { - "subject":"English", - "score":67, - "result":"merit" - } - ] - } - }; - $compile(elm)(scope); - scope.$digest(); - })); + scope = $rootScope; + scope.formSchema = [ + {'name': 'surname', 'id': 'f_surname', 'label': 'Surname', 'type': 'text', 'add': 'autofocus '}, + {'name': 'forename', 'id': 'f_forename', 'label': 'Forename', 'type': 'text'}, + {'name': 'address.street', 'id': 'f_address_street', 'label': 'Address Street', 'type': 'text'}, + {'name': 'address.town', 'id': 'f_address_town', 'label': 'Address Town', 'type': 'text'}, + {'name': 'studies.courses', 'id': 'f_studies_courses', 'label': 'Studies Courses', 'noRemove': true, 'schema': [ + {'name': 'studies.courses.subject', 'id': 'f_studies.courses.subject', 'label': 'Subject', 'type': 'text', 'add': 'autofocus '}, + {'name': 'studies.courses.grade', 'id': 'f_studies.courses.grade', 'label': 'Grade', 'type': 'text'}, + {'name': 'studies.courses.teachers', 'id': 'f_studies.courses.teachers', 'label': 'Teachers', 'schema': [ + { + 'name': 'teachers.teacher', + 'id': 'f_teachers.teacher', + 'label': 'Teacher', + 'ref': 'b_using_options', + 'type': 'select', + 'options': 'f_teachers_teacherOptions', + 'ids': 'f_teachers_teacher_ids' + }, + {'name': 'teachers.room', 'id': 'f_teachers.room', 'label': 'Room', 'type': 'number'} + ] + } + ] + }, + {'name': 'studies.exams', 'id': 'f_studies_exams', 'label': 'Studies Exams', 'schema': [ + {'name': 'studies.exams.subject', 'id': 'f_studies.exams.subject', 'label': 'Subject', 'type': 'text', 'add': 'autofocus autofocus '}, + {'name': 'studies.exams.examDate', 'id': 'f_studies.exams.examDate', 'label': 'Exam Date', 'type': 'text', 'add': 'ui-date ui-date-format=\'dd/mm/yy\' '}, + {'name': 'studies.exams.score', 'id': 'f_studies.exams.score', 'label': 'Score', 'type': 'number'}, + {'name': 'studies.exams.result', 'id': 'f_studies.exams.result', 'label': 'Result', 'type': 'select', 'options': 'f_studies_exams_resultOptions'}, + { + 'name': 'studies.exams.grader', + 'id': 'f_studies.exams.grader', + 'label': 'Grader', + 'ref': 'b_using_options', + 'type': 'select', + 'options': 'f_studies_exams_graderOptions', + 'ids': 'f_studies_exams_grader_ids' + } + ] + } + ]; - it('should display the studies courses data', function () { - var thisElm = elm.find('#cg_f_studies-courses-grade input'); - expect(thisElm.length).toBe(1); - expect(thisElm.val()).toBe('A'); - }); + scope.record = { + 'surname': 'Smith', + 'forename': 'John', + 'address.street': '4 High Street', + 'address.town': 'Anytown', + 'studies': { + 'courses': [ + {'subject': 'English', 'grade': 'A', 'teachers': []} + ], + 'exams': [ + { + 'subject': 'English', + 'score': 67, + 'result': 'merit' + } + ] + } + }; + $compile(elm)(scope); + scope.$digest(); + })); - it('should display the studies exam data', function () { - var thisElm = elm.find('#cg_f_studies-exams-score input'); - expect(thisElm.length).toBe(1); - expect(thisElm.val()).toBe('67'); - }); + it('should display the studies courses data', function () { + var thisElm = elm.find('#cg_f_studies-courses-grade input'); + expect(thisElm.length).toBe(1); + expect(thisElm.val()).toBe('A'); + }); + it('should display the studies exam data', function () { + var thisElm = elm.find('#cg_f_studies-exams-score input'); + expect(thisElm.length).toBe(1); + expect(thisElm.val()).toBe('67'); }); + }); + }); -//'
Studies Courses
Teachers
Studies Exams
' +//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+//
Studies Courses
+// +//
+//
+//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+//
Teachers
+// +//
+// +//
+//
+//
+//
+//
+//
+// +//
+//
+//
+//
Studies Exams
+// +//
+//
+//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+// +//
+// +//
+//
+//
+//
+// +//
+//
+//
+//
+// +//
+//
+//
" // Cannot get this test to work, but the code seems to.... @@ -93,38 +218,39 @@ describe('formInput', function () { // $httpBackend = _$httpBackend_; // compile = $compile; // $httpBackend.whenGET('api/schema/collection').respond( -// { "name":{"path":"name","instance":"String","options":{"list":true},"_index":null}, -// "nested.aField":{"path":"nested.aField","instance":"String"}, -// "nested.bField":{"path":"nested.bField","instance":"String"}, -// "nested.twiceNested.nestedAField":{"path":"nested.twiceNested.nestedAField","instance":"String"}, -// "nested.twiceNested.nestedBField":{"path":"nested.twiceNested.nestedBField","instance":"String"}, -// "module":{"path":"module","instance":"String"} } +// { 'name':{'path':'name','instance':'String','options':{'list':true},'_index':null}, +// 'nested.aField':{'path':'nested.aField','instance':'String'}, +// 'nested.bField':{'path':'nested.bField','instance':'String'}, +// 'nested.twiceNested.nestedAField':{'path':'nested.twiceNested.nestedAField','instance':'String'}, +// 'nested.twiceNested.nestedBField':{'path':'nested.twiceNested.nestedBField','instance':'String'}, +// 'module':{'path':'module','instance':'String'} } // ); // $httpBackend.whenGET('api/collection/51002970cfc2850222000005').respond({ -// "__v": 0, "_id": "51002970cfc2850222000005", -// "name": "John", -// "nested": { -// "aField": "A value", -// "bField": "a different value", -// "twiceNested": { -// "nestedAField" : "Romulus", -// "nestedBField" : "Remus" +// '__v': 0, '_id': '51002970cfc2850222000005', +// 'name': 'John', +// 'nested': { +// 'aField': 'A value', +// 'bField': 'a different value', +// 'twiceNested': { +// 'nestedAField' : 'Romulus', +// 'nestedBField' : 'Remus' // } // }, -// "module": "Some text or other" +// 'module': 'Some text or other' // }); // $routeParams.model = 'collection'; // $routeParams.id = '51002970cfc2850222000005'; // scope = $rootScope.$new(); -// ctrl = $controller("BaseCtrl", {$scope: scope}); +// ctrl = $controller('BaseCtrl', {$scope: scope}); // // $httpBackend.flush(); // // dump(scope.formSchema) // elm = angular.element( -// '
' + -// '' + -// '
'); +// "
" + +// " +// " + +// "
"); // // $compile(elm)(scope); // scope.$digest(); diff --git a/test/unit/reportSpec.js b/test/unit/reportSpec.js index 5e25054f..304758b0 100644 --- a/test/unit/reportSpec.js +++ b/test/unit/reportSpec.js @@ -1,29 +1,34 @@ -describe('Reports', function() { +'use strict'; - var $httpBackend; +describe('Reports', function () { - beforeEach(function () { - angular.mock.module('formsAngular'); - }); + var $httpBackend; - afterEach(function () { - $httpBackend.verifyNoOutstandingExpectation(); - $httpBackend.verifyNoOutstandingRequest(); - }); + beforeEach(function () { + angular.mock.module('formsAngular'); + }); - describe('url handling', function() { + afterEach(function () { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); + }); - it('should support report schemas which are fetched from server', function() { - inject(function (_$httpBackend_, $rootScope, $controller) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('/api/report/collection/myReport').respond({success:true, schema:{}, report:[{"_id":"F","count":11},{"_id":"M","count":6}]}); - routeParams = {model:'collection',reportSchemaName:'myReport'}; - scope = $rootScope.$new(); - ctrl = $controller("AnalysisCtrl", {$scope: scope, $routeParams: routeParams}); - $httpBackend.flush(); - expect(scope.report.length).toBe(2); - }); - }); + describe('url handling', function () { + it('should support report schemas which are fetched from server', function () { + inject(function (_$httpBackend_, $rootScope, $controller) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/report/collection/myReport').respond({success: true, schema: {}, report: [ + {'_id': 'F', 'count': 11}, + {'_id': 'M', 'count': 6} + ]}); + var routeParams = {model: 'collection', reportSchemaName: 'myReport'}; + var scope = $rootScope.$new(); + $controller('AnalysisCtrl', {$scope: scope, $routeParams: routeParams}); + $httpBackend.flush(); + expect(scope.report.length).toBe(2); + }); }); + + }); }); diff --git a/test/unit/searchSpec.js b/test/unit/searchSpec.js index 044ef69d..f379322f 100644 --- a/test/unit/searchSpec.js +++ b/test/unit/searchSpec.js @@ -1,157 +1,182 @@ +'use strict'; + describe('search', function () { - var scope, $httpBackend, $location; + var scope, $httpBackend, $location, elm; + + beforeEach(function () { + angular.mock.module('formsAngular'); + angular.mock.module('template/search-bs2.html'); + } + ); + + beforeEach(inject(function (_$httpBackend_, $rootScope, $compile, _$location_) { + $httpBackend = _$httpBackend_; + $location = _$location_; + elm = angular.element('
'); + scope = $rootScope; + $compile(elm)(scope); + scope.$digest(); + })); + + describe('form generation', function () { + + it('should have a search form', function () { + var form = elm.find('form'); + expect(form).toHaveClass('navbar-search'); + }); + + it('should not have an error class in the search box when the form is created', function () { + var div = elm.find('div:first'); + expect(div.attr('id')).toBe('search-cg'); + expect(div.attr('class')).toBe('control-group'); + }); - beforeEach(angular.mock.module('formsAngular')); + }); - beforeEach(inject(function (_$httpBackend_, $rootScope, $compile, _$location_) { - $httpBackend = _$httpBackend_; - $location = _$location_; - elm = angular.element('
'); - scope = $rootScope; - $compile(elm)(scope); - scope.$digest(); - })); + describe('results list', function () { - describe('form generation', function () { + it('displays one result when there is one', function () { + $httpBackend.whenGET('/api/search?q=hello').respond({results: [ + {id: '1', resource: 'resource', resourceText: 'Resource', text: 'Hello 1'} + ]}); + scope.searchTarget = 'hello'; + scope.$digest(); + $httpBackend.flush(); + var results = elm.find('span'); + expect(results.length).toBe(1); + }); - it('should have a search form', function () { - var form = elm.find('form'); - expect(form).toHaveClass('navbar-search'); - }); + it('displays two results when there are two', function () { + $httpBackend.whenGET('/api/search?q=hello').respond({results: [ + {id: '1', resource: 'resource', resourceText: 'Resource', text: 'Hello 1'}, + {id: '2', resource: 'resource', resourceText: 'Resource', text: 'Hello 2'} + ]}); + scope.searchTarget = 'hello'; + scope.$digest(); + $httpBackend.flush(); + var results = elm.find('span'); + expect(results.length).toBe(2); + var div = elm.find('div:first'); + expect(div.attr('class')).toBe('control-group'); + }); - it('should not have an error class in the search box when the form is created', function () { - var div = elm.find('div:first'); - expect(div.attr('id')).toBe('search-cg'); - expect(div.attr('class')).toBe('control-group'); - }); + it('should have an error class in the search box when the string is not found', function () { + $httpBackend.whenGET('/api/search?q=hello').respond({results: []}); + scope.searchTarget = 'hello'; + scope.$digest(); + $httpBackend.flush(); + var results = elm.find('span'); + expect(results.length).toBe(0); + var div = elm.find('div:first'); + expect(div.attr('class')).toBe('control-group error'); + scope.searchTarget = ''; + scope.$digest(); + expect(div.attr('class')).toBe('control-group'); + }); + it('formats results', function () { + $httpBackend.whenGET('/api/search?q=hello').respond({'results': [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99} + ], 'moreCount': 0}); + scope.searchTarget = 'hello'; + scope.$digest(); + $httpBackend.flush(); + var results = elm.find('span'); + expect(results.length).toBe(2); + results = elm.find('span:first'); + expect(results.text()).toMatch('Exams'); + expect(results.text()).toMatch('Brown, '); + expect(results.text()).toMatch('John'); }); - describe('results list', function() { - - it('displays one result when there is one', function() { - $httpBackend.whenGET('api/search?q=hello').respond({results:[{id:'1',resource:'resource',resourceText:'Resource',text:'Hello 1'}]}); - scope.searchTarget = 'hello'; - scope.$digest(); - $httpBackend.flush(); - var results = elm.find('span'); - expect(results.length).toBe(1); - }); - - it('displays two results when there are two', function() { - $httpBackend.whenGET('api/search?q=hello').respond({results:[{id:'1',resource:'resource',resourceText:'Resource',text:'Hello 1'},{id:'2',resource:'resource',resourceText:'Resource',text:'Hello 2'}]}); - scope.searchTarget = 'hello'; - scope.$digest(); - $httpBackend.flush(); - var results = elm.find('span'); - expect(results.length).toBe(2); - var div = elm.find('div:first'); - expect(div.attr('class')).toBe('control-group'); - }); - - it('should have an error class in the search box when the string is not found', function () { - $httpBackend.whenGET('api/search?q=hello').respond({results:[]}); - scope.searchTarget = 'hello'; - scope.$digest(); - $httpBackend.flush(); - var results = elm.find('span'); - expect(results.length).toBe(0); - var div = elm.find('div:first'); - expect(div.attr('class')).toBe('control-group error'); - scope.searchTarget = ''; - scope.$digest(); - expect(div.attr('class')).toBe('control-group'); - }); - - it('formats results', function () { - $httpBackend.whenGET('api/search?q=hello').respond({"results":[{"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99},{"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99}],"moreCount":0}); - scope.searchTarget = 'hello'; - scope.$digest(); - $httpBackend.flush(); - var results = elm.find('span'); - expect(results.length).toBe(2); - results = elm.find('span:first'); - expect(results.text()).toMatch('Exams'); - expect(results.text()).toMatch('Brown, '); - expect(results.text()).toMatch('John'); - }); - - it('should focus on the first result returned', function() { - $httpBackend.whenGET('api/search?q=hello').respond({"results":[{"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99},{"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99}],"moreCount":0}); - scope.searchTarget = 'hello'; - scope.$digest(); - $httpBackend.flush(); - expect(scope.results.length).toBe(2); - expect(scope.results[0].focussed).toBe(true); - expect(scope.results[1].focussed).toBe(undefined); - expect(scope.focus).toBe(0); - }); - - it('should focus on the next result when down arrow is pressed', function() { - scope.results = [ - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99, focussed:true}, - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99}]; - scope.focus = 0; - scope.handleKey({keyCode: 40}); - expect(scope.results[0].focussed).toBe(undefined); - expect(scope.results[1].focussed).toBe(true); - expect(scope.focus).toBe(1); - }); - - it('should not move focus when down arrow is pressed on last result', function() { - scope.results = [ - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99}, - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99, focussed:true}]; - scope.focus = 1; - scope.handleKey({keyCode: 40}); - expect(scope.results[0].focussed).toBe(undefined); - expect(scope.results[1].focussed).toBe(true); - expect(scope.focus).toBe(1); - }); - - it('should focus on the previous result when up arrow is pressed', function() { - scope.results = [ - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99}, - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99, focussed:true}]; - scope.focus = 1; - scope.handleKey({keyCode: 38}); - expect(scope.results[0].focussed).toBe(true); - expect(scope.results[1].focussed).toBe(undefined); - expect(scope.focus).toBe(0); - }); - - it('should not move focus when up arrow is pressed on top row', function() { - scope.results = [ - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99, focussed:true}, - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99}]; - scope.focus = 0; - scope.handleKey({keyCode: 38}); - expect(scope.results[0].focussed).toBe(true); - expect(scope.results[1].focussed).toBe(undefined); - expect(scope.focus).toBe(0); - }); - - it('should link to the selected result',function() { - scope.results = [ - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99, focussed:true}, - {"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99}]; - scope.focus = 0; - scope.handleKey({keyCode: 13}); - expect($location.path()).toBe('/f_nested_schema/51c583d5b5c51226db418f15/edit'); - }); - - it('should clear the target and the reults when Esc is pressed',function() { - $httpBackend.whenGET('api/search?q=hello').respond({"results":[{"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f15","text":"Brown, John","searchImportance":99},{"resource":"f_nested_schema","resourceText":"Exams","id":"51c583d5b5c51226db418f17","text":"Brown, Jenny","searchImportance":99}],"moreCount":0}); - scope.searchTarget = 'hello'; - scope.$digest(); - scope.handleKey({keyCode: 27}); - expect(scope.focus).toBe(null); - expect(scope.results).toEqual([]); - expect(scope.searchTarget).toBe(''); - }); + it('should focus on the first result returned', function () { + $httpBackend.whenGET('/api/search?q=hello').respond({'results': [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99} + ], 'moreCount': 0}); + scope.searchTarget = 'hello'; + scope.$digest(); + $httpBackend.flush(); + expect(scope.results.length).toBe(2); + expect(scope.results[0].focussed).toBe(true); + expect(scope.results[1].focussed).toBe(undefined); + expect(scope.focus).toBe(0); + }); + it('should focus on the next result when down arrow is pressed', function () { + scope.results = [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99, focussed: true}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99} + ]; + scope.focus = 0; + scope.handleKey({keyCode: 40}); + expect(scope.results[0].focussed).toBe(undefined); + expect(scope.results[1].focussed).toBe(true); + expect(scope.focus).toBe(1); }); + it('should not move focus when down arrow is pressed on last result', function () { + scope.results = [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99, focussed: true} + ]; + scope.focus = 1; + scope.handleKey({keyCode: 40}); + expect(scope.results[0].focussed).toBe(undefined); + expect(scope.results[1].focussed).toBe(true); + expect(scope.focus).toBe(1); + }); + + it('should focus on the previous result when up arrow is pressed', function () { + scope.results = [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99, focussed: true} + ]; + scope.focus = 1; + scope.handleKey({keyCode: 38}); + expect(scope.results[0].focussed).toBe(true); + expect(scope.results[1].focussed).toBe(undefined); + expect(scope.focus).toBe(0); + }); + + it('should not move focus when up arrow is pressed on top row', function () { + scope.results = [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99, focussed: true}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99} + ]; + scope.focus = 0; + scope.handleKey({keyCode: 38}); + expect(scope.results[0].focussed).toBe(true); + expect(scope.results[1].focussed).toBe(undefined); + expect(scope.focus).toBe(0); + }); + + it('should link to the selected result', function () { + scope.results = [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99, focussed: true}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99} + ]; + scope.focus = 0; + scope.handleKey({keyCode: 13}); + expect($location.path()).toBe('/f_nested_schema/51c583d5b5c51226db418f15/edit'); + }); + + it('should clear the target and the reults when Esc is pressed', function () { + $httpBackend.whenGET('/api/search?q=hello').respond({'results': [ + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f15', 'text': 'Brown, John', 'searchImportance': 99}, + {'resource': 'f_nested_schema', 'resourceText': 'Exams', 'id': '51c583d5b5c51226db418f17', 'text': 'Brown, Jenny', 'searchImportance': 99} + ], 'moreCount': 0}); + scope.searchTarget = 'hello'; + scope.$digest(); + scope.handleKey({keyCode: 27}); + expect(scope.focus).toBe(null); + expect(scope.results).toEqual([]); + expect(scope.searchTarget).toBe(''); + }); + + }); + }); \ No newline at end of file diff --git a/test/unit/select2.js b/test/unit/select2.js index c22159da..428f72d3 100644 --- a/test/unit/select2.js +++ b/test/unit/select2.js @@ -1,61 +1,79 @@ +'use strict'; + describe('select2', function () { - var scope, ctrl; + var scope, ctrl, $httpBackend; - // load the form code - beforeEach(angular.mock.module('formsAngular')); + // load the form code + beforeEach(angular.mock.module('formsAngular')); - describe('generates select2s for reference lookups', function () { + describe('generates select2s for reference lookups', function () { - beforeEach(inject(function(_$httpBackend_, $rootScope, $location, $controller) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/collection').respond( - {"surname":{"enumValues":[],"regExp":null,"path":"surname","instance":"String","validators":[[null,"required"]],"setters":[],"getters":[],"options":{"required":true},"_index":null,"isRequired":true}, - "eyeColour":{"enumValues":["Blue","Brown","Green","Hazel"],"regExp":null,"path":"eyeColour","instance":"String","validators":[[null,"enum"]],"setters":[],"getters":[],"options":{"enum":["Blue","Brown","Green","Hazel"],"required":false,"form":{"placeHolder":"Select eye colour","select2":{}}},"_index":null,"isRequired":false,"$conditionalHandlers":{}}} - ); - scope = $rootScope.$new(); - $location.$$path = '/collection/new'; - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - })); + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/collection').respond( + {'surname': {'enumValues': [], 'regExp': null, 'path': 'surname', 'instance': 'String', 'validators': [ + [null, 'required'] + ], 'setters': [], 'getters': [], 'options': {'required': true}, '_index': null, 'isRequired': true}, + 'eyeColour': {'enumValues': ['Blue', 'Brown', 'Green', 'Hazel'], 'regExp': null, 'path': 'eyeColour', 'instance': 'String', 'validators': [ + [null, 'enum'] + ], 'options': { + 'enum': ['Blue', 'Brown', 'Green', 'Hazel'], + 'required': false, + 'form': {'placeHolder': 'Select eye colour', 'select2': {}} + }, '_index': null, 'isRequired': false, '$conditionalHandlers': {}}} + ); + scope = $rootScope.$new(); + $location.$$path = '/collection/new'; + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + })); - it('creates correct formschema elements', function() { - expect(scope.formSchema.length).toBe(2); - expect(scope.formSchema[1].placeHolder).toBe('Select eye colour'); - expect(scope.formSchema[1].select2.s2query).toBe('select2eyeColour'); - expect(scope[scope.formSchema[1].select2.s2query].allowClear).toBe(true); - expect(typeof scope[scope.formSchema[1].select2.s2query].initSelection).toBe("function"); - expect(typeof scope[scope.formSchema[1].select2.s2query].query).toBe("function"); - expect(scope.formSchema[1].type).toBe('select'); - expect(scope.formSchema[1].hasOwnProperty('required')).toBe(false); - }); + it('creates correct formschema elements', function () { + expect(scope.formSchema.length).toBe(2); + expect(scope.formSchema[1].placeHolder).toBe('Select eye colour'); + expect(scope.formSchema[1].select2.s2query).toBe('select2eyeColour'); + expect(scope[scope.formSchema[1].select2.s2query].allowClear).toBe(true); + expect(typeof scope[scope.formSchema[1].select2.s2query].initSelection).toBe('function'); + expect(typeof scope[scope.formSchema[1].select2.s2query].query).toBe('function'); + expect(scope.formSchema[1].type).toBe('select'); + expect(scope.formSchema[1].hasOwnProperty('required')).toBe(false); }); + }); - describe('generates correct values in record', function () { + describe('generates correct values in record', function () { - beforeEach(inject(function(_$httpBackend_, $rootScope, $location, $controller) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/collection').respond( - {"surname":{"enumValues":[],"regExp":null,"path":"surname","instance":"String","validators":[[null,"required"]],"setters":[],"getters":[],"options":{"required":true},"_index":null,"isRequired":true}, - "eyeColour":{"enumValues":["Blue","Brown","Green","Hazel"],"regExp":null,"path":"eyeColour","instance":"String","validators":[[null,"enum"]],"setters":[],"getters":[],"options":{"enum":["Blue","Brown","Green","Hazel"],"required":false,"form":{"placeHolder":"Select eye colour","select2":{}}},"_index":null,"isRequired":false,"$conditionalHandlers":{}}} - ); - $httpBackend.whenGET('api/collection/3').respond( - {"surname":"Smith","eyeColour":"Green"} - ); - scope = $rootScope.$new(); - $location.$$path = '/collection/3/edit'; - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - })); + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/collection').respond( + {'surname': {'enumValues': [], 'regExp': null, 'path': 'surname', 'instance': 'String', 'validators': [ + [null, 'required'] + ], 'setters': [], 'getters': [], 'options': {'required': true}, '_index': null, 'isRequired': true}, + 'eyeColour': {'enumValues': ['Blue', 'Brown', 'Green', 'Hazel'], 'regExp': null, 'path': 'eyeColour', 'instance': 'String', 'validators': [ + [null, 'enum'] + ], 'options': { + 'enum': ['Blue', 'Brown', 'Green', 'Hazel'], + 'required': false, + 'form': {'placeHolder': 'Select eye colour', 'select2': {}} + }, '_index': null, 'isRequired': false, '$conditionalHandlers': {}}} + ); + $httpBackend.whenGET('/api/collection/3').respond( + {'surname': 'Smith', 'eyeColour': 'Green'} + ); + scope = $rootScope.$new(); + $location.$$path = '/collection/3/edit'; + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + })); - it('(text)', function() { - expect(scope.record.eyeColour.text).toBe("Green"); - }); + it('(text)', function () { + expect(scope.record.eyeColour.text).toBe('Green'); + }); - it('(id)', function() { - expect(scope.record.eyeColour.id).toBe(2); - }); + it('(id)', function () { + expect(scope.record.eyeColour.id).toBe(2); }); + }); // TODO - getting rid of this for now // Intend to reintroduce when have done something to decouple schema and formSchema @@ -64,16 +82,18 @@ describe('select2', function () { // // beforeEach(inject(function(_$httpBackend_, $rootScope, $location, $controller, $compile) { // $httpBackend = _$httpBackend_; -// $httpBackend.whenGET('api/schema/collection').respond({ "eyeColour":{"enumValues":["Blue","Brown","Green","Hazel"],"regExp":null,"path":"eyeColour","instance":"String","validators":[[null,"enum"]],"setters":[],"getters":[],"options":{"enum":["Blue","Brown","Green","Hazel"],"required":false,"form":{"placeHolder":"Select eye colour","select2":{}}},"_index":null,"isRequired":false,"$conditionalHandlers":{}}}); +// $httpBackend.whenGET('api/schema/collection').respond({ 'eyeColour':{'enumValues':['Blue','Brown','Green','Hazel'],'regExp':null,'path':'eyeColour','instance':'String', +// 'validators':[[null,'enum']],'setters':[],'getters':[],'options':{'enum':['Blue','Brown','Green','Hazel'],'required':false,'form':{'placeHolder':'Select eye colour','select2':{}}}, +// '_index':null,'isRequired':false,'$conditionalHandlers':{}}}); // scope = $rootScope.$new(); // $location.$$path = '/collection/new'; -// ctrl = $controller("BaseCtrl", {$scope: scope}); +// ctrl = $controller('BaseCtrl', {$scope: scope}); // $httpBackend.flush(); // // elm = angular.element( -// '
' + -//// '' + -// ''+ +// '' + +//// '' + +// ''+ // // '
'); // $compile(elm)(scope); diff --git a/test/unit/subkeySpec.js b/test/unit/subkeySpec.js index 2a6eedba..a6809e8c 100644 --- a/test/unit/subkeySpec.js +++ b/test/unit/subkeySpec.js @@ -1,335 +1,339 @@ +'use strict'; + describe('Subkeys', function () { - beforeEach(function () { - angular.mock.module('formsAngular'); + var input; + + beforeEach(function () { + angular.mock.module('formsAngular'); + }); + + describe('simple subkey', function () { + + var $httpBackend, scope, ctrl, elm, + subkeySchema = { + 'surname': {'path': 'surname', 'instance': 'String', 'options': {'index': true, 'list': {}}, '_index': true, '$conditionalHandlers': {}}, + 'forename': {'path': 'forename', 'instance': 'String', 'options': {'index': true, 'list': true}, '_index': true, '$conditionalHandlers': {}}, + 'exams': { + 'schema': { + 'subject': {'path': 'subject', 'instance': 'String', 'options': {}, '_index': null, '$conditionalHandlers': {}}, + 'score': {'path': 'score', 'instance': 'Number', 'options': {}, '_index': null, '$conditionalHandlers': {}} + }, + 'options': { + 'form': { + 'formStyle': 'inline', + 'subkey': { + 'keyList': {'subject': 'English'}, + 'container': 'fieldset', + 'title': 'English Exam' + } + } + } + } + }; + + afterEach(function () { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); }); - describe('simple subkey', function () { - - var $httpBackend, scope, ctrl, elm, - subkeySchema = { - "surname": {"enumValues": [], "regExp": null, "path": "surname", "instance": "String", "validators": [], "setters": [], "getters": [], "options": {"index": true, "list": {}}, "_index": true, "$conditionalHandlers": {}}, - "forename": {"enumValues": [], "regExp": null, "path": "forename", "instance": "String", "validators": [], "setters": [], "getters": [], "options": {"index": true, "list": true}, "_index": true, "$conditionalHandlers": {}}, - "exams": { - "schema": { - "subject": {"enumValues": [], "regExp": null, "path": "subject", "instance": "String", "validators": [], "setters": [], "getters": [], "options": {}, "_index": null, "$conditionalHandlers": {}}, - "score": {"path": "score", "instance": "Number", "validators": [], "setters": [], "getters": [], "options": {}, "_index": null, "$conditionalHandlers": {}} - }, - "options": { - "form": { - "formStyle": "inline", - "subkey": { - "keyList": {"subject": "English"}, - "container": "fieldset", - "title": "English Exam" - } - } - } - } - }; - - afterEach(function () { - $httpBackend.verifyNoOutstandingExpectation(); - $httpBackend.verifyNoOutstandingRequest(); + describe('existing data with selected data present in first position', function () { + + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/f_nested_schema/English').respond(subkeySchema); + $httpBackend.whenGET('/api/f_nested_schema/51c583d5b5c51226db418f16').respond({ + '_id': '51c583d5b5c51226db418f16', + 'surname': 'Smith', + 'forename': 'Anne', + 'exams': [ + { + 'subject': 'English', + 'score': 83 + }, + { + 'subject': 'French', + 'score': 34 + }, + { + 'subject': 'Maths', + 'score': 97 + } + ] }); + $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; + elm = angular.element( + '
' + + '' + + '
'); + scope = $rootScope.$new(); + $compile(elm)(scope); + scope.$digest(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + })); + + it('generates correct fields', function () { + // correct number of fields - excluding subkey + input = elm.find('input'); + expect(input.length).toBe(3); + + var label = angular.element(elm.find('label')[0]); + expect(label.text()).toBe('Surname'); + label = angular.element(elm.find('label')[1]); + expect(label.text()).toBe('Forename'); + label = angular.element(elm.find('label')[2]); + expect(label.text()).toBe('Score'); + + input = angular.element(elm.find('input')[2]); + expect(input.val()).toBe('83'); + }); - describe('existing data with selected data present in first position', function () { - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/f_nested_schema/English').respond(subkeySchema); - $httpBackend.whenGET('api/f_nested_schema/51c583d5b5c51226db418f16').respond({ - "_id": "51c583d5b5c51226db418f16", - "surname": "Smith", - "forename": "Anne", - "exams": [ - { - "subject": "English", - "score": 83 - }, - { - "subject": "French", - "score": 34 - }, - { - "subject": "Maths", - "score": 97 - } - ] - }); - $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; - elm = angular.element( - '
' + - '' + - '
'); - scope = $rootScope.$new(); - $compile(elm)(scope); - scope.$digest(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - })); - - it('generates correct fields', function () { - // correct number of fields - excluding subkey - var input = elm.find('input'); - expect(input.length).toBe(3); - - var label = angular.element(elm.find('label')[0]); - expect(label.text()).toBe('Surname'); - label = angular.element(elm.find('label')[1]); - expect(label.text()).toBe('Forename'); - label = angular.element(elm.find('label')[2]); - expect(label.text()).toBe('Score'); - - input = angular.element(elm.find('input')[2]); - expect(input.val()).toBe('83'); - }); + }); + describe('existing data with selected data present in different position', function () { + + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/f_nested_schema/English').respond(subkeySchema); + $httpBackend.whenGET('/api/f_nested_schema/51c583d5b5c51226db418f16').respond({ + '_id': '51c583d5b5c51226db418f16', + 'surname': 'Smith', + 'forename': 'Anne', + 'exams': [ + { + 'subject': 'French', + 'examDate': '2013-03-11T23:00:00.000Z', + 'score': 34, + 'result': 'fail' + }, + { + 'subject': 'English', + 'examDate': '2013-05-12T23:00:00.000Z', + 'score': 83, + 'result': 'pass' + }, + { + 'subject': 'Maths', + 'examDate': '2013-05-11T23:00:00.000Z', + 'score': 97, + 'result': 'distinction' + } + ] }); + $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; + elm = angular.element( + '
' + + '' + + '
'); + scope = $rootScope.$new(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + $compile(elm)(scope); + scope.$digest(); + })); + + it('gets correct array element', function () { + input = angular.element(elm.find('input')[2]); + expect(input.val()).toBe('83'); + }); - describe('existing data with selected data present in different position', function () { - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/f_nested_schema/English').respond(subkeySchema); - $httpBackend.whenGET('api/f_nested_schema/51c583d5b5c51226db418f16').respond({ - "_id": "51c583d5b5c51226db418f16", - "surname": "Smith", - "forename": "Anne", - "exams": [ - { - "subject": "French", - "examDate": "2013-03-11T23:00:00.000Z", - "score": 34, - "result": "fail" - }, - { - "subject": "English", - "examDate": "2013-05-12T23:00:00.000Z", - "score": 83, - "result": "pass" - }, - { - "subject": "Maths", - "examDate": "2013-05-11T23:00:00.000Z", - "score": 97, - "result": "distinction" - } - ] - }); - $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; - elm = angular.element( - '
' + - '' + - '
'); - scope = $rootScope.$new(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - $compile(elm)(scope); - scope.$digest(); - })); - - it('gets correct array element', function () { - input = angular.element(elm.find('input')[2]); - expect(input.val()).toBe('83'); - }); + }); + describe('existing data without required subschema', function () { + + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/f_nested_schema/English').respond(subkeySchema); + $httpBackend.whenGET('/api/f_nested_schema/51c583d5b5c51226db418f16').respond({ + '_id': '51c583d5b5c51226db418f16', + 'surname': 'Smith', + 'forename': 'Anne', + 'exams': [ + { + 'subject': 'French', + 'examDate': '2013-03-11T23:00:00.000Z', + 'score': 34, + 'result': 'fail' + }, + { + 'subject': 'Maths', + 'examDate': '2013-05-11T23:00:00.000Z', + 'score': 97, + 'result': 'distinction' + } + ] }); + $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; + elm = angular.element( + '
' + + '' + + '
'); + scope = $rootScope.$new(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + $compile(elm)(scope); + scope.$digest(); + })); + + it('creates a new array element', function () { + expect(scope.record.exams.length).toBe(3); + expect(scope.record.exams[2].subject).toBe('English'); + }); - describe('existing data without required subschema', function () { - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/f_nested_schema/English').respond(subkeySchema); - $httpBackend.whenGET('api/f_nested_schema/51c583d5b5c51226db418f16').respond({ - "_id": "51c583d5b5c51226db418f16", - "surname": "Smith", - "forename": "Anne", - "exams": [ - { - "subject": "French", - "examDate": "2013-03-11T23:00:00.000Z", - "score": 34, - "result": "fail" - }, - { - "subject": "Maths", - "examDate": "2013-05-11T23:00:00.000Z", - "score": 97, - "result": "distinction" - } - ] - }); - $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; - elm = angular.element( - '
' + - '' + - '
'); - scope = $rootScope.$new(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - $compile(elm)(scope); - scope.$digest(); - })); - - it('creates a new array element', function () { - expect(scope.record.exams.length).toBe(3); - expect(scope.record.exams[2].subject).toBe('English'); - }); - - }); + }); - describe('existing data without any subschema', function () { - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/f_nested_schema/English').respond(subkeySchema); - $httpBackend.whenGET('api/f_nested_schema/51c583d5b5c51226db418f16').respond({ - "_id": "51c583d5b5c51226db418f16", - "surname": "Smith", - "forename": "Anne" - }); - $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; - elm = angular.element( - '
' + - '' + - '
'); - scope = $rootScope.$new(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - $compile(elm)(scope); - scope.$digest(); - })); - - it('creates a new array element', function () { - expect(scope.record.exams.length).toBe(1); - expect(scope.record.exams[0].subject).toBe('English'); - }); + describe('existing data without any subschema', function () { + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/f_nested_schema/English').respond(subkeySchema); + $httpBackend.whenGET('/api/f_nested_schema/51c583d5b5c51226db418f16').respond({ + '_id': '51c583d5b5c51226db418f16', + 'surname': 'Smith', + 'forename': 'Anne' }); + $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; + elm = angular.element( + '
' + + '' + + '
'); + scope = $rootScope.$new(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + $compile(elm)(scope); + scope.$digest(); + })); + + it('creates a new array element', function () { + expect(scope.record.exams.length).toBe(1); + expect(scope.record.exams[0].subject).toBe('English'); + }); - describe('new data', function () { - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/f_nested_schema/English').respond(subkeySchema); - $location.$$path = '/f_nested_schema/English/new'; - elm = angular.element( - '
' + - '' + - '
'); - scope = $rootScope.$new(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - $compile(elm)(scope); - scope.$digest(); - })); - - it('creates a new array element', function () { - expect(scope.record.exams.length).toBe(1); - expect(scope.record.exams[0].subject).toBe('English'); - }); + }); - }); + describe('new data', function () { + + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/f_nested_schema/English').respond(subkeySchema); + $location.$$path = '/f_nested_schema/English/new'; + elm = angular.element( + '
' + + '' + + '
'); + scope = $rootScope.$new(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + $compile(elm)(scope); + scope.$digest(); + })); + + it('creates a new array element', function () { + expect(scope.record.exams.length).toBe(1); + expect(scope.record.exams[0].subject).toBe('English'); + }); }); - describe('two subkeys', function () { - - var $httpBackend, scope, ctrl, elm, - subkeySchema = { - "surname": {"enumValues": [], "regExp": null, "path": "surname", "instance": "String", "validators": [], "setters": [], "getters": [], "options": {"index": true, "list": {}}, "_index": true, "$conditionalHandlers": {}}, - "forename": {"enumValues": [], "regExp": null, "path": "forename", "instance": "String", "validators": [], "setters": [], "getters": [], "options": {"index": true, "list": true}, "_index": true, "$conditionalHandlers": {}}, - "exams": { - "schema": { - "subject": {"enumValues": [], "regExp": null, "path": "subject", "instance": "String", "validators": [], "setters": [], "getters": [], "options": {}, "_index": null, "$conditionalHandlers": {}}, - "score": {"path": "score", "instance": "Number", "validators": [], "setters": [], "getters": [], "options": {}, "_index": null, "$conditionalHandlers": {}} - }, - "options": { - "form": { - "formStyle": "inline", - "subkey": [ - { - "keyList": {"subject": "English"}, - "container": "fieldset", - "title": "English Exam" - }, - { - "keyList": {"subject": "Maths"}, - "container": "fieldset", - "title": "Maths Exam" - } - ] - } - } + }); + + describe('two subkeys', function () { + + var $httpBackend, scope, ctrl, elm, + subkeySchema = { + 'surname': {'path': 'surname', 'instance': 'String', 'options': {'index': true, 'list': {}}, '_index': true, '$conditionalHandlers': {}}, + 'forename': {'path': 'forename', 'instance': 'String', 'options': {'index': true, 'list': true}, '_index': true, '$conditionalHandlers': {}}, + 'exams': { + 'schema': { + 'subject': {'path': 'subject', 'instance': 'String', 'options': {}, '_index': null, '$conditionalHandlers': {}}, + 'score': {'path': 'score', 'instance': 'Number', 'options': {}, '_index': null, '$conditionalHandlers': {}} + }, + 'options': { + 'form': { + 'formStyle': 'inline', + 'subkey': [ + { + 'keyList': {'subject': 'English'}, + 'container': 'fieldset', + 'title': 'English Exam' + }, + { + 'keyList': {'subject': 'Maths'}, + 'container': 'fieldset', + 'title': 'Maths Exam' } - }; - - afterEach(function () { - $httpBackend.verifyNoOutstandingExpectation(); - $httpBackend.verifyNoOutstandingRequest(); - }); - - describe('existing data with selected data', function () { - - beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { - $httpBackend = _$httpBackend_; - $httpBackend.whenGET('api/schema/f_nested_schema/English').respond(subkeySchema); - $httpBackend.whenGET('api/f_nested_schema/51c583d5b5c51226db418f16').respond({ - "_id": "51c583d5b5c51226db418f16", - "surname": "Smith", - "forename": "Anne", - "exams": [ - { - "subject": "English", - "score": 83 - }, - { - "subject": "French", - "score": 34 - }, - { - "subject": "Maths", - "score": 97 - } - ] - }); - $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; - elm = angular.element( - '
' + - '' + - '
'); - scope = $rootScope.$new(); - $compile(elm)(scope); - scope.$digest(); - ctrl = $controller("BaseCtrl", {$scope: scope}); - $httpBackend.flush(); - })); - - it('generates correct fields', function () { - // correct number of fields - excluding subkey - var input = elm.find('input'); - expect(input.length).toBe(4); - - var label = angular.element(elm.find('label')[0]); - expect(label.text()).toBe('Surname'); - label = angular.element(elm.find('label')[1]); - expect(label.text()).toBe('Forename'); - label = angular.element(elm.find('label')[2]); - expect(label.text()).toBe('Score'); - label = angular.element(elm.find('label')[3]); - expect(label.text()).toBe('Score'); - - input = angular.element(elm.find('input')[2]); - expect(input.val()).toBe('83'); - input = angular.element(elm.find('input')[3]); - expect(input.val()).toBe('97'); - }); + ] + } + } + } + }; + + afterEach(function () { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); + }); + describe('existing data with selected data', function () { + + beforeEach(inject(function (_$httpBackend_, $rootScope, $location, $controller, $compile) { + $httpBackend = _$httpBackend_; + $httpBackend.whenGET('/api/schema/f_nested_schema/English').respond(subkeySchema); + $httpBackend.whenGET('/api/f_nested_schema/51c583d5b5c51226db418f16').respond({ + '_id': '51c583d5b5c51226db418f16', + 'surname': 'Smith', + 'forename': 'Anne', + 'exams': [ + { + 'subject': 'English', + 'score': 83 + }, + { + 'subject': 'French', + 'score': 34 + }, + { + 'subject': 'Maths', + 'score': 97 + } + ] }); + $location.$$path = '/f_nested_schema/English/51c583d5b5c51226db418f16/edit'; + elm = angular.element( + '
' + + '' + + '
'); + scope = $rootScope.$new(); + $compile(elm)(scope); + scope.$digest(); + ctrl = $controller('BaseCtrl', {$scope: scope}); + $httpBackend.flush(); + })); + + it('generates correct fields', function () { + // correct number of fields - excluding subkey + var input = elm.find('input'); + expect(input.length).toBe(4); + + var label = angular.element(elm.find('label')[0]); + expect(label.text()).toBe('Surname'); + label = angular.element(elm.find('label')[1]); + expect(label.text()).toBe('Forename'); + label = angular.element(elm.find('label')[2]); + expect(label.text()).toBe('Score'); + label = angular.element(elm.find('label')[3]); + expect(label.text()).toBe('Score'); + + input = angular.element(elm.find('input')[2]); + expect(input.val()).toBe('83'); + input = angular.element(elm.find('input')[3]); + expect(input.val()).toBe('97'); + }); }); + }); + }); diff --git a/test/unit/titleCaseSpec.js b/test/unit/titleCaseSpec.js index a8a3ecf6..6685d6cb 100644 --- a/test/unit/titleCaseSpec.js +++ b/test/unit/titleCaseSpec.js @@ -1,23 +1,25 @@ -describe('titlecase', function() { +'use strict'; - beforeEach(module('formsAngular')); +describe('titlecase', function () { - it('should put spaces before capitals', function() { - inject(function($filter) { - expect($filter('titleCase')('HelloThere')).toBe('Hello There'); - }); + beforeEach(module('formsAngular')); + + it('should put spaces before capitals', function () { + inject(function ($filter) { + expect($filter('titleCase')('HelloThere')).toBe('Hello There'); }); + }); - it('should put not mess with something already in title case', function() { - inject(function($filter) { - expect($filter('titleCase')('Hello There')).toBe('Hello There'); - }); + it('should put not mess with something already in title case', function () { + inject(function ($filter) { + expect($filter('titleCase')('Hello There')).toBe('Hello There'); }); + }); - it('should replace underscores with spaces', function() { - inject(function($filter) { - expect($filter('titleCase')('hello_there')).toBe('Hello There'); - }); + it('should replace underscores with spaces', function () { + inject(function ($filter) { + expect($filter('titleCase')('hello_there')).toBe('Hello There'); }); + }); }); \ No newline at end of file