From c87af9c8164f08a642929ade7f3dacd18ff18b68 Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Thu, 1 Jun 2017 16:04:31 -0400 Subject: [PATCH 01/90] (GH1986) adds nightmare dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 59141648c..5008e5226 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "grunt-zip": "0.17.1", "load-grunt-config": "0.19.2", "load-grunt-tasks": "3.5.2", + "nightmare": "^2.10.0", "semver": "5.3.0", "serve-static": "1.12.2" }, From 7c4f4fe6d79b9a6f5362fedea3486657d3560eb0 Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Thu, 1 Jun 2017 16:09:19 -0400 Subject: [PATCH 02/90] (GH1986) adds mocha dependency for niffy --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 5008e5226..19259d3f4 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "grunt-zip": "0.17.1", "load-grunt-config": "0.19.2", "load-grunt-tasks": "3.5.2", + "mocha": "^3.4.2", "nightmare": "^2.10.0", "semver": "5.3.0", "serve-static": "1.12.2" From 5e71e52715f0706bf1bb5ab0f5b7785654bcdb3f Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Thu, 1 Jun 2017 16:19:06 -0400 Subject: [PATCH 03/90] (GH1986) adds chai dependency for niffy --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 19259d3f4..3ecd3a720 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "description": "Base Fuel UX styles and controls", "devDependencies": { "bower": "1.8.0", + "chai": "^4.0.1", "connect": "3.6.1", "eslint": "^3.5.0", "eslint-config-airbnb-es5": "^1.0.9", From 2e8972e51799560cc4428541fe63f8b33f18add7 Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Thu, 1 Jun 2017 16:19:33 -0400 Subject: [PATCH 04/90] (GH1986) adds niffy dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 3ecd3a720..e2fd35a99 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "load-grunt-config": "0.19.2", "load-grunt-tasks": "3.5.2", "mocha": "^3.4.2", + "niffy": "^0.2.0", "nightmare": "^2.10.0", "semver": "5.3.0", "serve-static": "1.12.2" From 477b0380b65844f58a8f729fb8be9361e068b8a8 Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Thu, 1 Jun 2017 16:31:16 -0400 Subject: [PATCH 05/90] (GH1986) adds co-mocha dependency for niffy --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index e2fd35a99..d33317349 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "devDependencies": { "bower": "1.8.0", "chai": "^4.0.1", + "co-mocha": "^1.2.0", "connect": "3.6.1", "eslint": "^3.5.0", "eslint-config-airbnb-es5": "^1.0.9", From cf685c80881479841db9589867782143221bbdeb Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Thu, 1 Jun 2017 16:40:30 -0400 Subject: [PATCH 06/90] (GH1986) adds skeleton mocha tests for niffy --- package.json | 2 +- test/mocha.js | 12 ++++++++++++ test/mocha.opts | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test/mocha.js create mode 100644 test/mocha.opts diff --git a/package.json b/package.json index d33317349..973e1adb7 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "scripts": { "main": "devserver.js", "start": "grunt serve", - "test": "grunt travisci --verbose", + "test": "mocha test/mocha.js && grunt travisci --verbose", "postinstall": "node postinstall.js", "local": "grunt servefast", "release": "grunt release" diff --git a/test/mocha.js b/test/mocha.js new file mode 100644 index 000000000..22a72fd88 --- /dev/null +++ b/test/mocha.js @@ -0,0 +1,12 @@ +/* global describe:false, it:false */ + +/* mocha tests for Niffy go here */ + +var assert = require('assert'); +describe('Array', function testArray () { + describe('#indexOf()', function testIndexOf () { + it('should return -1 when the value is not present', function testReturn () { + assert.equal(-1, [1, 2, 3].indexOf(4)); + }); + }); +}); diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 000000000..88e074673 --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,3 @@ +--slow 10s +--timeout 200s +--require co-mocha \ No newline at end of file From 892078813a678e9970b2ce7880f2e0c3b7c915f4 Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Thu, 1 Jun 2017 17:10:53 -0400 Subject: [PATCH 07/90] (GH1986) very basic niffy test of index.html page --- test/mocha.js | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/test/mocha.js b/test/mocha.js index 22a72fd88..7c653a7bb 100644 --- a/test/mocha.js +++ b/test/mocha.js @@ -1,12 +1,29 @@ -/* global describe:false, it:false */ +/* global describe:false, it:false, before:false, after:false */ /* mocha tests for Niffy go here */ -var assert = require('assert'); -describe('Array', function testArray () { - describe('#indexOf()', function testIndexOf () { - it('should return -1 when the value is not present', function testReturn () { - assert.equal(-1, [1, 2, 3].indexOf(4)); +var should = require('chai').should(); +var Niffy = require('niffy'); +describe('Segment App', function () { + var basehost = 'http://fuelux-edge.herokuapp.com/'; + var testhost = 'http://localhost:8000/'; + var niffy; + before(function instantiateNiffy () { + niffy = new Niffy(basehost, testhost, { show: true, threshold: 0 }); + }); + after(function* () { + yield niffy.end(); + }); + + /** + * Logged in. + */ + describe('Logged In', function () { + /** + * Top level. + */ + it('/', function* () { + yield niffy.test('/'); }); }); }); From 7df8b00d78c1cf2d0a375d30ed7466d1bfacb1a4 Mon Sep 17 00:00:00 2001 From: Christopher McCulloh Date: Tue, 6 Jun 2017 13:45:06 -0400 Subject: [PATCH 08/90] (GH1986) basic regression test of checkbox as POC. --- Gruntfile.js | 4 +- dist/css/fuelux.css | 3 +- dist/css/fuelux.min.css | 3 +- dist/fuelux.zip | Bin 220017 -> 220211 bytes dist/js/fuelux.js | 3 +- dist/js/fuelux.min.js | 3 +- grunt/config/connect.js | 18 +- grunt/config/watch.js | 19 +- grunt/tasks/serve.js | 35 +- reference/dist/css/fuelux.css | 3156 +++++++ reference/dist/fonts/fuelux.eot | Bin 0 -> 2048 bytes reference/dist/fonts/fuelux.svg | 20 + reference/dist/fonts/fuelux.ttf | Bin 0 -> 1888 bytes reference/dist/fonts/fuelux.woff | Bin 0 -> 1300 bytes reference/dist/js/fuelux.js | 8369 +++++++++++++++++ .../templates/handlebars/bootstrap/button.hbs | 7 + .../templates/handlebars/bootstrap/input.hbs | 32 + .../handlebars/bootstrap/modal-trigger.hbs | 3 + .../templates/handlebars/bootstrap/modal.hbs | 17 + .../handlebars/bootstrap/textarea.hbs | 7 + .../templates/handlebars/fuelux/checkbox.hbs | 15 + .../templates/handlebars/fuelux/combobox.hbs | 20 + .../handlebars/fuelux/datepicker.hbs | 79 + .../handlebars/fuelux/infinite-scroll.hbs | 1 + .../templates/handlebars/fuelux/loader.hbs | 1 + .../templates/handlebars/fuelux/pillbox.hbs | 21 + .../templates/handlebars/fuelux/placard.hbs | 20 + .../templates/handlebars/fuelux/radio.hbs | 15 + .../templates/handlebars/fuelux/repeater.hbs | 93 + .../templates/handlebars/fuelux/scheduler.hbs | 676 ++ .../templates/handlebars/fuelux/search.hbs | 18 + .../handlebars/fuelux/selectlist.hbs | 19 + .../templates/handlebars/fuelux/spinbox.hbs | 18 + .../dist/templates/handlebars/fuelux/tree.hbs | 29 + .../templates/handlebars/fuelux/wizard.hbs | 21 + .../underscore/bootstrap/button-group.html | 11 + .../underscore/bootstrap/button.html | 8 + .../underscore/bootstrap/file-button.html | 8 + .../bootstrap/input-with-button-dropdown.html | 18 + .../bootstrap/input-with-checkbox.html | 14 + .../underscore/bootstrap/input-with-text.html | 12 + .../templates/underscore/bootstrap/input.html | 8 + .../underscore/bootstrap/select.html | 10 + .../underscore/bootstrap/textarea.html | 8 + .../underscore/fuelux/checkboxes-inline.html | 11 + .../underscore/fuelux/checkboxes.html | 13 + .../fuelux/input-with-combobox.html | 17 + .../underscore/fuelux/radios-inline.html | 11 + .../templates/underscore/fuelux/radios.html | 13 + .../templates/underscore/fuelux/search.html | 17 + .../underscore/fuelux/selectlist.html | 18 + .../templates/underscore/fuelux/spinbox.html | 18 + reference/markup/README.md | 3 + .../markup}/checkbox-inline-no-js.html | 0 .../markup}/checkbox-inline.html | 0 .../markup}/checkbox-no-js-variations.txt | 0 .../markup}/checkbox-no-js.html | 0 .../markup}/checkbox-variations.txt | 0 {markup => reference/markup}/checkbox.html | 0 .../markup}/combobox-variations.txt | 0 {markup => reference/markup}/combobox.html | 0 {markup => reference/markup}/datepicker.html | 0 .../markup}/infinite-scroll.html | 0 .../markup}/loader-variations.txt | 0 {markup => reference/markup}/loader.html | 0 .../markup}/pillbox-variations.txt | 0 .../markup}/pillbox-with-pills.html | 0 {markup => reference/markup}/pillbox.html | 0 .../markup}/placard-header-footer.html | 0 .../markup}/placard-variations.txt | 0 {markup => reference/markup}/placard.html | 0 .../markup}/radio-inline-no-js.html | 0 .../markup}/radio-inline.html | 0 .../markup}/radio-no-js-variations.txt | 0 {markup => reference/markup}/radio-no-js.html | 0 .../markup}/radio-variations.txt | 0 {markup => reference/markup}/radio.html | 0 .../markup}/repeater-variations.txt | 0 {markup => reference/markup}/repeater.html | 0 {markup => reference/markup}/scheduler.html | 0 {markup => reference/markup}/search.html | 0 .../markup}/selectlist-variations.txt | 0 {markup => reference/markup}/selectlist.html | 0 .../markup}/spinbox-variations.txt | 0 {markup => reference/markup}/spinbox.html | 0 .../markup}/tree-folders-selectable.html | 0 {markup => reference/markup}/tree.html | 0 .../markup}/wizard-variations.txt | 0 {markup => reference/markup}/wizard.html | 0 test/REGRESSION_TESTING.md | 7 + test/mocha.js | 8 +- test/regression/checkbox.html | 88 + test/regression/index.html | 1898 ++++ 93 files changed, 14930 insertions(+), 34 deletions(-) create mode 100644 reference/dist/css/fuelux.css create mode 100644 reference/dist/fonts/fuelux.eot create mode 100644 reference/dist/fonts/fuelux.svg create mode 100644 reference/dist/fonts/fuelux.ttf create mode 100644 reference/dist/fonts/fuelux.woff create mode 100644 reference/dist/js/fuelux.js create mode 100644 reference/dist/templates/handlebars/bootstrap/button.hbs create mode 100644 reference/dist/templates/handlebars/bootstrap/input.hbs create mode 100644 reference/dist/templates/handlebars/bootstrap/modal-trigger.hbs create mode 100644 reference/dist/templates/handlebars/bootstrap/modal.hbs create mode 100644 reference/dist/templates/handlebars/bootstrap/textarea.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/checkbox.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/combobox.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/datepicker.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/infinite-scroll.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/loader.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/pillbox.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/placard.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/radio.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/repeater.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/scheduler.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/search.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/selectlist.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/spinbox.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/tree.hbs create mode 100644 reference/dist/templates/handlebars/fuelux/wizard.hbs create mode 100644 reference/dist/templates/underscore/bootstrap/button-group.html create mode 100644 reference/dist/templates/underscore/bootstrap/button.html create mode 100644 reference/dist/templates/underscore/bootstrap/file-button.html create mode 100644 reference/dist/templates/underscore/bootstrap/input-with-button-dropdown.html create mode 100644 reference/dist/templates/underscore/bootstrap/input-with-checkbox.html create mode 100644 reference/dist/templates/underscore/bootstrap/input-with-text.html create mode 100644 reference/dist/templates/underscore/bootstrap/input.html create mode 100644 reference/dist/templates/underscore/bootstrap/select.html create mode 100644 reference/dist/templates/underscore/bootstrap/textarea.html create mode 100644 reference/dist/templates/underscore/fuelux/checkboxes-inline.html create mode 100644 reference/dist/templates/underscore/fuelux/checkboxes.html create mode 100644 reference/dist/templates/underscore/fuelux/input-with-combobox.html create mode 100644 reference/dist/templates/underscore/fuelux/radios-inline.html create mode 100644 reference/dist/templates/underscore/fuelux/radios.html create mode 100644 reference/dist/templates/underscore/fuelux/search.html create mode 100644 reference/dist/templates/underscore/fuelux/selectlist.html create mode 100644 reference/dist/templates/underscore/fuelux/spinbox.html create mode 100644 reference/markup/README.md rename {markup => reference/markup}/checkbox-inline-no-js.html (100%) rename {markup => reference/markup}/checkbox-inline.html (100%) rename {markup => reference/markup}/checkbox-no-js-variations.txt (100%) rename {markup => reference/markup}/checkbox-no-js.html (100%) rename {markup => reference/markup}/checkbox-variations.txt (100%) rename {markup => reference/markup}/checkbox.html (100%) rename {markup => reference/markup}/combobox-variations.txt (100%) rename {markup => reference/markup}/combobox.html (100%) rename {markup => reference/markup}/datepicker.html (100%) rename {markup => reference/markup}/infinite-scroll.html (100%) rename {markup => reference/markup}/loader-variations.txt (100%) rename {markup => reference/markup}/loader.html (100%) rename {markup => reference/markup}/pillbox-variations.txt (100%) rename {markup => reference/markup}/pillbox-with-pills.html (100%) rename {markup => reference/markup}/pillbox.html (100%) rename {markup => reference/markup}/placard-header-footer.html (100%) rename {markup => reference/markup}/placard-variations.txt (100%) rename {markup => reference/markup}/placard.html (100%) rename {markup => reference/markup}/radio-inline-no-js.html (100%) rename {markup => reference/markup}/radio-inline.html (100%) rename {markup => reference/markup}/radio-no-js-variations.txt (100%) rename {markup => reference/markup}/radio-no-js.html (100%) rename {markup => reference/markup}/radio-variations.txt (100%) rename {markup => reference/markup}/radio.html (100%) rename {markup => reference/markup}/repeater-variations.txt (100%) rename {markup => reference/markup}/repeater.html (100%) rename {markup => reference/markup}/scheduler.html (100%) rename {markup => reference/markup}/search.html (100%) rename {markup => reference/markup}/selectlist-variations.txt (100%) rename {markup => reference/markup}/selectlist.html (100%) rename {markup => reference/markup}/spinbox-variations.txt (100%) rename {markup => reference/markup}/spinbox.html (100%) rename {markup => reference/markup}/tree-folders-selectable.html (100%) rename {markup => reference/markup}/tree.html (100%) rename {markup => reference/markup}/wizard-variations.txt (100%) rename {markup => reference/markup}/wizard.html (100%) create mode 100644 test/REGRESSION_TESTING.md create mode 100644 test/regression/checkbox.html create mode 100644 test/regression/index.html diff --git a/Gruntfile.js b/Gruntfile.js index 3f372ce3c..3b2db9762 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -27,6 +27,7 @@ module.exports = function gruntFile (grunt) { // variables used in shared variables below var connectTestServerOptionsPort = 9000; + var connectRegressionTestServerOptionsPort = 8013; // load and initialize configuration tasks, including package.json's devDependencies require('load-grunt-config')(grunt, { @@ -69,7 +70,8 @@ module.exports = function gruntFile (grunt) { // test dist with multiple jQuery versions return 'http://localhost:' + connectTestServerOptionsPort + '/test/?testdist=true'; }), - connectTestServerOptionsPort: connectTestServerOptionsPort + connectTestServerOptionsPort: connectTestServerOptionsPort, + connectRegressionTestServerOptionsPort: connectRegressionTestServerOptionsPort } }); diff --git a/dist/css/fuelux.css b/dist/css/fuelux.css index 06418018c..5417e6841 100644 --- a/dist/css/fuelux.css +++ b/dist/css/fuelux.css @@ -1,5 +1,6 @@ /*! - * Fuel UX v3.16.0 + * Fuel UX EDGE - Built 2017/06/05, 2:24:54 PM + * Previous release: v3.16.0 * Copyright 2012-2017 ExactTarget * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) */ diff --git a/dist/css/fuelux.min.css b/dist/css/fuelux.min.css index b2d40e888..c28c3bae6 100644 --- a/dist/css/fuelux.min.css +++ b/dist/css/fuelux.min.css @@ -1,5 +1,6 @@ /*! - * Fuel UX v3.16.0 + * Fuel UX EDGE - Built 2017/06/05, 2:24:54 PM + * Previous release: v3.16.0 * Copyright 2012-2017 ExactTarget * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) */ diff --git a/dist/fuelux.zip b/dist/fuelux.zip index d505d6879a46f471859a251ec115c73b0a950310..1a0102f9861efd518fcb1af8427da10b763c224f 100644 GIT binary patch delta 139678 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�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 TBG~hPA;zGE_>&G84)T8hCz&km delta 139554 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
  • No Matches
  • ' ); + } + } + }; + + $.fn.combobox.Constructor = Combobox; + + $.fn.combobox.noConflict = function() { + $.fn.combobox = old; + return this; + }; + + // DATA-API + + $( document ).on( 'mousedown.fu.combobox.data-api', '[data-initialize=combobox]', function( e ) { + var $control = $( e.target ).closest( '.combobox' ); + if ( !$control.data( 'fu.combobox' ) ) { + $control.combobox( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=combobox]' ).each( function() { + var $this = $( this ); + if ( !$this.data( 'fu.combobox' ) ) { + $this.combobox( $this.data() ); + } + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Datepicker + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var INVALID_DATE = 'Invalid Date'; + var MOMENT_NOT_AVAILABLE = 'moment.js is not available so you cannot use this function'; + + var datepickerStack = []; + var moment = false; + var old = $.fn.datepicker; + var requestedMoment = false; + + var runStack = function() { + var i, l; + requestedMoment = true; + for ( i = 0, l = datepickerStack.length; i < l; i++ ) { + datepickerStack[ i ].init.call( datepickerStack[ i ].scope ); + } + datepickerStack = []; + }; + + //only load moment if it's there. otherwise we'll look for it in window.moment + if ( typeof define === 'function' && define.amd ) { //check if AMD is available + require( [ 'moment' ], function( amdMoment ) { + moment = amdMoment; + runStack(); + }, function( err ) { + var failedId = err.requireModules && err.requireModules[ 0 ]; + if ( failedId === 'moment' ) { + runStack(); + } + } ); + } else { + runStack(); + } + + // DATEPICKER CONSTRUCTOR AND PROTOTYPE + + var Datepicker = function( element, options ) { + this.$element = $( element ); + this.options = $.extend( true, {}, $.fn.datepicker.defaults, options ); + + this.$calendar = this.$element.find( '.datepicker-calendar' ); + this.$days = this.$calendar.find( '.datepicker-calendar-days' ); + this.$header = this.$calendar.find( '.datepicker-calendar-header' ); + this.$headerTitle = this.$header.find( '.title' ); + this.$input = this.$element.find( 'input' ); + this.$inputGroupBtn = this.$element.find( '.input-group-btn' ); + this.$wheels = this.$element.find( '.datepicker-wheels' ); + this.$wheelsMonth = this.$element.find( '.datepicker-wheels-month' ); + this.$wheelsYear = this.$element.find( '.datepicker-wheels-year' ); + + this.artificialScrolling = false; + this.formatDate = this.options.formatDate || this.formatDate; + this.inputValue = null; + this.moment = false; + this.momentFormat = null; + this.parseDate = this.options.parseDate || this.parseDate; + this.preventBlurHide = false; + this.restricted = this.options.restricted || []; + this.restrictedParsed = []; + this.restrictedText = this.options.restrictedText; + this.sameYearOnly = this.options.sameYearOnly; + this.selectedDate = null; + this.yearRestriction = null; + + this.$calendar.find( '.datepicker-today' ).on( 'click.fu.datepicker', $.proxy( this.todayClicked, this ) ); + this.$days.on( 'click.fu.datepicker', 'tr td button', $.proxy( this.dateClicked, this ) ); + this.$header.find( '.next' ).on( 'click.fu.datepicker', $.proxy( this.next, this ) ); + this.$header.find( '.prev' ).on( 'click.fu.datepicker', $.proxy( this.prev, this ) ); + this.$headerTitle.on( 'click.fu.datepicker', $.proxy( this.titleClicked, this ) ); + this.$input.on( 'change.fu.datepicker', $.proxy( this.inputChanged, this ) ); + this.$input.on( 'mousedown.fu.datepicker', $.proxy( this.showDropdown, this ) ); + this.$inputGroupBtn.on( 'hidden.bs.dropdown', $.proxy( this.hide, this ) ); + this.$inputGroupBtn.on( 'shown.bs.dropdown', $.proxy( this.show, this ) ); + this.$wheels.find( '.datepicker-wheels-back' ).on( 'click.fu.datepicker', $.proxy( this.backClicked, this ) ); + this.$wheels.find( '.datepicker-wheels-select' ).on( 'click.fu.datepicker', $.proxy( this.selectClicked, this ) ); + this.$wheelsMonth.on( 'click.fu.datepicker', 'ul button', $.proxy( this.monthClicked, this ) ); + this.$wheelsYear.on( 'click.fu.datepicker', 'ul button', $.proxy( this.yearClicked, this ) ); + this.$wheelsYear.find( 'ul' ).on( 'scroll.fu.datepicker', $.proxy( this.onYearScroll, this ) ); + + var init = function() { + if ( this.checkForMomentJS() ) { + moment = moment || window.moment; // need to pull in the global moment if they didn't do it via require + this.moment = true; + this.momentFormat = this.options.momentConfig.format; + this.setCulture( this.options.momentConfig.culture ); + + // support moment with lang (< v2.8) or locale + moment.locale = moment.locale || moment.lang; + } + + this.setRestrictedDates( this.restricted ); + if ( !this.setDate( this.options.date ) ) { + this.$input.val( '' ); + this.inputValue = this.$input.val(); + } + + if ( this.sameYearOnly ) { + this.yearRestriction = ( this.selectedDate ) ? this.selectedDate.getFullYear() : new Date().getFullYear(); + } + }; + + if ( requestedMoment ) { + init.call( this ); + } else { + datepickerStack.push( { + init: init, + scope: this + } ); + } + }; + + Datepicker.prototype = { + + constructor: Datepicker, + + backClicked: function() { + this.changeView( 'calendar' ); + }, + + changeView: function( view, date ) { + if ( view === 'wheels' ) { + this.$calendar.hide().attr( 'aria-hidden', 'true' ); + this.$wheels.show().removeAttr( 'aria-hidden', '' ); + if ( date ) { + this.renderWheel( date ); + } + + } else { + this.$wheels.hide().attr( 'aria-hidden', 'true' ); + this.$calendar.show().removeAttr( 'aria-hidden', '' ); + if ( date ) { + this.renderMonth( date ); + } + + } + }, + + checkForMomentJS: function() { + if ( + ( $.isFunction( window.moment ) || ( typeof moment !== 'undefined' && $.isFunction( moment ) ) ) && + $.isPlainObject( this.options.momentConfig ) && + ( typeof this.options.momentConfig.culture === 'string' && typeof this.options.momentConfig.format === 'string' ) + ) { + return true; + } else { + return false; + } + }, + + dateClicked: function( e ) { + var $td = $( e.currentTarget ).parents( 'td:first' ); + var date; + + if ( $td.hasClass( 'restricted' ) ) { + return; + } + + this.$days.find( 'td.selected' ).removeClass( 'selected' ); + $td.addClass( 'selected' ); + + date = new Date( $td.attr( 'data-year' ), $td.attr( 'data-month' ), $td.attr( 'data-date' ) ); + this.selectedDate = date; + this.$input.val( this.formatDate( date ) ); + this.inputValue = this.$input.val(); + this.hide(); + this.$input.focus(); + this.$element.trigger( 'dateClicked.fu.datepicker', date ); + }, + + destroy: function() { + this.$element.remove(); + // any external bindings + // [none] + + // empty elements to return to original markup + this.$days.find( 'tbody' ).empty(); + this.$wheelsYear.find( 'ul' ).empty(); + + return this.$element[ 0 ].outerHTML; + }, + + disable: function() { + this.$element.addClass( 'disabled' ); + this.$element.find( 'input, button' ).attr( 'disabled', 'disabled' ); + this.$inputGroupBtn.removeClass( 'open' ); + }, + + enable: function() { + this.$element.removeClass( 'disabled' ); + this.$element.find( 'input, button' ).removeAttr( 'disabled' ); + }, + + formatDate: function( date ) { + var padTwo = function( value ) { + var s = '0' + value; + return s.substr( s.length - 2 ); + }; + + if ( this.moment ) { + return moment( date ).format( this.momentFormat ); + } else { + return padTwo( date.getMonth() + 1 ) + '/' + padTwo( date.getDate() ) + '/' + date.getFullYear(); + } + }, + + getCulture: function() { + if ( this.moment ) { + return moment.locale(); + } else { + throw MOMENT_NOT_AVAILABLE; + } + }, + + getDate: function() { + return ( !this.selectedDate ) ? new Date( NaN ) : this.selectedDate; + }, + + getFormat: function() { + if ( this.moment ) { + return this.momentFormat; + } else { + throw MOMENT_NOT_AVAILABLE; + } + }, + + getFormattedDate: function() { + return ( !this.selectedDate ) ? INVALID_DATE : this.formatDate( this.selectedDate ); + }, + + getRestrictedDates: function() { + return this.restricted; + }, + + inputChanged: function() { + var inputVal = this.$input.val(); + var date; + if ( inputVal !== this.inputValue ) { + date = this.setDate( inputVal ); + if ( date === null ) { + this.$element.trigger( 'inputParsingFailed.fu.datepicker', inputVal ); + } else if ( date === false ) { + this.$element.trigger( 'inputRestrictedDate.fu.datepicker', date ); + } else { + this.$element.trigger( 'changed.fu.datepicker', date ); + } + + } + }, + + show: function() { + var date = ( this.selectedDate ) ? this.selectedDate : new Date(); + this.changeView( 'calendar', date ); + this.$inputGroupBtn.addClass( 'open' ); + this.$element.trigger( 'shown.fu.datepicker' ); + }, + + showDropdown: function( e ) { //input mousedown handler, name retained for legacy support of showDropdown + if ( !this.$input.is( ':focus' ) && !this.$inputGroupBtn.hasClass( 'open' ) ) { + this.show(); + } + }, + + hide: function() { + this.$inputGroupBtn.removeClass( 'open' ); + this.$element.trigger( 'hidden.fu.datepicker' ); + }, + + hideDropdown: function() { //for legacy support of hideDropdown + this.hide(); + }, + + isInvalidDate: function( date ) { + var dateString = date.toString(); + if ( dateString === INVALID_DATE || dateString === 'NaN' ) { + return true; + } + + return false; + }, + + isRestricted: function( date, month, year ) { + var restricted = this.restrictedParsed; + var i, from, l, to; + + if ( this.sameYearOnly && this.yearRestriction !== null && year !== this.yearRestriction ) { + return true; + } + + for ( i = 0, l = restricted.length; i < l; i++ ) { + from = restricted[ i ].from; + to = restricted[ i ].to; + if ( + ( year > from.year || ( year === from.year && month > from.month ) || ( year === from.year && month === from.month && date >= from.date ) ) && + ( year < to.year || ( year === to.year && month < to.month ) || ( year === to.year && month === to.month && date <= to.date ) ) + ) { + return true; + } + + } + + return false; + }, + + monthClicked: function( e ) { + this.$wheelsMonth.find( '.selected' ).removeClass( 'selected' ); + $( e.currentTarget ).parent().addClass( 'selected' ); + }, + + next: function() { + var month = this.$headerTitle.attr( 'data-month' ); + var year = this.$headerTitle.attr( 'data-year' ); + month++; + if ( month > 11 ) { + if ( this.sameYearOnly ) { + return; + } + + month = 0; + year++; + } + + this.renderMonth( new Date( year, month, 1 ) ); + }, + + onYearScroll: function( e ) { + if ( this.artificialScrolling ) { + return; + } + + var $yearUl = $( e.currentTarget ); + var height = ( $yearUl.css( 'box-sizing' ) === 'border-box' ) ? $yearUl.outerHeight() : $yearUl.height(); + var scrollHeight = $yearUl.get( 0 ).scrollHeight; + var scrollTop = $yearUl.scrollTop(); + var bottomPercentage = ( height / ( scrollHeight - scrollTop ) ) * 100; + var topPercentage = ( scrollTop / scrollHeight ) * 100; + var i, start; + + if ( topPercentage < 5 ) { + start = parseInt( $yearUl.find( 'li:first' ).attr( 'data-year' ), 10 ); + for ( i = ( start - 1 ); i > ( start - 11 ); i-- ) { + $yearUl.prepend( '
  • ' ); + } + this.artificialScrolling = true; + $yearUl.scrollTop( ( $yearUl.get( 0 ).scrollHeight - scrollHeight ) + scrollTop ); + this.artificialScrolling = false; + } else if ( bottomPercentage > 90 ) { + start = parseInt( $yearUl.find( 'li:last' ).attr( 'data-year' ), 10 ); + for ( i = ( start + 1 ); i < ( start + 11 ); i++ ) { + $yearUl.append( '
  • ' ); + } + } + }, + + //some code ripped from http://stackoverflow.com/questions/2182246/javascript-dates-in-ie-nan-firefox-chrome-ok + parseDate: function( date ) { + var self = this; + var BAD_DATE = new Date( NaN ); + var dt, isoExp, momentParse, momentParseWithFormat, tryMomentParseAll, month, parts, use; + + if ( date ) { + if ( this.moment ) { //if we have moment, use that to parse the dates + momentParseWithFormat = function( d ) { + var md = moment( d, self.momentFormat ); + return ( true === md.isValid() ) ? md.toDate() : BAD_DATE; + }; + momentParse = function( d ) { + var md = moment( new Date( d ) ); + return ( true === md.isValid() ) ? md.toDate() : BAD_DATE; + }; + + tryMomentParseAll = function( rawDateString, parseFunc1, parseFunc2 ) { + var pd = parseFunc1( rawDateString ); + if ( !self.isInvalidDate( pd ) ) { + return pd; + } + + pd = parseFunc2( rawDateString ); + if ( !self.isInvalidDate( pd ) ) { + return pd; + } + + return BAD_DATE; + }; + + if ( 'string' === typeof( date ) ) { + // Attempts to parse date strings using this.momentFormat, falling back on newing a date + return tryMomentParseAll( date, momentParseWithFormat, momentParse ); + } else { + // Attempts to parse date by newing a date object directly, falling back on parsing using this.momentFormat + return tryMomentParseAll( date, momentParse, momentParseWithFormat ); + } + + } else { //if moment isn't present, use previous date parsing strategy + if ( typeof( date ) === 'string' ) { + dt = new Date( Date.parse( date ) ); + if ( !this.isInvalidDate( dt ) ) { + return dt; + } else { + date = date.split( 'T' )[ 0 ]; + isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/; + parts = isoExp.exec( date ); + if ( parts ) { + month = parseInt( parts[ 2 ], 10 ); + dt = new Date( parts[ 1 ], month - 1, parts[ 3 ] ); + if ( month === ( dt.getMonth() + 1 ) ) { + return dt; + } + + } + + } + + } else { + dt = new Date( date ); + if ( !this.isInvalidDate( dt ) ) { + return dt; + } + + } + + } + + } + + return new Date( NaN ); + }, + + prev: function() { + var month = this.$headerTitle.attr( 'data-month' ); + var year = this.$headerTitle.attr( 'data-year' ); + month--; + if ( month < 0 ) { + if ( this.sameYearOnly ) { + return; + } + + month = 11; + year--; + } + + this.renderMonth( new Date( year, month, 1 ) ); + }, + + renderMonth: function( date ) { + date = date || new Date(); + + var firstDay = new Date( date.getFullYear(), date.getMonth(), 1 ).getDay(); + var lastDate = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); + var lastMonthDate = new Date( date.getFullYear(), date.getMonth(), 0 ).getDate(); + var $month = this.$headerTitle.find( '.month' ); + var month = date.getMonth(); + var now = new Date(); + var nowDate = now.getDate(); + var nowMonth = now.getMonth(); + var nowYear = now.getFullYear(); + var selected = this.selectedDate; + var $tbody = this.$days.find( 'tbody' ); + var year = date.getFullYear(); + var curDate, curMonth, curYear, i, j, rows, stage, previousStage, lastStage, $td, $tr; + + if ( selected ) { + selected = { + date: selected.getDate(), + month: selected.getMonth(), + year: selected.getFullYear() + }; + } + + $month.find( '.current' ).removeClass( 'current' ); + $month.find( 'span[data-month="' + month + '"]' ).addClass( 'current' ); + this.$headerTitle.find( '.year' ).text( year ); + this.$headerTitle.attr( { + 'data-month': month, + 'data-year': year + } ); + + + $tbody.empty(); + if ( firstDay !== 0 ) { + curDate = lastMonthDate - firstDay + 1; + stage = -1; + } else { + curDate = 1; + stage = 0; + } + + rows = ( lastDate <= ( 35 - firstDay ) ) ? 5 : 6; + for ( i = 0; i < rows; i++ ) { + $tr = $( '' ); + for ( j = 0; j < 7; j++ ) { + $td = $( '' ); + if ( stage === -1 ) { + $td.addClass( 'last-month' ); + if ( previousStage !== stage ) { + $td.addClass( 'first' ); + } + } else if ( stage === 1 ) { + $td.addClass( 'next-month' ); + if ( previousStage !== stage ) { + $td.addClass( 'first' ); + } + } + + curMonth = month + stage; + curYear = year; + if ( curMonth < 0 ) { + curMonth = 11; + curYear--; + } else if ( curMonth > 11 ) { + curMonth = 0; + curYear++; + } + + $td.attr( { + 'data-date': curDate, + 'data-month': curMonth, + 'data-year': curYear + } ); + if ( curYear === nowYear && curMonth === nowMonth && curDate === nowDate ) { + $td.addClass( 'current-day' ); + } else if ( curYear < nowYear || ( curYear === nowYear && curMonth < nowMonth ) || + ( curYear === nowYear && curMonth === nowMonth && curDate < nowDate ) ) { + $td.addClass( 'past' ); + if ( !this.options.allowPastDates ) { + $td.addClass( 'restricted' ).attr( 'title', this.restrictedText ); + } + + } + + if ( this.isRestricted( curDate, curMonth, curYear ) ) { + $td.addClass( 'restricted' ).attr( 'title', this.restrictedText ); + } + + if ( selected && curYear === selected.year && curMonth === selected.month && curDate === selected.date ) { + $td.addClass( 'selected' ); + } + + if ( $td.hasClass( 'restricted' ) ) { + $td.html( '' + curDate + '' ); + } else { + $td.html( '' ); + } + + curDate++; + lastStage = previousStage; + previousStage = stage; + if ( stage === -1 && curDate > lastMonthDate ) { + curDate = 1; + stage = 0; + if ( lastStage !== stage ) { + $td.addClass( 'last' ); + } + } else if ( stage === 0 && curDate > lastDate ) { + curDate = 1; + stage = 1; + if ( lastStage !== stage ) { + $td.addClass( 'last' ); + } + } + if ( i === ( rows - 1 ) && j === 6 ) { + $td.addClass( 'last' ); + } + + $tr.append( $td ); + } + $tbody.append( $tr ); + } + }, + + renderWheel: function( date ) { + var month = date.getMonth(); + var $monthUl = this.$wheelsMonth.find( 'ul' ); + var year = date.getFullYear(); + var $yearUl = this.$wheelsYear.find( 'ul' ); + var i, $monthSelected, $yearSelected; + + if ( this.sameYearOnly ) { + this.$wheelsMonth.addClass( 'full' ); + this.$wheelsYear.addClass( 'hidden' ); + } else { + this.$wheelsMonth.removeClass( 'full' ); + this.$wheelsYear.removeClass( 'hide hidden' ); // .hide is deprecated + } + + $monthUl.find( '.selected' ).removeClass( 'selected' ); + $monthSelected = $monthUl.find( 'li[data-month="' + month + '"]' ); + $monthSelected.addClass( 'selected' ); + $monthUl.scrollTop( $monthUl.scrollTop() + ( $monthSelected.position().top - $monthUl.outerHeight() / 2 - $monthSelected.outerHeight( true ) / 2 ) ); + + $yearUl.empty(); + for ( i = ( year - 10 ); i < ( year + 11 ); i++ ) { + $yearUl.append( '
  • ' ); + } + $yearSelected = $yearUl.find( 'li[data-year="' + year + '"]' ); + $yearSelected.addClass( 'selected' ); + this.artificialScrolling = true; + $yearUl.scrollTop( $yearUl.scrollTop() + ( $yearSelected.position().top - $yearUl.outerHeight() / 2 - $yearSelected.outerHeight( true ) / 2 ) ); + this.artificialScrolling = false; + $monthSelected.find( 'button' ).focus(); + }, + + selectClicked: function() { + var month = this.$wheelsMonth.find( '.selected' ).attr( 'data-month' ); + var year = this.$wheelsYear.find( '.selected' ).attr( 'data-year' ); + this.changeView( 'calendar', new Date( year, month, 1 ) ); + }, + + setCulture: function( cultureCode ) { + if ( !cultureCode ) { + return false; + } + + if ( this.moment ) { + moment.locale( cultureCode ); + } else { + throw MOMENT_NOT_AVAILABLE; + } + }, + + setDate: function( date ) { + var parsed = this.parseDate( date ); + if ( !this.isInvalidDate( parsed ) ) { + if ( !this.isRestricted( parsed.getDate(), parsed.getMonth(), parsed.getFullYear() ) ) { + this.selectedDate = parsed; + this.renderMonth( parsed ); + this.$input.val( this.formatDate( parsed ) ); + } else { + this.selectedDate = false; + this.renderMonth(); + } + + } else { + this.selectedDate = null; + this.renderMonth(); + } + + this.inputValue = this.$input.val(); + return this.selectedDate; + }, + + setFormat: function( format ) { + if ( !format ) { + return false; + } + + if ( this.moment ) { + this.momentFormat = format; + } else { + throw MOMENT_NOT_AVAILABLE; + } + }, + + setRestrictedDates: function( restricted ) { + var parsed = []; + var self = this; + var i, l; + + var parseItem = function( val ) { + if ( val === -Infinity ) { + return { + date: -Infinity, + month: -Infinity, + year: -Infinity + }; + } else if ( val === Infinity ) { + return { + date: Infinity, + month: Infinity, + year: Infinity + }; + } else { + val = self.parseDate( val ); + return { + date: val.getDate(), + month: val.getMonth(), + year: val.getFullYear() + }; + } + }; + + this.restricted = restricted; + for ( i = 0, l = restricted.length; i < l; i++ ) { + parsed.push( { + from: parseItem( restricted[ i ].from ), + to: parseItem( restricted[ i ].to ) + } ); + } + this.restrictedParsed = parsed; + }, + + titleClicked: function( e ) { + this.changeView( 'wheels', new Date( this.$headerTitle.attr( 'data-year' ), this.$headerTitle.attr( 'data-month' ), 1 ) ); + }, + + todayClicked: function( e ) { + var date = new Date(); + + if ( ( date.getMonth() + '' ) !== this.$headerTitle.attr( 'data-month' ) || ( date.getFullYear() + '' ) !== this.$headerTitle.attr( 'data-year' ) ) { + this.renderMonth( date ); + } + }, + + yearClicked: function( e ) { + this.$wheelsYear.find( '.selected' ).removeClass( 'selected' ); + $( e.currentTarget ).parent().addClass( 'selected' ); + } + }; + //for control library consistency + Datepicker.prototype.getValue = Datepicker.prototype.getDate; + + // DATEPICKER PLUGIN DEFINITION + + $.fn.datepicker = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.datepicker' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.datepicker', ( data = new Datepicker( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.datepicker.defaults = { + allowPastDates: false, + date: new Date(), + formatDate: null, + momentConfig: { + culture: 'en', + format: 'L' // more formats can be found here http://momentjs.com/docs/#/customization/long-date-formats/. + }, + parseDate: null, + restricted: [], //accepts an array of objects formatted as so: { from: {{date}}, to: {{date}} } (ex: [ { from: new Date('12/11/2014'), to: new Date('03/31/2015') } ]) + restrictedText: 'Restricted', + sameYearOnly: false + }; + + $.fn.datepicker.Constructor = Datepicker; + + $.fn.datepicker.noConflict = function() { + $.fn.datepicker = old; + return this; + }; + + // DATA-API + + $( document ).on( 'mousedown.fu.datepicker.data-api', '[data-initialize=datepicker]', function( e ) { + var $control = $( e.target ).closest( '.datepicker' ); + if ( !$control.data( 'datepicker' ) ) { + $control.datepicker( $control.data() ); + } + } ); + + //used to prevent the dropdown from closing when clicking within it's bounds + $( document ).on( 'click.fu.datepicker.data-api', '.datepicker .dropdown-menu', function( e ) { + var $target = $( e.target ); + if ( !$target.is( '.datepicker-date' ) || $target.closest( '.restricted' ).length ) { + e.stopPropagation(); + } + } ); + + //used to prevent the dropdown from closing when clicking on the input + $( document ).on( 'click.fu.datepicker.data-api', '.datepicker input', function( e ) { + e.stopPropagation(); + } ); + + $( function() { + $( '[data-initialize=datepicker]' ).each( function() { + var $this = $( this ); + if ( $this.data( 'datepicker' ) ) { + return; + } + + $this.datepicker( $this.data() ); + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Dropdown Auto Flip + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + $( document ).on( 'click.fu.dropdown-autoflip', '[data-toggle=dropdown][data-flip]', function( event ) { + if ( $( this ).data().flip === "auto" ) { + // have the drop down decide where to place itself + _autoFlip( $( this ).next( '.dropdown-menu' ) ); + } + } ); + + // For pillbox suggestions dropdown + $( document ).on( 'suggested.fu.pillbox', function( event, element ) { + _autoFlip( $( element ) ); + $( element ).parent().addClass( 'open' ); + } ); + + function _autoFlip( menu ) { + // hide while the browser thinks + $( menu ).css( { + visibility: "hidden" + } ); + + // decide where to put menu + if ( dropUpCheck( menu ) ) { + menu.parent().addClass( "dropup" ); + } else { + menu.parent().removeClass( "dropup" ); + } + + // show again + $( menu ).css( { + visibility: "visible" + } ); + } + + function dropUpCheck( element ) { + // caching container + var $container = _getContainer( element ); + + // building object with measurementsances for later use + var measurements = {}; + measurements.parentHeight = element.parent().outerHeight(); + measurements.parentOffsetTop = element.parent().offset().top; + measurements.dropdownHeight = element.outerHeight(); + measurements.containerHeight = $container.overflowElement.outerHeight(); + + // this needs to be different if the window is the container or another element is + measurements.containerOffsetTop = ( !!$container.isWindow ) ? $container.overflowElement.scrollTop() : $container.overflowElement.offset().top; + + // doing the calculations + measurements.fromTop = measurements.parentOffsetTop - measurements.containerOffsetTop; + measurements.fromBottom = measurements.containerHeight - measurements.parentHeight - ( measurements.parentOffsetTop - measurements.containerOffsetTop ); + + // actual determination of where to put menu + // false = drop down + // true = drop up + if ( measurements.dropdownHeight < measurements.fromBottom ) { + return false; + } else if ( measurements.dropdownHeight < measurements.fromTop ) { + return true; + } else if ( measurements.dropdownHeight >= measurements.fromTop && measurements.dropdownHeight >= measurements.fromBottom ) { + // decide which one is bigger and put it there + if ( measurements.fromTop >= measurements.fromBottom ) { + return true; + } else { + return false; + } + + } + + } + + function _getContainer( element ) { + var targetSelector = element.attr( 'data-target' ); + var isWindow = true; + var containerElement; + + if ( !targetSelector ) { + // no selection so find the relevant ancestor + $.each( element.parents(), function( index, parentElement ) { + if ( $( parentElement ).css( 'overflow' ) !== 'visible' ) { + containerElement = parentElement; + isWindow = false; + return false; + } + } ); + } else if ( targetSelector !== 'window' ) { + containerElement = $( targetSelector ); + isWindow = false; + } + + // fallback to window + if ( isWindow ) { + containerElement = window; + } + + return { + overflowElement: $( containerElement ), + isWindow: isWindow + }; + } + + // register empty plugin + $.fn.dropdownautoflip = function() { + /* empty */ + }; + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Loader + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.loader; + + // LOADER CONSTRUCTOR AND PROTOTYPE + + var Loader = function( element, options ) { + this.$element = $( element ); + this.options = $.extend( {}, $.fn.loader.defaults, options ); + }; + + Loader.prototype = { + + constructor: Loader, + + destroy: function() { + this.$element.remove(); + // any external bindings + // [none] + // empty elements to return to original markup + // [none] + // returns string of markup + return this.$element[ 0 ].outerHTML; + }, + + ieRepaint: function() {}, + + msieVersion: function() {}, + + next: function() {}, + + pause: function() {}, + + play: function() {}, + + previous: function() {}, + + reset: function() {} + }; + + // LOADER PLUGIN DEFINITION + + $.fn.loader = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.loader' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.loader', ( data = new Loader( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.loader.defaults = {}; + + $.fn.loader.Constructor = Loader; + + $.fn.loader.noConflict = function() { + $.fn.loader = old; + return this; + }; + + // INIT LOADER ON DOMCONTENTLOADED + + $( function() { + $( '[data-initialize=loader]' ).each( function() { + var $this = $( this ); + if ( !$this.data( 'fu.loader' ) ) { + $this.loader( $this.data() ); + } + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Placard + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.placard; + var EVENT_CALLBACK_MAP = { + 'accepted': 'onAccept', + 'cancelled': 'onCancel' + }; + + // PLACARD CONSTRUCTOR AND PROTOTYPE + + var Placard = function Placard( element, options ) { + var self = this; + this.$element = $( element ); + this.options = $.extend( {}, $.fn.placard.defaults, options ); + + if ( this.$element.attr( 'data-ellipsis' ) === 'true' ) { + this.options.applyEllipsis = true; + } + + this.$accept = this.$element.find( '.placard-accept' ); + this.$cancel = this.$element.find( '.placard-cancel' ); + this.$field = this.$element.find( '.placard-field' ); + this.$footer = this.$element.find( '.placard-footer' ); + this.$header = this.$element.find( '.placard-header' ); + this.$popup = this.$element.find( '.placard-popup' ); + + this.actualValue = null; + this.clickStamp = '_'; + this.previousValue = ''; + if ( this.options.revertOnCancel === -1 ) { + this.options.revertOnCancel = ( this.$accept.length > 0 ); + } + + // Placard supports inputs, textareas, or contenteditable divs. These checks determine which is being used + this.isContentEditableDiv = this.$field.is( 'div' ); + this.isInput = this.$field.is( 'input' ); + this.divInTextareaMode = ( this.isContentEditableDiv && this.$field.attr( 'data-textarea' ) === 'true' ); + + this.$field.on( 'focus.fu.placard', $.proxy( this.show, this ) ); + this.$field.on( 'keydown.fu.placard', $.proxy( this.keyComplete, this ) ); + this.$element.on( 'close.fu.placard', $.proxy( this.hide, this ) ); + this.$accept.on( 'click.fu.placard', $.proxy( this.complete, this, 'accepted' ) ); + this.$cancel.on( 'click.fu.placard', function( e ) { + e.preventDefault(); + self.complete( 'cancelled' ); + } ); + + this.applyEllipsis(); + }; + + var _isShown = function _isShown( placard ) { + return placard.$element.hasClass( 'showing' ); + }; + + var _closeOtherPlacards = function _closeOtherPlacards() { + var otherPlacards; + + otherPlacards = $( document ).find( '.placard.showing' ); + if ( otherPlacards.length > 0 ) { + if ( otherPlacards.data( 'fu.placard' ) && otherPlacards.data( 'fu.placard' ).options.explicit ) { + return false; //failed + } + + otherPlacards.placard( 'externalClickListener', {}, true ); + } + + return true; //succeeded + }; + + Placard.prototype = { + constructor: Placard, + + complete: function complete( action ) { + var func = this.options[ EVENT_CALLBACK_MAP[ action ] ]; + + var obj = { + previousValue: this.previousValue, + value: this.getValue() + }; + + if ( func ) { + func( obj ); + this.$element.trigger( action + '.fu.placard', obj ); + } else { + if ( action === 'cancelled' && this.options.revertOnCancel ) { + this.setValue( this.previousValue, true ); + } + + this.$element.trigger( action + '.fu.placard', obj ); + this.hide(); + } + }, + + keyComplete: function keyComplete( e ) { + if ( ( ( this.isContentEditableDiv && !this.divInTextareaMode ) || this.isInput ) && e.keyCode === 13 ) { + this.complete( 'accepted' ); + this.$field.blur(); + } else if ( e.keyCode === 27 ) { + this.complete( 'cancelled' ); + this.$field.blur(); + } + }, + + destroy: function destroy() { + this.$element.remove(); + // remove any external bindings + $( document ).off( 'click.fu.placard.externalClick.' + this.clickStamp ); + // set input value attribute + this.$element.find( 'input' ).each( function() { + $( this ).attr( 'value', $( this ).val() ); + } ); + // empty elements to return to original markup + // [none] + // return string of markup + return this.$element[ 0 ].outerHTML; + }, + + disable: function disable() { + this.$element.addClass( 'disabled' ); + this.$field.attr( 'disabled', 'disabled' ); + if ( this.isContentEditableDiv ) { + this.$field.removeAttr( 'contenteditable' ); + } + this.hide(); + }, + + applyEllipsis: function applyEllipsis() { + var field, i, str; + if ( this.options.applyEllipsis ) { + field = this.$field.get( 0 ); + if ( ( this.isContentEditableDiv && !this.divInTextareaMode ) || this.isInput ) { + field.scrollLeft = 0; + } else { + field.scrollTop = 0; + if ( field.clientHeight < field.scrollHeight ) { + this.actualValue = this.getValue(); + this.setValue( '', true ); + str = ''; + i = 0; + while ( field.clientHeight >= field.scrollHeight ) { + str += this.actualValue[ i ]; + this.setValue( str + '...', true ); + i++; + } + str = ( str.length > 0 ) ? str.substring( 0, str.length - 1 ) : ''; + this.setValue( str + '...', true ); + } + } + + } + }, + + enable: function enable() { + this.$element.removeClass( 'disabled' ); + this.$field.removeAttr( 'disabled' ); + if ( this.isContentEditableDiv ) { + this.$field.attr( 'contenteditable', 'true' ); + } + }, + + externalClickListener: function externalClickListener( e, force ) { + if ( force === true || this.isExternalClick( e ) ) { + this.complete( this.options.externalClickAction ); + } + }, + + getValue: function getValue() { + if ( this.actualValue !== null ) { + return this.actualValue; + } else if ( this.isContentEditableDiv ) { + return this.$field.html(); + } else { + return this.$field.val(); + } + }, + + hide: function hide() { + if ( !this.$element.hasClass( 'showing' ) ) { + return; + } + + this.$element.removeClass( 'showing' ); + this.applyEllipsis(); + $( document ).off( 'click.fu.placard.externalClick.' + this.clickStamp ); + this.$element.trigger( 'hidden.fu.placard' ); + }, + + isExternalClick: function isExternalClick( e ) { + var el = this.$element.get( 0 ); + var exceptions = this.options.externalClickExceptions || []; + var $originEl = $( e.target ); + var i, l; + + if ( e.target === el || $originEl.parents( '.placard:first' ).get( 0 ) === el ) { + return false; + } else { + for ( i = 0, l = exceptions.length; i < l; i++ ) { + if ( $originEl.is( exceptions[ i ] ) || $originEl.parents( exceptions[ i ] ).length > 0 ) { + return false; + } + + } + } + + return true; + }, + + /** + * setValue() sets the Placard triggering DOM element's display value + * + * @param {String} the value to be displayed + * @param {Boolean} If you want to explicitly suppress the application + * of ellipsis, pass `true`. This would typically only be + * done from internal functions (like `applyEllipsis`) + * that want to avoid circular logic. Otherwise, the + * value of the option applyEllipsis will be used. + * @return {Object} jQuery object representing the DOM element whose + * value was set + */ + setValue: function setValue( val, suppressEllipsis ) { + //if suppressEllipsis is undefined, check placards init settings + if ( typeof suppressEllipsis === 'undefined' ) { + suppressEllipsis = !this.options.applyEllipsis; + } + + if ( this.isContentEditableDiv ) { + this.$field.empty().append( val ); + } else { + this.$field.val( val ); + } + + if ( !suppressEllipsis && !_isShown( this ) ) { + this.applyEllipsis(); + } + + return this.$field; + }, + + show: function show() { + if ( _isShown( this ) ) { + return; + } + if ( !_closeOtherPlacards() ) { + return; + } + + this.previousValue = ( this.isContentEditableDiv ) ? this.$field.html() : this.$field.val(); + + if ( this.actualValue !== null ) { + this.setValue( this.actualValue, true ); + this.actualValue = null; + } + + this.showPlacard(); + }, + + showPlacard: function showPlacard() { + this.$element.addClass( 'showing' ); + + if ( this.$header.length > 0 ) { + this.$popup.css( 'top', '-' + this.$header.outerHeight( true ) + 'px' ); + } + + if ( this.$footer.length > 0 ) { + this.$popup.css( 'bottom', '-' + this.$footer.outerHeight( true ) + 'px' ); + } + + this.$element.trigger( 'shown.fu.placard' ); + this.clickStamp = new Date().getTime() + ( Math.floor( Math.random() * 100 ) + 1 ); + if ( !this.options.explicit ) { + $( document ).on( 'click.fu.placard.externalClick.' + this.clickStamp, $.proxy( this.externalClickListener, this ) ); + } + } + }; + + // PLACARD PLUGIN DEFINITION + + $.fn.placard = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.placard' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.placard', ( data = new Placard( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.placard.defaults = { + onAccept: undefined, + onCancel: undefined, + externalClickAction: 'cancelled', + externalClickExceptions: [], + explicit: false, + revertOnCancel: -1, //negative 1 will check for an '.placard-accept' button. Also can be set to true or false + applyEllipsis: false + }; + + $.fn.placard.Constructor = Placard; + + $.fn.placard.noConflict = function() { + $.fn.placard = old; + return this; + }; + + // DATA-API + + $( document ).on( 'focus.fu.placard.data-api', '[data-initialize=placard]', function( e ) { + var $control = $( e.target ).closest( '.placard' ); + if ( !$control.data( 'fu.placard' ) ) { + $control.placard( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=placard]' ).each( function() { + var $this = $( this ); + if ( $this.data( 'fu.placard' ) ) return; + $this.placard( $this.data() ); + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Radio + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.radio; + + // RADIO CONSTRUCTOR AND PROTOTYPE + + var Radio = function( element, options ) { + this.options = $.extend( {}, $.fn.radio.defaults, options ); + + if ( element.tagName.toLowerCase() !== 'label' ) { + //console.log('initialize radio on the label that wraps the radio'); + return; + } + + // cache elements + this.$label = $( element ); + this.$radio = this.$label.find( 'input[type="radio"]' ); + this.groupName = this.$radio.attr( 'name' ); // don't cache group itself since items can be added programmatically + + // determine if a toggle container is specified + var containerSelector = this.$radio.attr( 'data-toggle' ); + this.$toggleContainer = $( containerSelector ); + + // handle internal events + this.$radio.on( 'change', $.proxy( this.itemchecked, this ) ); + + // set default state + this.setInitialState(); + }; + + Radio.prototype = { + + constructor: Radio, + + setInitialState: function() { + var $radio = this.$radio; + var $lbl = this.$label; + + // get current state of input + var checked = $radio.prop( 'checked' ); + var disabled = $radio.prop( 'disabled' ); + + // sync label class with input state + this.setCheckedState( $radio, checked ); + this.setDisabledState( $radio, disabled ); + }, + + resetGroup: function() { + var $radios = $( 'input[name="' + this.groupName + '"]' ); + $radios.each( function( index, item ) { + var $radio = $( item ); + var $lbl = $radio.parent(); + var containerSelector = $radio.attr( 'data-toggle' ); + var $containerToggle = $( containerSelector ); + + + $lbl.removeClass( 'checked' ); + $containerToggle.addClass( 'hidden' ); + } ); + }, + + setCheckedState: function( element, checked ) { + var $radio = element; + var $lbl = $radio.parent(); + var containerSelector = $radio.attr( 'data-toggle' ); + var $containerToggle = $( containerSelector ); + + if ( checked ) { + // reset all items in group + this.resetGroup(); + + $radio.prop( 'checked', true ); + $lbl.addClass( 'checked' ); + $containerToggle.removeClass( 'hide hidden' ); + $lbl.trigger( 'checked.fu.radio' ); + } else { + $radio.prop( 'checked', false ); + $lbl.removeClass( 'checked' ); + $containerToggle.addClass( 'hidden' ); + $lbl.trigger( 'unchecked.fu.radio' ); + } + + $lbl.trigger( 'changed.fu.radio', checked ); + }, + + setDisabledState: function( element, disabled ) { + var $radio = element; + var $lbl = this.$label; + + if ( disabled ) { + this.$radio.prop( 'disabled', true ); + $lbl.addClass( 'disabled' ); + $lbl.trigger( 'disabled.fu.radio' ); + } else { + this.$radio.prop( 'disabled', false ); + $lbl.removeClass( 'disabled' ); + $lbl.trigger( 'enabled.fu.radio' ); + } + }, + + itemchecked: function( evt ) { + var $radio = $( evt.target ); + this.setCheckedState( $radio, true ); + }, + + check: function() { + this.setCheckedState( this.$radio, true ); + }, + + uncheck: function() { + this.setCheckedState( this.$radio, false ); + }, + + isChecked: function() { + var checked = this.$radio.prop( 'checked' ); + return checked; + }, + + enable: function() { + this.setDisabledState( this.$radio, false ); + }, + + disable: function() { + this.setDisabledState( this.$radio, true ); + }, + + destroy: function() { + this.$label.remove(); + // remove any external bindings + // [none] + // empty elements to return to original markup + // [none] + return this.$label[ 0 ].outerHTML; + } + }; + + Radio.prototype.getValue = Radio.prototype.isChecked; + + // RADIO PLUGIN DEFINITION + + $.fn.radio = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.radio' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.radio', ( data = new Radio( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.radio.defaults = {}; + + $.fn.radio.Constructor = Radio; + + $.fn.radio.noConflict = function() { + $.fn.radio = old; + return this; + }; + + + // DATA-API + + $( document ).on( 'mouseover.fu.radio.data-api', '[data-initialize=radio]', function( e ) { + var $control = $( e.target ); + if ( !$control.data( 'fu.radio' ) ) { + $control.radio( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=radio]' ).each( function() { + var $this = $( this ); + if ( !$this.data( 'fu.radio' ) ) { + $this.radio( $this.data() ); + } + } ); + } ); + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Search + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.search; + + // SEARCH CONSTRUCTOR AND PROTOTYPE + + var Search = function( element, options ) { + this.$element = $( element ); + this.$repeater = $( element ).closest( '.repeater' ); + this.options = $.extend( {}, $.fn.search.defaults, options ); + + if ( this.$element.attr( 'data-searchOnKeyPress' ) === 'true' ) { + this.options.searchOnKeyPress = true; + } + + this.$button = this.$element.find( 'button' ); + this.$input = this.$element.find( 'input' ); + this.$icon = this.$element.find( '.glyphicon, .fuelux-icon' ); + + this.$button.on( 'click.fu.search', $.proxy( this.buttonclicked, this ) ); + this.$input.on( 'keyup.fu.search', $.proxy( this.keypress, this ) ); + + if ( this.$repeater.length > 0 ) { + this.$repeater.on( 'rendered.fu.repeater', $.proxy( this.clearPending, this ) ); + } + + this.activeSearch = ''; + }; + + Search.prototype = { + constructor: Search, + + destroy: function() { + this.$element.remove(); + // any external bindings + // [none] + // set input value attrbute + this.$element.find( 'input' ).each( function() { + $( this ).attr( 'value', $( this ).val() ); + } ); + // empty elements to return to original markup + // [none] + // returns string of markup + return this.$element[ 0 ].outerHTML; + }, + + search: function( searchText ) { + if ( this.$icon.hasClass( 'glyphicon' ) ) { + this.$icon.removeClass( 'glyphicon-search' ).addClass( 'glyphicon-remove' ); + } + if ( this.$icon.hasClass( 'fuelux-icon' ) ) { + this.$icon.removeClass( 'fuelux-icon-search' ).addClass( 'fuelux-icon-remove' ); + } + + this.activeSearch = searchText; + this.$element.addClass( 'searched pending' ); + this.$element.trigger( 'searched.fu.search', searchText ); + }, + + clear: function() { + if ( this.$icon.hasClass( 'glyphicon' ) ) { + this.$icon.removeClass( 'glyphicon-remove' ).addClass( 'glyphicon-search' ); + } + if ( this.$icon.hasClass( 'fuelux-icon' ) ) { + this.$icon.removeClass( 'fuelux-icon-remove' ).addClass( 'fuelux-icon-search' ); + } + + if ( this.$element.hasClass( 'pending' ) ) { + this.$element.trigger( 'canceled.fu.search' ); + } + + this.activeSearch = ''; + this.$input.val( '' ); + this.$element.trigger( 'cleared.fu.search' ); + this.$element.removeClass( 'searched pending' ); + }, + + clearPending: function() { + this.$element.removeClass( 'pending' ); + }, + + action: function() { + var val = this.$input.val(); + + if ( val && val.length > 0 ) { + this.search( val ); + } else { + this.clear(); + } + }, + + buttonclicked: function( e ) { + e.preventDefault(); + if ( $( e.currentTarget ).is( '.disabled, :disabled' ) ) return; + + if ( this.$element.hasClass( 'pending' ) || this.$element.hasClass( 'searched' ) ) { + this.clear(); + } else { + this.action(); + } + }, + + keypress: function( e ) { + var ENTER_KEY_CODE = 13; + var TAB_KEY_CODE = 9; + var ESC_KEY_CODE = 27; + + if ( e.which === ENTER_KEY_CODE ) { + e.preventDefault(); + this.action(); + } else if ( e.which === TAB_KEY_CODE ) { + e.preventDefault(); + } else if ( e.which === ESC_KEY_CODE ) { + e.preventDefault(); + this.clear(); + } else if ( this.options.searchOnKeyPress ) { + // search on other keypress + this.action(); + } + }, + + disable: function() { + this.$element.addClass( 'disabled' ); + this.$input.attr( 'disabled', 'disabled' ); + + if ( !this.options.allowCancel ) { + this.$button.addClass( 'disabled' ); + } + }, + + enable: function() { + this.$element.removeClass( 'disabled' ); + this.$input.removeAttr( 'disabled' ); + this.$button.removeClass( 'disabled' ); + } + }; + + + // SEARCH PLUGIN DEFINITION + + $.fn.search = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.search' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.search', ( data = new Search( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.search.defaults = { + clearOnEmpty: false, + searchOnKeyPress: false, + allowCancel: false + }; + + $.fn.search.Constructor = Search; + + $.fn.search.noConflict = function() { + $.fn.search = old; + return this; + }; + + + // DATA-API + + $( document ).on( 'mousedown.fu.search.data-api', '[data-initialize=search]', function( e ) { + var $control = $( e.target ).closest( '.search' ); + if ( !$control.data( 'fu.search' ) ) { + $control.search( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=search]' ).each( function() { + var $this = $( this ); + if ( $this.data( 'fu.search' ) ) return; + $this.search( $this.data() ); + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Selectlist + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.selectlist; + // SELECT CONSTRUCTOR AND PROTOTYPE + + var Selectlist = function( element, options ) { + this.$element = $( element ); + this.options = $.extend( {}, $.fn.selectlist.defaults, options ); + + + this.$button = this.$element.find( '.btn.dropdown-toggle' ); + this.$hiddenField = this.$element.find( '.hidden-field' ); + this.$label = this.$element.find( '.selected-label' ); + this.$dropdownMenu = this.$element.find( '.dropdown-menu' ); + + this.$element.on( 'click.fu.selectlist', '.dropdown-menu a', $.proxy( this.itemClicked, this ) ); + this.setDefaultSelection(); + + if ( options.resize === 'auto' || this.$element.attr( 'data-resize' ) === 'auto' ) { + this.resize(); + } + + // if selectlist is empty or is one item, disable it + var items = this.$dropdownMenu.children( 'li' ); + if ( items.length === 0 ) { + this.disable(); + this.doSelect( $( this.options.emptyLabelHTML ) ); + } + + // support jumping focus to first letter in dropdown when key is pressed + this.$element.on( 'shown.bs.dropdown', function() { + var $this = $( this ); + // attach key listener when dropdown is shown + $( document ).on( 'keypress.fu.selectlist', function( e ) { + + // get the key that was pressed + var key = String.fromCharCode( e.which ); + // look the items to find the first item with the first character match and set focus + $this.find( "li" ).each( function( idx, item ) { + if ( $( item ).text().charAt( 0 ).toLowerCase() === key ) { + $( item ).children( 'a' ).focus(); + return false; + } + } ); + + } ); + } ); + + // unbind key event when dropdown is hidden + this.$element.on( 'hide.bs.dropdown', function() { + $( document ).off( 'keypress.fu.selectlist' ); + } ); + }; + + Selectlist.prototype = { + + constructor: Selectlist, + + destroy: function() { + this.$element.remove(); + // any external bindings + // [none] + // empty elements to return to original markup + // [none] + // returns string of markup + return this.$element[ 0 ].outerHTML; + }, + + doSelect: function( $item ) { + var $selectedItem; + this.$selectedItem = $selectedItem = $item; + + this.$hiddenField.val( this.$selectedItem.attr( 'data-value' ) ); + this.$label.html( $( this.$selectedItem.children()[ 0 ] ).html() ); + + // clear and set selected item to allow declarative init state + // unlike other controls, selectlist's value is stored internal, not in an input + this.$element.find( 'li' ).each( function() { + if ( $selectedItem.is( $( this ) ) ) { + $( this ).attr( 'data-selected', true ); + } else { + $( this ).removeData( 'selected' ).removeAttr( 'data-selected' ); + } + } ); + }, + + itemClicked: function( e ) { + this.$element.trigger( 'clicked.fu.selectlist', this.$selectedItem ); + + e.preventDefault(); + // ignore if a disabled item is clicked + if ( $( e.currentTarget ).parent( 'li' ).is( '.disabled, :disabled' ) ) { + return; + } + + // is clicked element different from currently selected element? + if ( !( $( e.target ).parent().is( this.$selectedItem ) ) ) { + this.itemChanged( e ); + } + + // return focus to control after selecting an option + this.$element.find( '.dropdown-toggle' ).focus(); + }, + + itemChanged: function( e ) { + //selectedItem needs to be
  • since the data is stored there, not in + this.doSelect( $( e.target ).closest( 'li' ) ); + + // pass object including text and any data-attributes + // to onchange event + var data = this.selectedItem(); + // trigger changed event + this.$element.trigger( 'changed.fu.selectlist', data ); + }, + + resize: function() { + var width = 0; + var newWidth = 0; + var sizer = $( '
    ' ).addClass( 'selectlist-sizer' ); + + + if ( Boolean( $( document ).find( 'html' ).hasClass( 'fuelux' ) ) ) { + // default behavior for fuel ux setup. means fuelux was a class on the html tag + $( document.body ).append( sizer ); + } else { + // fuelux is not a class on the html tag. So we'll look for the first one we find so the correct styles get applied to the sizer + $( '.fuelux:first' ).append( sizer ); + } + + sizer.append( this.$element.clone() ); + + this.$element.find( 'a' ).each( function() { + sizer.find( '.selected-label' ).text( $( this ).text() ); + newWidth = sizer.find( '.selectlist' ).outerWidth(); + newWidth = newWidth + sizer.find( '.sr-only' ).outerWidth(); + if ( newWidth > width ) { + width = newWidth; + } + } ); + + if ( width <= 1 ) { + return; + } + + this.$button.css( 'width', width ); + this.$dropdownMenu.css( 'width', width ); + + sizer.remove(); + }, + + selectedItem: function() { + var txt = this.$selectedItem.text(); + return $.extend( { + text: txt + }, this.$selectedItem.data() ); + }, + + selectByText: function( text ) { + var $item = $( [] ); + this.$element.find( 'li' ).each( function() { + if ( ( this.textContent || this.innerText || $( this ).text() || '' ).toLowerCase() === ( text || '' ).toLowerCase() ) { + $item = $( this ); + return false; + } + } ); + this.doSelect( $item ); + }, + + selectByValue: function( value ) { + var selector = 'li[data-value="' + value + '"]'; + this.selectBySelector( selector ); + }, + + selectByIndex: function( index ) { + // zero-based index + var selector = 'li:eq(' + index + ')'; + this.selectBySelector( selector ); + }, + + selectBySelector: function( selector ) { + var $item = this.$element.find( selector ); + this.doSelect( $item ); + }, + + setDefaultSelection: function() { + var $item = this.$element.find( 'li[data-selected=true]' ).eq( 0 ); + + if ( $item.length === 0 ) { + $item = this.$element.find( 'li' ).has( 'a' ).eq( 0 ); + } + + this.doSelect( $item ); + }, + + enable: function() { + this.$element.removeClass( 'disabled' ); + this.$button.removeClass( 'disabled' ); + }, + + disable: function() { + this.$element.addClass( 'disabled' ); + this.$button.addClass( 'disabled' ); + } + }; + + Selectlist.prototype.getValue = Selectlist.prototype.selectedItem; + + + // SELECT PLUGIN DEFINITION + + $.fn.selectlist = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.selectlist' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.selectlist', ( data = new Selectlist( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.selectlist.defaults = { + emptyLabelHTML: '
  • No items
  • ' + }; + + $.fn.selectlist.Constructor = Selectlist; + + $.fn.selectlist.noConflict = function() { + $.fn.selectlist = old; + return this; + }; + + + // DATA-API + + $( document ).on( 'mousedown.fu.selectlist.data-api', '[data-initialize=selectlist]', function( e ) { + var $control = $( e.target ).closest( '.selectlist' ); + if ( !$control.data( 'fu.selectlist' ) ) { + $control.selectlist( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=selectlist]' ).each( function() { + var $this = $( this ); + if ( !$this.data( 'fu.selectlist' ) ) { + $this.selectlist( $this.data() ); + } + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Spinbox + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.spinbox; + + // SPINBOX CONSTRUCTOR AND PROTOTYPE + + var Spinbox = function Spinbox( element, options ) { + this.$element = $( element ); + this.$element.find( '.btn' ).on( 'click', function( e ) { + //keep spinbox from submitting if they forgot to say type="button" on their spinner buttons + e.preventDefault(); + } ); + this.options = $.extend( {}, $.fn.spinbox.defaults, options ); + this.options.step = this.$element.data( 'step' ) || this.options.step; + + if ( this.options.value < this.options.min ) { + this.options.value = this.options.min; + } else if ( this.options.max < this.options.value ) { + this.options.value = this.options.max; + } + + this.$input = this.$element.find( '.spinbox-input' ); + this.$input.on( 'focusout.fu.spinbox', this.$input, $.proxy( this.change, this ) ); + this.$element.on( 'keydown.fu.spinbox', this.$input, $.proxy( this.keydown, this ) ); + this.$element.on( 'keyup.fu.spinbox', this.$input, $.proxy( this.keyup, this ) ); + + if ( this.options.hold ) { + this.$element.on( 'mousedown.fu.spinbox', '.spinbox-up', $.proxy( function() { + this.startSpin( true ); + }, this ) ); + this.$element.on( 'mouseup.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) ); + this.$element.on( 'mouseout.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) ); + this.$element.on( 'mousedown.fu.spinbox', '.spinbox-down', $.proxy( function() { + this.startSpin( false ); + }, this ) ); + } else { + this.$element.on( 'click.fu.spinbox', '.spinbox-up', $.proxy( function() { + this.step( true ); + }, this ) ); + this.$element.on( 'click.fu.spinbox', '.spinbox-down', $.proxy( function() { + this.step( false ); + }, this ) ); + } + + this.switches = { + count: 1, + enabled: true + }; + + if ( this.options.speed === 'medium' ) { + this.switches.speed = 300; + } else if ( this.options.speed === 'fast' ) { + this.switches.speed = 100; + } else { + this.switches.speed = 500; + } + + this.options.defaultUnit = _isUnitLegal( this.options.defaultUnit, this.options.units ) ? this.options.defaultUnit : ''; + this.unit = this.options.defaultUnit; + + this.lastValue = this.options.value; + + this.render(); + + if ( this.options.disabled ) { + this.disable(); + } + }; + + // Truly private methods + var _limitToStep = function _limitToStep( number, step ) { + return Math.round( number / step ) * step; + }; + + var _isUnitLegal = function _isUnitLegal( unit, validUnits ) { + var legalUnit = false; + var suspectUnit = unit.toLowerCase(); + + $.each( validUnits, function( i, validUnit ) { + validUnit = validUnit.toLowerCase(); + if ( suspectUnit === validUnit ) { + legalUnit = true; + return false; //break out of the loop + } + } ); + + return legalUnit; + }; + + var _applyLimits = function _applyLimits( value ) { + // if unreadable + if ( isNaN( parseFloat( value ) ) ) { + return value; + } + + // if not within range return the limit + if ( value > this.options.max ) { + if ( this.options.cycle ) { + value = this.options.min; + } else { + value = this.options.max; + } + } else if ( value < this.options.min ) { + if ( this.options.cycle ) { + value = this.options.max; + } else { + value = this.options.min; + } + } + + if ( this.options.limitToStep && this.options.step ) { + value = _limitToStep( value, this.options.step ); + + //force round direction so that it stays within bounds + if ( value > this.options.max ) { + value = value - this.options.step; + } else if ( value < this.options.min ) { + value = value + this.options.step; + } + } + + return value; + }; + + Spinbox.prototype = { + constructor: Spinbox, + + destroy: function destroy() { + this.$element.remove(); + // any external bindings + // [none] + // set input value attrbute + this.$element.find( 'input' ).each( function() { + $( this ).attr( 'value', $( this ).val() ); + } ); + // empty elements to return to original markup + // [none] + // returns string of markup + return this.$element[ 0 ].outerHTML; + }, + + render: function render() { + this._setValue( this.getDisplayValue() ); + }, + + change: function change() { + this._setValue( this.getDisplayValue() ); + + this.triggerChangedEvent(); + }, + + stopSpin: function stopSpin() { + if ( this.switches.timeout !== undefined ) { + clearTimeout( this.switches.timeout ); + this.switches.count = 1; + this.triggerChangedEvent(); + } + }, + + triggerChangedEvent: function triggerChangedEvent() { + var currentValue = this.getValue(); + if ( currentValue === this.lastValue ) return; + this.lastValue = currentValue; + + // Primary changed event + this.$element.trigger( 'changed.fu.spinbox', currentValue ); + }, + + startSpin: function startSpin( type ) { + if ( !this.options.disabled ) { + var divisor = this.switches.count; + + if ( divisor === 1 ) { + this.step( type ); + divisor = 1; + } else if ( divisor < 3 ) { + divisor = 1.5; + } else if ( divisor < 8 ) { + divisor = 2.5; + } else { + divisor = 4; + } + + this.switches.timeout = setTimeout( $.proxy( function() { + this.iterate( type ); + }, this ), this.switches.speed / divisor ); + this.switches.count++; + } + }, + + iterate: function iterate( type ) { + this.step( type ); + this.startSpin( type ); + }, + + step: function step( isIncrease ) { + //refresh value from display before trying to increment in case they have just been typing before clicking the nubbins + this._setValue( this.getDisplayValue() ); + var newVal; + + if ( isIncrease ) { + newVal = this.options.value + this.options.step; + } else { + newVal = this.options.value - this.options.step; + } + + newVal = newVal.toFixed( 5 ); + + this._setValue( newVal + this.unit ); + }, + + getDisplayValue: function getDisplayValue() { + var inputValue = this.parseInput( this.$input.val() ); + var value = ( !!inputValue ) ? inputValue : this.options.value; + return value; + }, + + setDisplayValue: function setDisplayValue( value ) { + this.$input.val( value ); + }, + + getValue: function getValue() { + var val = this.options.value; + if ( this.options.decimalMark !== '.' ) { + val = ( val + '' ).split( '.' ).join( this.options.decimalMark ); + } + return val + this.unit; + }, + + setValue: function setValue( val ) { + return this._setValue( val, true ); + }, + + _setValue: function _setValue( val, shouldSetLastValue ) { + //remove any i18n on the number + if ( this.options.decimalMark !== '.' ) { + val = this.parseInput( val ); + } + + //are we dealing with united numbers? + if ( typeof val !== "number" ) { + var potentialUnit = val.replace( /[0-9.-]/g, '' ); + //make sure unit is valid, or else drop it in favor of current unit, or default unit (potentially nothing) + this.unit = _isUnitLegal( potentialUnit, this.options.units ) ? potentialUnit : this.options.defaultUnit; + } + + var intVal = this.getIntValue( val ); + + //make sure we are dealing with a number + if ( isNaN( intVal ) && !isFinite( intVal ) ) { + return this._setValue( this.options.value, shouldSetLastValue ); + } + + //conform + intVal = _applyLimits.call( this, intVal ); + + //cache the pure int value + this.options.value = intVal; + + //prepare number for display + val = intVal + this.unit; + + if ( this.options.decimalMark !== '.' ) { + val = ( val + '' ).split( '.' ).join( this.options.decimalMark ); + } + + //display number + this.setDisplayValue( val ); + + if ( shouldSetLastValue ) { + this.lastValue = val; + } + + return this; + }, + + value: function value( val ) { + if ( val || val === 0 ) { + return this.setValue( val ); + } else { + return this.getValue(); + } + }, + + parseInput: function parseInput( value ) { + value = ( value + '' ).split( this.options.decimalMark ).join( '.' ); + + return value; + }, + + getIntValue: function getIntValue( value ) { + //if they didn't pass in a number, try and get the number + value = ( typeof value === "undefined" ) ? this.getValue() : value; + // if there still isn't a number, abort + if ( typeof value === "undefined" ) { + return; + } + + if ( typeof value === 'string' ) { + value = this.parseInput( value ); + } + + value = parseFloat( value, 10 ); + + return value; + }, + + disable: function disable() { + this.options.disabled = true; + this.$element.addClass( 'disabled' ); + this.$input.attr( 'disabled', '' ); + this.$element.find( 'button' ).addClass( 'disabled' ); + }, + + enable: function enable() { + this.options.disabled = false; + this.$element.removeClass( 'disabled' ); + this.$input.removeAttr( 'disabled' ); + this.$element.find( 'button' ).removeClass( 'disabled' ); + }, + + keydown: function keydown( event ) { + var keyCode = event.keyCode; + if ( keyCode === 38 ) { + this.step( true ); + } else if ( keyCode === 40 ) { + this.step( false ); + } else if ( keyCode === 13 ) { + this.change(); + } + }, + + keyup: function keyup( event ) { + var keyCode = event.keyCode; + + if ( keyCode === 38 || keyCode === 40 ) { + this.triggerChangedEvent(); + } + } + + }; + + + // SPINBOX PLUGIN DEFINITION + + $.fn.spinbox = function spinbox( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.spinbox' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.spinbox', ( data = new Spinbox( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + // value needs to be 0 for this.render(); + $.fn.spinbox.defaults = { + value: 0, + min: 0, + max: 999, + step: 1, + hold: true, + speed: 'medium', + disabled: false, + cycle: false, + units: [], + decimalMark: '.', + defaultUnit: '', + limitToStep: false + }; + + $.fn.spinbox.Constructor = Spinbox; + + $.fn.spinbox.noConflict = function noConflict() { + $.fn.spinbox = old; + return this; + }; + + + // DATA-API + + $( document ).on( 'mousedown.fu.spinbox.data-api', '[data-initialize=spinbox]', function( e ) { + var $control = $( e.target ).closest( '.spinbox' ); + if ( !$control.data( 'fu.spinbox' ) ) { + $control.spinbox( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=spinbox]' ).each( function() { + var $this = $( this ); + if ( !$this.data( 'fu.spinbox' ) ) { + $this.spinbox( $this.data() ); + } + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Tree + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.tree; + + // TREE CONSTRUCTOR AND PROTOTYPE + + var Tree = function Tree( element, options ) { + this.$element = $( element ); + this.options = $.extend( {}, $.fn.tree.defaults, options ); + + if ( this.options.itemSelect ) { + this.$element.on( 'click.fu.tree', '.tree-item', $.proxy( function( ev ) { + this.selectItem( ev.currentTarget ); + }, this ) ); + } + + this.$element.on( 'click.fu.tree', '.tree-branch-name', $.proxy( function( ev ) { + this.toggleFolder( ev.currentTarget ); + }, this ) ); + + this.$element.on( 'click.fu.tree', '.tree-overflow', $.proxy( function( ev ) { + this.populate( $( ev.currentTarget ) ); + }, this ) ); + + // folderSelect default is true + if ( this.options.folderSelect ) { + this.$element.addClass( 'tree-folder-select' ); + this.$element.off( 'click.fu.tree', '.tree-branch-name' ); + this.$element.on( 'click.fu.tree', '.icon-caret', $.proxy( function( ev ) { + this.toggleFolder( $( ev.currentTarget ).parent() ); + }, this ) ); + this.$element.on( 'click.fu.tree', '.tree-branch-name', $.proxy( function( ev ) { + this.selectFolder( $( ev.currentTarget ) ); + }, this ) ); + } + + this.render(); + }; + + Tree.prototype = { + constructor: Tree, + + deselectAll: function deselectAll( nodes ) { + // clear all child tree nodes and style as deselected + nodes = nodes || this.$element; + var $selectedElements = $( nodes ).find( '.tree-selected' ); + $selectedElements.each( function( index, element ) { + styleNodeDeselected( $( element ), $( element ).find( '.glyphicon' ) ); + } ); + return $selectedElements; + }, + + destroy: function destroy() { + // any external bindings [none] + // empty elements to return to original markup + this.$element.find( "li:not([data-template])" ).remove(); + + this.$element.remove(); + // returns string of markup + return this.$element[ 0 ].outerHTML; + }, + + render: function render() { + this.populate( this.$element ); + }, + + populate: function populate( $el, isBackgroundProcess ) { + var self = this; + + // populate was initiated based on clicking overflow link + var isOverflow = $el.hasClass( 'tree-overflow' ); + + var $parent = ( $el.hasClass( 'tree' ) ) ? $el : $el.parent(); + var atRoot = $parent.hasClass( 'tree' ); + + if ( isOverflow && !atRoot ) { + $parent = $parent.parent(); + } + + var treeData = $parent.data(); + // expose overflow data to datasource so it can be responded to appropriately. + if ( isOverflow ) { + treeData.overflow = $el.data(); + } + + isBackgroundProcess = isBackgroundProcess || false; // no user affordance needed (ex.- "loading") + + if ( isOverflow ) { + if ( atRoot ) { + // the loader at the root level needs to continually replace the overflow trigger + // otherwise, when loader is shown below, it will be the loader for the last folder + // in the tree, instead of the loader at the root level. + $el.replaceWith( $parent.find( '> .tree-loader' ).remove() ); + } else { + $el.remove(); + } + } + + var $loader = $parent.find( '.tree-loader:last' ); + + if ( isBackgroundProcess === false ) { + $loader.removeClass( 'hide hidden' ); // jQuery deprecated hide in 3.0. Use hidden instead. Leaving hide here to support previous markup + } + + + this.options.dataSource( treeData ? treeData : {}, function( items ) { + $.each( items.data, function( index, value ) { + var $entity; + + if ( value.type === 'folder' ) { + $entity = self.$element.find( '[data-template=treebranch]:eq(0)' ).clone().removeClass( 'hide hidden' ).removeData( 'template' ).removeAttr( 'data-template' ); // jQuery deprecated hide in 3.0. Use hidden instead. Leaving hide here to support previous markup + $entity.data( value ); + $entity.find( '.tree-branch-name > .tree-label' ).html( value.text || value.name ); + } else if ( value.type === 'item' ) { + $entity = self.$element.find( '[data-template=treeitem]:eq(0)' ).clone().removeClass( 'hide hidden' ).removeData( 'template' ).removeAttr( 'data-template' ); // jQuery deprecated hide in 3.0. Use hidden instead. Leaving hide here to support previous markup + $entity.find( '.tree-item-name > .tree-label' ).html( value.text || value.name ); + $entity.data( value ); + } else if ( value.type === 'overflow' ) { + $entity = self.$element.find( '[data-template=treeoverflow]:eq(0)' ).clone().removeClass( 'hide hidden' ).removeData( 'template' ).removeAttr( 'data-template' ); // jQuery deprecated hide in 3.0. Use hidden instead. Leaving hide here to support previous markup + $entity.find( '.tree-overflow-name > .tree-label' ).html( value.text || value.name ); + $entity.data( value ); + } + + // Decorate $entity with data or other attributes making the + // element easily accessible with libraries like jQuery. + // + // Values are contained within the object returned + // for folders and items as attr: + // + // { + // text: "An Item", + // type: 'item', + // attr = { + // 'classes': 'required-item red-text', + // 'data-parent': parentId, + // 'guid': guid, + // 'id': guid + // } + // }; + // + // the "name" attribute is also supported but is deprecated for "text". + + // add attributes to tree-branch or tree-item + var attr = value.attr || value.dataAttributes || []; + $.each( attr, function( key, value ) { + switch ( key ) { + case 'cssClass': + case 'class': + case 'className': + $entity.addClass( value ); + break; + + // allow custom icons + case 'data-icon': + $entity.find( '.icon-item' ).removeClass().addClass( 'icon-item ' + value ); + $entity.attr( key, value ); + break; + + // ARIA support + case 'id': + $entity.attr( key, value ); + $entity.attr( 'aria-labelledby', value + '-label' ); + $entity.find( '.tree-branch-name > .tree-label' ).attr( 'id', value + '-label' ); + break; + + // style, data-* + default: + $entity.attr( key, value ); + break; + } + } ); + + // add child node + if ( atRoot ) { + $parent.append( $entity ); + } else { + $parent.find( '.tree-branch-children:eq(0)' ).append( $entity ); + } + } ); + + $parent.find( '.tree-loader' ).addClass( 'hidden' ); + + // return newly populated folder + self.$element.trigger( 'loaded.fu.tree', $parent ); + } ); + }, + + selectTreeNode: function selectItem( clickedElement, nodeType ) { + var clicked = {}; // object for clicked element + clicked.$element = $( clickedElement ); + + var selected = {}; // object for selected elements + selected.$elements = this.$element.find( '.tree-selected' ); + selected.dataForEvent = []; + + // determine clicked element and it's icon + if ( nodeType === 'folder' ) { + // make the clicked.$element the container branch + clicked.$element = clicked.$element.closest( '.tree-branch' ); + clicked.$icon = clicked.$element.find( '.icon-folder' ); + } else { + clicked.$icon = clicked.$element.find( '.icon-item' ); + } + clicked.elementData = clicked.$element.data(); + + // the below functions pass objects by copy/reference and use modified object in this function + if ( this.options.multiSelect ) { + multiSelectSyncNodes( this, clicked, selected ); + } else { + singleSelectSyncNodes( this, clicked, selected ); + } + + // all done with the DOM, now fire events + this.$element.trigger( selected.eventType + '.fu.tree', { + target: clicked.elementData, + selected: selected.dataForEvent + } ); + + clicked.$element.trigger( 'updated.fu.tree', { + selected: selected.dataForEvent, + item: clicked.$element, + eventType: selected.eventType + } ); + }, + + discloseFolder: function discloseFolder( el ) { + var $el = $( el ); + + var $branch = $el.closest( '.tree-branch' ); + var $treeFolderContent = $branch.find( '.tree-branch-children' ); + var $treeFolderContentFirstChild = $treeFolderContent.eq( 0 ); + + //take care of the styles + $branch.addClass( 'tree-open' ); + $branch.attr( 'aria-expanded', 'true' ); + $treeFolderContentFirstChild.removeClass( 'hide hidden' ); // jQuery deprecated hide in 3.0. Use hidden instead. Leaving hide here to support previous markup + $branch.find( '> .tree-branch-header .icon-folder' ).eq( 0 ) + .removeClass( 'glyphicon-folder-close' ) + .addClass( 'glyphicon-folder-open' ); + + //add the children to the folder + if ( !$treeFolderContent.children().length ) { + this.populate( $treeFolderContent ); + } + + this.$element.trigger( 'disclosedFolder.fu.tree', $branch.data() ); + }, + + closeFolder: function closeFolder( el ) { + var $el = $( el ); + var $branch = $el.closest( '.tree-branch' ); + var $treeFolderContent = $branch.find( '.tree-branch-children' ); + var $treeFolderContentFirstChild = $treeFolderContent.eq( 0 ); + + //take care of the styles + $branch.removeClass( 'tree-open' ); + $branch.attr( 'aria-expanded', 'false' ); + $treeFolderContentFirstChild.addClass( 'hidden' ); + $branch.find( '> .tree-branch-header .icon-folder' ).eq( 0 ) + .removeClass( 'glyphicon-folder-open' ) + .addClass( 'glyphicon-folder-close' ); + + // remove chidren if no cache + if ( !this.options.cacheItems ) { + $treeFolderContentFirstChild.empty(); + } + + this.$element.trigger( 'closed.fu.tree', $branch.data() ); + }, + + toggleFolder: function toggleFolder( el ) { + var $el = $( el ); + + if ( $el.find( '.glyphicon-folder-close' ).length ) { + this.discloseFolder( el ); + } else if ( $el.find( '.glyphicon-folder-open' ).length ) { + this.closeFolder( el ); + } + }, + + selectFolder: function selectFolder( el ) { + if ( this.options.folderSelect ) { + this.selectTreeNode( el, 'folder' ); + } + }, + + selectItem: function selectItem( el ) { + if ( this.options.itemSelect ) { + this.selectTreeNode( el, 'item' ); + } + }, + + selectedItems: function selectedItems() { + var $sel = this.$element.find( '.tree-selected' ); + var data = []; + + $.each( $sel, function( index, value ) { + data.push( $( value ).data() ); + } ); + return data; + }, + + // collapses open folders + collapse: function collapse() { + var self = this; + var reportedClosed = []; + + var closedReported = function closedReported( event, closed ) { + reportedClosed.push( closed ); + + // jQuery deprecated hide in 3.0. Use hidden instead. Leaving hide here to support previous markup + if ( self.$element.find( ".tree-branch.tree-open:not('.hidden, .hide')" ).length === 0 ) { + self.$element.trigger( 'closedAll.fu.tree', { + tree: self.$element, + reportedClosed: reportedClosed + } ); + self.$element.off( 'loaded.fu.tree', self.$element, closedReported ); + } + }; + + //trigger callback when all folders have reported closed + self.$element.on( 'closed.fu.tree', closedReported ); + + self.$element.find( ".tree-branch.tree-open:not('.hidden, .hide')" ).each( function() { + self.closeFolder( this ); + } ); + }, + + //disclose visible will only disclose visible tree folders + discloseVisible: function discloseVisible() { + var self = this; + + var $openableFolders = self.$element.find( ".tree-branch:not('.tree-open, .hidden, .hide')" ); + var reportedOpened = []; + + var openReported = function openReported( event, opened ) { + reportedOpened.push( opened ); + + if ( reportedOpened.length === $openableFolders.length ) { + self.$element.trigger( 'disclosedVisible.fu.tree', { + tree: self.$element, + reportedOpened: reportedOpened + } ); + /* + * Unbind the `openReported` event. `discloseAll` may be running and we want to reset this + * method for the next iteration. + */ + self.$element.off( 'loaded.fu.tree', self.$element, openReported ); + } + }; + + //trigger callback when all folders have reported opened + self.$element.on( 'loaded.fu.tree', openReported ); + + // open all visible folders + self.$element.find( ".tree-branch:not('.tree-open, .hidden, .hide')" ).each( function triggerOpen() { + self.discloseFolder( $( this ).find( '.tree-branch-header' ) ); + } ); + }, + + /** + * Disclose all will keep listening for `loaded.fu.tree` and if `$(tree-el).data('ignore-disclosures-limit')` + * is `true` (defaults to `true`) it will attempt to disclose any new closed folders than were + * loaded in during the last disclosure. + */ + discloseAll: function discloseAll() { + var self = this; + + //first time + if ( typeof self.$element.data( 'disclosures' ) === 'undefined' ) { + self.$element.data( 'disclosures', 0 ); + } + + var isExceededLimit = ( self.options.disclosuresUpperLimit >= 1 && self.$element.data( 'disclosures' ) >= self.options.disclosuresUpperLimit ); + var isAllDisclosed = self.$element.find( ".tree-branch:not('.tree-open, .hidden, .hide')" ).length === 0; + + + if ( !isAllDisclosed ) { + if ( isExceededLimit ) { + self.$element.trigger( 'exceededDisclosuresLimit.fu.tree', { + tree: self.$element, + disclosures: self.$element.data( 'disclosures' ) + } ); + + /* + * If you've exceeded the limit, the loop will be killed unless you + * explicitly ignore the limit and start the loop again: + * + * $tree.one('exceededDisclosuresLimit.fu.tree', function () { + * $tree.data('ignore-disclosures-limit', true); + * $tree.tree('discloseAll'); + * }); + */ + if ( !self.$element.data( 'ignore-disclosures-limit' ) ) { + return; + } + + } + + self.$element.data( 'disclosures', self.$element.data( 'disclosures' ) + 1 ); + + /* + * A new branch that is closed might be loaded in, make sure those get handled too. + * This attachment needs to occur before calling `discloseVisible` to make sure that + * if the execution of `discloseVisible` happens _super fast_ (as it does in our QUnit tests + * this will still be called. However, make sure this only gets called _once_, because + * otherwise, every single time we go through this loop, _another_ event will be bound + * and then when the trigger happens, this will fire N times, where N equals the number + * of recursive `discloseAll` executions (instead of just one) + */ + self.$element.one( 'disclosedVisible.fu.tree', function() { + self.discloseAll(); + } ); + + /* + * If the page is very fast, calling this first will cause `disclosedVisible.fu.tree` to not + * be bound in time to be called, so, we need to call this last so that the things bound + * and triggered above can have time to take place before the next execution of the + * `discloseAll` method. + */ + self.discloseVisible(); + } else { + self.$element.trigger( 'disclosedAll.fu.tree', { + tree: self.$element, + disclosures: self.$element.data( 'disclosures' ) + } ); + + //if `cacheItems` is false, and they call closeAll, the data is trashed and therefore + //disclosures needs to accurately reflect that + if ( !self.options.cacheItems ) { + self.$element.one( 'closeAll.fu.tree', function() { + self.$element.data( 'disclosures', 0 ); + } ); + } + + } + }, + + // This refreshes the children of a folder. Please destroy and re-initilize for "root level" refresh. + // The data of the refreshed folder is not updated. This control's architecture only allows updating of children. + // Folder renames should probably be handled directly on the node. + refreshFolder: function refreshFolder( $el ) { + var $treeFolder = $el.closest( '.tree-branch' ); + var $treeFolderChildren = $treeFolder.find( '.tree-branch-children' ); + $treeFolderChildren.eq( 0 ).empty(); + + if ( $treeFolder.hasClass( 'tree-open' ) ) { + this.populate( $treeFolderChildren, false ); + } else { + this.populate( $treeFolderChildren, true ); + } + + this.$element.trigger( 'refreshedFolder.fu.tree', $treeFolder.data() ); + } + + }; + + // ALIASES + + //alias for collapse for consistency. "Collapse" is an ambiguous term (collapse what? All? One specific branch?) + Tree.prototype.closeAll = Tree.prototype.collapse; + //alias for backwards compatibility because there's no reason not to. + Tree.prototype.openFolder = Tree.prototype.discloseFolder; + //For library consistency + Tree.prototype.getValue = Tree.prototype.selectedItems; + + // PRIVATE FUNCTIONS + + function styleNodeSelected( $element, $icon ) { + $element.addClass( 'tree-selected' ); + if ( $element.data( 'type' ) === 'item' && $icon.hasClass( 'fueluxicon-bullet' ) ) { + $icon.removeClass( 'fueluxicon-bullet' ).addClass( 'glyphicon-ok' ); // make checkmark + } + } + + function styleNodeDeselected( $element, $icon ) { + $element.removeClass( 'tree-selected' ); + if ( $element.data( 'type' ) === 'item' && $icon.hasClass( 'glyphicon-ok' ) ) { + $icon.removeClass( 'glyphicon-ok' ).addClass( 'fueluxicon-bullet' ); // make bullet + } + } + + function multiSelectSyncNodes( self, clicked, selected ) { + // search for currently selected and add to selected data list if needed + $.each( selected.$elements, function( index, element ) { + var $element = $( element ); + if ( $element[ 0 ] !== clicked.$element[ 0 ] ) { + selected.dataForEvent.push( $( $element ).data() ); + } + } ); + + if ( clicked.$element.hasClass( 'tree-selected' ) ) { + styleNodeDeselected( clicked.$element, clicked.$icon ); + // set event data + selected.eventType = 'deselected'; + } else { + styleNodeSelected( clicked.$element, clicked.$icon ); + // set event data + selected.eventType = 'selected'; + selected.dataForEvent.push( clicked.elementData ); + } + } + + function singleSelectSyncNodes( self, clicked, selected ) { + // element is not currently selected + if ( selected.$elements[ 0 ] !== clicked.$element[ 0 ] ) { + var clearedElements = self.deselectAll( self.$element ); + styleNodeSelected( clicked.$element, clicked.$icon ); + // set event data + selected.eventType = 'selected'; + selected.dataForEvent = [ clicked.elementData ]; + } else { + styleNodeDeselected( clicked.$element, clicked.$icon ); + // set event data + selected.eventType = 'deselected'; + selected.dataForEvent = []; + } + } + + + // TREE PLUGIN DEFINITION + + $.fn.tree = function tree( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.tree' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.tree', ( data = new Tree( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.tree.defaults = { + dataSource: function dataSource( options, callback ) {}, + multiSelect: false, + cacheItems: true, + folderSelect: true, + itemSelect: true, + /* + * How many times `discloseAll` should be called before a stopping and firing + * an `exceededDisclosuresLimit` event. You can force it to continue by + * listening for this event, setting `ignore-disclosures-limit` to `true` and + * starting `discloseAll` back up again. This lets you make more decisions + * about if/when/how/why/how many times `discloseAll` will be started back + * up after it exceeds the limit. + * + * $tree.one('exceededDisclosuresLimit.fu.tree', function () { + * $tree.data('ignore-disclosures-limit', true); + * $tree.tree('discloseAll'); + * }); + * + * `disclusuresUpperLimit` defaults to `0`, so by default this trigger + * will never fire. The true hard the upper limit is the browser's + * ability to load new items (i.e. it will keep loading until the browser + * falls over and dies). On the Fuel UX `index.html` page, the point at + * which the page became super slow (enough to seem almost unresponsive) + * was `4`, meaning 256 folders had been opened, and 1024 were attempting to open. + */ + disclosuresUpperLimit: 0 + }; + + $.fn.tree.Constructor = Tree; + + $.fn.tree.noConflict = function() { + $.fn.tree = old; + return this; + }; + + + // NO DATA-API DUE TO NEED OF DATA-SOURCE + + + + } )( jQuery ); + + + ( function( $ ) { + + /* global jQuery:true */ + + /* + * Fuel UX Utilities + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2016 ExactTarget + * Licensed under the BSD New license. + */ + + + // -- BEGIN MODULE CODE HERE -- + var CONST = { + BACKSPACE_KEYCODE: 8, + COMMA_KEYCODE: 188, // `,` & `<` + DELETE_KEYCODE: 46, + DOWN_ARROW_KEYCODE: 40, + ENTER_KEYCODE: 13, + TAB_KEYCODE: 9, + UP_ARROW_KEYCODE: 38 + }; + + var isShiftHeld = function isShiftHeld( e ) { + return e.shiftKey === true; + }; + + var isKey = function isKey( keyCode ) { + return function compareKeycodes( e ) { + return e.keyCode === keyCode; + }; + }; + + var isBackspaceKey = isKey( CONST.BACKSPACE_KEYCODE ); + var isDeleteKey = isKey( CONST.DELETE_KEYCODE ); + var isTabKey = isKey( CONST.TAB_KEYCODE ); + var isUpArrow = isKey( CONST.UP_ARROW_KEYCODE ); + var isDownArrow = isKey( CONST.DOWN_ARROW_KEYCODE ); + + // https://github.com/ExactTarget/fuelux/issues/1841 + var xssRegex = /<.*>/; + var cleanInput = function cleanInput( questionableInput ) { + var cleanedInput = questionableInput; + + if ( xssRegex.test( cleanedInput ) ) { + cleanedInput = $( '' ).text( questionableInput ).html(); + } + + return cleanedInput; + }; + + $.fn.utilities = { + CONST: CONST, + cleanInput: cleanInput, + isBackspaceKey: isBackspaceKey, + isDeleteKey: isDeleteKey, + isShiftHeld: isShiftHeld, + isTabKey: isTabKey, + isUpArrow: isUpArrow, + isDownArrow: isDownArrow + }; + + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Wizard + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.wizard; + + // WIZARD CONSTRUCTOR AND PROTOTYPE + + var Wizard = function( element, options ) { + this.$element = $( element ); + this.options = $.extend( {}, $.fn.wizard.defaults, options ); + this.options.disablePreviousStep = ( this.$element.attr( 'data-restrict' ) === 'previous' ) ? true : this.options.disablePreviousStep; + this.currentStep = this.options.selectedItem.step; + this.numSteps = this.$element.find( '.steps li' ).length; + this.$prevBtn = this.$element.find( 'button.btn-prev' ); + this.$nextBtn = this.$element.find( 'button.btn-next' ); + + var kids = this.$nextBtn.children().detach(); + this.nextText = $.trim( this.$nextBtn.text() ); + this.$nextBtn.append( kids ); + + var steps = this.$element.children( '.steps-container' ); + // maintains backwards compatibility with < 3.8, will be removed in the future + if ( steps.length === 0 ) { + steps = this.$element; + this.$element.addClass( 'no-steps-container' ); + if ( window && window.console && window.console.warn ) { + window.console.warn( 'please update your wizard markup to include ".steps-container" as seen in http://getfuelux.com/javascript.html#wizard-usage-markup' ); + } + } + steps = steps.find( '.steps' ); + + // handle events + this.$prevBtn.on( 'click.fu.wizard', $.proxy( this.previous, this ) ); + this.$nextBtn.on( 'click.fu.wizard', $.proxy( this.next, this ) ); + steps.on( 'click.fu.wizard', 'li.complete', $.proxy( this.stepclicked, this ) ); + + this.selectedItem( this.options.selectedItem ); + + if ( this.options.disablePreviousStep ) { + this.$prevBtn.attr( 'disabled', true ); + this.$element.find( '.steps' ).addClass( 'previous-disabled' ); + } + }; + + Wizard.prototype = { + + constructor: Wizard, + + destroy: function() { + this.$element.remove(); + // any external bindings [none] + // empty elements to return to original markup [none] + // returns string of markup + return this.$element[ 0 ].outerHTML; + }, + + //index is 1 based + //second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args + //object structure is as follows (all params are optional): { badge: '', label: '', pane: '' } + addSteps: function( index ) { + var items = [].slice.call( arguments ).slice( 1 ); + var $steps = this.$element.find( '.steps' ); + var $stepContent = this.$element.find( '.step-content' ); + var i, l, $pane, $startPane, $startStep, $step; + + index = ( index === -1 || ( index > ( this.numSteps + 1 ) ) ) ? this.numSteps + 1 : index; + if ( items[ 0 ] instanceof Array ) { + items = items[ 0 ]; + } + + $startStep = $steps.find( 'li:nth-child(' + index + ')' ); + $startPane = $stepContent.find( '.step-pane:nth-child(' + index + ')' ); + if ( $startStep.length < 1 ) { + $startStep = null; + } + + for ( i = 0, l = items.length; i < l; i++ ) { + $step = $( '
  • ' ); + $step.append( items[ i ].label || '' ).append( '' ); + $step.find( '.badge' ).append( items[ i ].badge || index ); + + $pane = $( '
    ' ); + $pane.append( items[ i ].pane || '' ); + + if ( !$startStep ) { + $steps.append( $step ); + $stepContent.append( $pane ); + } else { + $startStep.before( $step ); + $startPane.before( $pane ); + } + + index++; + } + + this.syncSteps(); + this.numSteps = $steps.find( 'li' ).length; + this.setState(); + }, + + //index is 1 based, howMany is number to remove + removeSteps: function( index, howMany ) { + var action = 'nextAll'; + var i = 0; + var $steps = this.$element.find( '.steps' ); + var $stepContent = this.$element.find( '.step-content' ); + var $start; + + howMany = ( howMany !== undefined ) ? howMany : 1; + + if ( index > $steps.find( 'li' ).length ) { + $start = $steps.find( 'li:last' ); + } else { + $start = $steps.find( 'li:nth-child(' + index + ')' ).prev(); + if ( $start.length < 1 ) { + action = 'children'; + $start = $steps; + } + + } + + $start[ action ]().each( function() { + var item = $( this ); + var step = item.attr( 'data-step' ); + if ( i < howMany ) { + item.remove(); + $stepContent.find( '.step-pane[data-step="' + step + '"]:first' ).remove(); + } else { + return false; + } + + i++; + } ); + + this.syncSteps(); + this.numSteps = $steps.find( 'li' ).length; + this.setState(); + }, + + setState: function() { + var canMovePrev = ( this.currentStep > 1 ); //remember, steps index is 1 based... + var isFirstStep = ( this.currentStep === 1 ); + var isLastStep = ( this.currentStep === this.numSteps ); + + // disable buttons based on current step + if ( !this.options.disablePreviousStep ) { + this.$prevBtn.attr( 'disabled', ( isFirstStep === true || canMovePrev === false ) ); + } + + // change button text of last step, if specified + var last = this.$nextBtn.attr( 'data-last' ); + if ( last ) { + this.lastText = last; + // replace text + var text = this.nextText; + if ( isLastStep === true ) { + text = this.lastText; + // add status class to wizard + this.$element.addClass( 'complete' ); + } else { + this.$element.removeClass( 'complete' ); + } + + var kids = this.$nextBtn.children().detach(); + this.$nextBtn.text( text ).append( kids ); + } + + // reset classes for all steps + var $steps = this.$element.find( '.steps li' ); + $steps.removeClass( 'active' ).removeClass( 'complete' ); + $steps.find( 'span.badge' ).removeClass( 'badge-info' ).removeClass( 'badge-success' ); + + // set class for all previous steps + var prevSelector = '.steps li:lt(' + ( this.currentStep - 1 ) + ')'; + var $prevSteps = this.$element.find( prevSelector ); + $prevSteps.addClass( 'complete' ); + $prevSteps.find( 'span.badge' ).addClass( 'badge-success' ); + + // set class for current step + var currentSelector = '.steps li:eq(' + ( this.currentStep - 1 ) + ')'; + var $currentStep = this.$element.find( currentSelector ); + $currentStep.addClass( 'active' ); + $currentStep.find( 'span.badge' ).addClass( 'badge-info' ); + + // set display of target element + var $stepContent = this.$element.find( '.step-content' ); + var target = $currentStep.attr( 'data-step' ); + $stepContent.find( '.step-pane' ).removeClass( 'active' ); + $stepContent.find( '.step-pane[data-step="' + target + '"]:first' ).addClass( 'active' ); + + // reset the wizard position to the left + this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: 0' ); + + // check if the steps are wider than the container div + var totalWidth = 0; + this.$element.find( '.steps > li' ).each( function() { + totalWidth += $( this ).outerWidth(); + } ); + var containerWidth = 0; + if ( this.$element.find( '.actions' ).length ) { + containerWidth = this.$element.width() - this.$element.find( '.actions' ).first().outerWidth(); + } else { + containerWidth = this.$element.width(); + } + + if ( totalWidth > containerWidth ) { + // set the position so that the last step is on the right + var newMargin = totalWidth - containerWidth; + this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: -' + newMargin + 'px' ); + + // set the position so that the active step is in a good + // position if it has been moved out of view + if ( this.$element.find( 'li.active' ).first().position().left < 200 ) { + newMargin += this.$element.find( 'li.active' ).first().position().left - 200; + if ( newMargin < 1 ) { + this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: 0' ); + } else { + this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: -' + newMargin + 'px' ); + } + + } + + } + + // only fire changed event after initializing + if ( typeof( this.initialized ) !== 'undefined' ) { + var e = $.Event( 'changed.fu.wizard' ); + this.$element.trigger( e, { + step: this.currentStep + } ); + } + + this.initialized = true; + }, + + stepclicked: function( e ) { + var li = $( e.currentTarget ); + var index = this.$element.find( '.steps li' ).index( li ); + + if ( index < this.currentStep && this.options.disablePreviousStep ) { //enforce restrictions + return; + } else { + var evt = $.Event( 'stepclicked.fu.wizard' ); + this.$element.trigger( evt, { + step: index + 1 + } ); + if ( evt.isDefaultPrevented() ) { + return; + } + + this.currentStep = ( index + 1 ); + this.setState(); + } + }, + + syncSteps: function() { + var i = 1; + var $steps = this.$element.find( '.steps' ); + var $stepContent = this.$element.find( '.step-content' ); + + $steps.children().each( function() { + var item = $( this ); + var badge = item.find( '.badge' ); + var step = item.attr( 'data-step' ); + + if ( !isNaN( parseInt( badge.html(), 10 ) ) ) { + badge.html( i ); + } + + item.attr( 'data-step', i ); + $stepContent.find( '.step-pane[data-step="' + step + '"]:last' ).attr( 'data-step', i ); + i++; + } ); + }, + + previous: function() { + if ( this.options.disablePreviousStep || this.currentStep === 1 ) { + return; + } + + var e = $.Event( 'actionclicked.fu.wizard' ); + this.$element.trigger( e, { + step: this.currentStep, + direction: 'previous' + } ); + if ( e.isDefaultPrevented() ) { + return; + } // don't increment ...what? Why? + + this.currentStep -= 1; + this.setState(); + + // only set focus if focus is still on the $nextBtn (avoid stomping on a focus set programmatically in actionclicked callback) + if ( this.$prevBtn.is( ':focus' ) ) { + var firstFormField = this.$element.find( '.active' ).find( 'input, select, textarea' )[ 0 ]; + + if ( typeof firstFormField !== 'undefined' ) { + // allow user to start typing immediately instead of having to click on the form field. + $( firstFormField ).focus(); + } else if ( this.$element.find( '.active input:first' ).length === 0 && this.$prevBtn.is( ':disabled' ) ) { + //only set focus on a button as the last resort if no form fields exist and the just clicked button is now disabled + this.$nextBtn.focus(); + } + + } + }, + + next: function() { + var e = $.Event( 'actionclicked.fu.wizard' ); + this.$element.trigger( e, { + step: this.currentStep, + direction: 'next' + } ); + if ( e.isDefaultPrevented() ) { + return; + } // respect preventDefault in case dev has attached validation to step and wants to stop propagation based on it. + + if ( this.currentStep < this.numSteps ) { + this.currentStep += 1; + this.setState(); + } else { //is last step + this.$element.trigger( 'finished.fu.wizard' ); + } + + // only set focus if focus is still on the $nextBtn (avoid stomping on a focus set programmatically in actionclicked callback) + if ( this.$nextBtn.is( ':focus' ) ) { + var firstFormField = this.$element.find( '.active' ).find( 'input, select, textarea' )[ 0 ]; + + if ( typeof firstFormField !== 'undefined' ) { + // allow user to start typing immediately instead of having to click on the form field. + $( firstFormField ).focus(); + } else if ( this.$element.find( '.active input:first' ).length === 0 && this.$nextBtn.is( ':disabled' ) ) { + //only set focus on a button as the last resort if no form fields exist and the just clicked button is now disabled + this.$prevBtn.focus(); + } + + } + }, + + selectedItem: function( selectedItem ) { + var retVal, step; + + if ( selectedItem ) { + step = selectedItem.step || -1; + //allow selection of step by data-name + step = Number( this.$element.find( '.steps li[data-name="' + step + '"]' ).first().attr( 'data-step' ) ) || Number( step ); + + if ( 1 <= step && step <= this.numSteps ) { + this.currentStep = step; + this.setState(); + } else { + step = this.$element.find( '.steps li.active:first' ).attr( 'data-step' ); + if ( !isNaN( step ) ) { + this.currentStep = parseInt( step, 10 ); + this.setState(); + } + + } + + retVal = this; + } else { + retVal = { + step: this.currentStep + }; + if ( this.$element.find( '.steps li.active:first[data-name]' ).length ) { + retVal.stepname = this.$element.find( '.steps li.active:first' ).attr( 'data-name' ); + } + + } + + return retVal; + } + }; + + + // WIZARD PLUGIN DEFINITION + + $.fn.wizard = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.wizard' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.wizard', ( data = new Wizard( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.wizard.defaults = { + disablePreviousStep: false, + selectedItem: { + step: -1 + } //-1 means it will attempt to look for "active" class in order to set the step + }; + + $.fn.wizard.Constructor = Wizard; + + $.fn.wizard.noConflict = function() { + $.fn.wizard = old; + return this; + }; + + + // DATA-API + + $( document ).on( 'mouseover.fu.wizard.data-api', '[data-initialize=wizard]', function( e ) { + var $control = $( e.target ).closest( '.wizard' ); + if ( !$control.data( 'fu.wizard' ) ) { + $control.wizard( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=wizard]' ).each( function() { + var $this = $( this ); + if ( $this.data( 'fu.wizard' ) ) return; + $this.wizard( $this.data() ); + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Infinite Scroll + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.infinitescroll; + + // INFINITE SCROLL CONSTRUCTOR AND PROTOTYPE + + var InfiniteScroll = function( element, options ) { + this.$element = $( element ); + this.$element.addClass( 'infinitescroll' ); + this.options = $.extend( {}, $.fn.infinitescroll.defaults, options ); + + this.curScrollTop = this.$element.scrollTop(); + this.curPercentage = this.getPercentage(); + this.fetchingData = false; + + this.$element.on( 'scroll.fu.infinitescroll', $.proxy( this.onScroll, this ) ); + this.onScroll(); + }; + + InfiniteScroll.prototype = { + + constructor: InfiniteScroll, + + destroy: function() { + this.$element.remove(); + // any external bindings + // [none] + + // empty elements to return to original markup + this.$element.empty(); + + return this.$element[ 0 ].outerHTML; + }, + + disable: function() { + this.$element.off( 'scroll.fu.infinitescroll' ); + }, + + enable: function() { + this.$element.on( 'scroll.fu.infinitescroll', $.proxy( this.onScroll, this ) ); + }, + + end: function( content ) { + var end = $( '
    ' ); + if ( content ) { + end.append( content ); + } else { + end.append( '---------' ); + } + + this.$element.append( end ); + this.disable(); + }, + + getPercentage: function() { + var height = ( this.$element.css( 'box-sizing' ) === 'border-box' ) ? this.$element.outerHeight() : this.$element.height(); + var scrollHeight = this.$element.get( 0 ).scrollHeight; + return ( scrollHeight > height ) ? ( ( height / ( scrollHeight - this.curScrollTop ) ) * 100 ) : 0; + }, + + fetchData: function( force ) { + var load = $( '
    ' ); + var self = this; + var moreBtn; + + var fetch = function() { + var helpers = { + percentage: self.curPercentage, + scrollTop: self.curScrollTop + }; + var $loader = $( '
    ' ); + load.append( $loader ); + $loader.loader(); + if ( self.options.dataSource ) { + self.options.dataSource( helpers, function( resp ) { + var end; + load.remove(); + if ( resp.content ) { + self.$element.append( resp.content ); + } + + if ( resp.end ) { + end = ( resp.end !== true ) ? resp.end : undefined; + self.end( end ); + } + + self.fetchingData = false; + } ); + } + }; + + this.fetchingData = true; + this.$element.append( load ); + if ( this.options.hybrid && force !== true ) { + moreBtn = $( '' ); + if ( typeof this.options.hybrid === 'object' ) { + moreBtn.append( this.options.hybrid.label ); + } else { + moreBtn.append( '' ); + } + + moreBtn.on( 'click.fu.infinitescroll', function() { + moreBtn.remove(); + fetch(); + } ); + load.append( moreBtn ); + } else { + fetch(); + } + }, + + onScroll: function( e ) { + this.curScrollTop = this.$element.scrollTop(); + this.curPercentage = this.getPercentage(); + if ( !this.fetchingData && this.curPercentage >= this.options.percentage ) { + this.fetchData(); + } + } + }; + + // INFINITE SCROLL PLUGIN DEFINITION + + $.fn.infinitescroll = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.infinitescroll' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.infinitescroll', ( data = new InfiniteScroll( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.infinitescroll.defaults = { + dataSource: null, + hybrid: false, //can be true or an object with structure: { 'label': (markup or jQuery obj) } + percentage: 95 //percentage scrolled to the bottom before more is loaded + }; + + $.fn.infinitescroll.Constructor = InfiniteScroll; + + $.fn.infinitescroll.noConflict = function() { + $.fn.infinitescroll = old; + return this; + }; + + // NO DATA-API DUE TO NEED OF DATA-SOURCE + + + + } )( jQuery ); + + + ( function( $ ) { + + /* global jQuery:true utilities:true */ + + /* + * Fuel UX Pillbox + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + var old = $.fn.pillbox; + + var utilities = $.fn.utilities; + var CONST = $.fn.utilities.CONST; + var COMMA_KEYCODE = CONST.COMMA_KEYCODE; + var ENTER_KEYCODE = CONST.ENTER_KEYCODE; + var isBackspaceKey = utilities.isBackspaceKey; + var isDeleteKey = utilities.isDeleteKey; + var isTabKey = utilities.isTabKey; + var isUpArrow = utilities.isUpArrow; + var isDownArrow = utilities.isDownArrow; + var cleanInput = utilities.cleanInput; + var isShiftHeld = utilities.isShiftHeld; + + // PILLBOX CONSTRUCTOR AND PROTOTYPE + var Pillbox = function Pillbox( element, options ) { + this.$element = $( element ); + this.$moreCount = this.$element.find( '.pillbox-more-count' ); + this.$pillGroup = this.$element.find( '.pill-group' ); + this.$addItem = this.$element.find( '.pillbox-add-item' ); + this.$addItemWrap = this.$addItem.parent(); + this.$suggest = this.$element.find( '.suggest' ); + this.$pillHTML = '
  • ' + + ' ' + + ' ' + + ' Remove' + + ' ' + + '
  • '; + + this.options = $.extend( {}, $.fn.pillbox.defaults, options ); + + if ( this.options.readonly === -1 ) { + if ( this.$element.attr( 'data-readonly' ) !== undefined ) { + this.readonly( true ); + } + } else if ( this.options.readonly ) { + this.readonly( true ); + } + + // EVENTS + this.acceptKeyCodes = this._generateObject( this.options.acceptKeyCodes ); + // Create an object out of the key code array, so we don't have to loop through it on every key stroke + + this.$element.on( 'click.fu.pillbox', '.pill-group > .pill', $.proxy( this.itemClicked, this ) ); + this.$element.on( 'click.fu.pillbox', $.proxy( this.inputFocus, this ) ); + this.$element.on( 'keydown.fu.pillbox', '.pillbox-add-item', $.proxy( this.inputEvent, this ) ); + if ( this.options.onKeyDown ) { + this.$element.on( 'mousedown.fu.pillbox', '.suggest > li', $.proxy( this.suggestionClick, this ) ); + } + + if ( this.options.edit ) { + this.$element.addClass( 'pills-editable' ); + this.$element.on( 'blur.fu.pillbox', '.pillbox-add-item', $.proxy( this.cancelEdit, this ) ); + } + this.$element.on( 'blur.fu.pillbox', '.pillbox-add-item', $.proxy( this.inputEvent, this ) ); + }; + + Pillbox.prototype = { + constructor: Pillbox, + + destroy: function destroy() { + this.$element.remove(); + // any external bindings + // [none] + // empty elements to return to original markup + // [none] + // returns string of markup + return this.$element[ 0 ].outerHTML; + }, + + items: function items() { + var self = this; + + return this.$pillGroup.children( '.pill' ).map( function getItemsData() { + return self.getItemData( $( this ) ); + } ).get(); + }, + + itemClicked: function itemClicked( e ) { + var $target = $( e.target ); + var $item; + + e.preventDefault(); + e.stopPropagation(); + this._closeSuggestions(); + + if ( !$target.hasClass( 'pill' ) ) { + $item = $target.parent(); + if ( this.$element.attr( 'data-readonly' ) === undefined ) { + if ( $target.hasClass( 'glyphicon-close' ) ) { + if ( this.options.onRemove ) { + this.options.onRemove( this.getItemData( $item, { + el: $item + } ), $.proxy( this._removeElement, this ) ); + } else { + this._removeElement( this.getItemData( $item, { + el: $item + } ) ); + } + + return false; + } else if ( this.options.edit ) { + if ( $item.find( '.pillbox-list-edit' ).length ) { + return false; + } + + this.openEdit( $item ); + } + } + } else { + $item = $target; + } + + this.$element.trigger( 'clicked.fu.pillbox', this.getItemData( $item ) ); + + return true; + }, + + readonly: function readonly( enable ) { + if ( enable ) { + this.$element.attr( 'data-readonly', 'readonly' ); + } else { + this.$element.removeAttr( 'data-readonly' ); + } + + if ( this.options.truncate ) { + this.truncate( enable ); + } + }, + + suggestionClick: function suggestionClick( e ) { + var $item = $( e.currentTarget ); + var item = { + text: $item.html(), + value: $item.data( 'value' ) + }; + + e.preventDefault(); + this.$addItem.val( '' ); + + if ( $item.data( 'attr' ) ) { + item.attr = JSON.parse( $item.data( 'attr' ) ); + } + + item.data = $item.data( 'data' ); + + this.addItems( item, true ); + + // needs to be after addItems for IE + this._closeSuggestions(); + }, + + itemCount: function itemCount() { + return this.$pillGroup.children( '.pill' ).length; + }, + + // First parameter is 1 based index (optional, if index is not passed all new items will be appended) + // Second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args + // object structure is as follows (attr and value are optional): { text: '', value: '', attr: {}, data: {} } + addItems: function addItems() { + var self = this; + var items; + var index; + var isInternal; + + if ( isFinite( String( arguments[ 0 ] ) ) && !( arguments[ 0 ] instanceof Array ) ) { + items = [].slice.call( arguments ).slice( 1 ); + index = arguments[ 0 ]; + } else { + items = [].slice.call( arguments ).slice( 0 ); + isInternal = items[ 1 ] && !items[ 1 ].text; + } + + // If first argument is an array, use that, otherwise they probably passed each thing through as a separate arg, so use items as-is + if ( items[ 0 ] instanceof Array ) { + items = items[ 0 ]; + } + + if ( items.length ) { + $.each( items, function normalizeItemsObject( i, value ) { + var data = { + text: value.text, + value: ( value.value ? value.value : value.text ), + el: self.$pillHTML + }; + + if ( value.attr ) { + data.attr = value.attr; + } + + if ( value.data ) { + data.data = value.data; + } + + items[ i ] = data; + } ); + + if ( this.options.edit && this.currentEdit ) { + items[ 0 ].el = this.currentEdit.wrap( '
    ' ).parent().html(); + } + + if ( isInternal ) { + items.pop( 1 ); + } + + if ( self.options.onAdd && isInternal ) { + if ( this.options.edit && this.currentEdit ) { + self.options.onAdd( items[ 0 ], $.proxy( self.saveEdit, this ) ); + } else { + self.options.onAdd( items[ 0 ], $.proxy( self.placeItems, this ) ); + } + } else if ( this.options.edit && this.currentEdit ) { + self.saveEdit( items ); + } else if ( index ) { + self.placeItems( index, items ); + } else { + self.placeItems( items, isInternal ); + } + } + }, + + // First parameter is the index (1 based) to start removing items + // Second parameter is the number of items to be removed + removeItems: function removeItems( index, howMany ) { + var self = this; + + if ( !index ) { + this.$pillGroup.find( '.pill' ).remove(); + this._removePillTrigger( { + method: 'removeAll' + } ); + } else { + var itemsToRemove = howMany ? howMany : 1; + + for ( var item = 0; item < itemsToRemove; item++ ) { + var $currentItem = self.$pillGroup.find( '> .pill:nth-child(' + index + ')' ); + + if ( $currentItem ) { + $currentItem.remove(); + } else { + break; + } + } + } + }, + + // First parameter is index (optional) + // Second parameter is new arguments + placeItems: function placeItems() { + var items; + var index; + var $neighbor; + var isInternal; + + if ( isFinite( String( arguments[ 0 ] ) ) && !( arguments[ 0 ] instanceof Array ) ) { + items = [].slice.call( arguments ).slice( 1 ); + index = arguments[ 0 ]; + } else { + items = [].slice.call( arguments ).slice( 0 ); + isInternal = items[ 1 ] && !items[ 1 ].text; + } + + if ( items[ 0 ] instanceof Array ) { + items = items[ 0 ]; + } + + if ( items.length ) { + var newItems = []; + $.each( items, function prepareItemForAdd( i, item ) { + var $item = $( item.el ); + + $item.attr( 'data-value', item.value ); + $item.find( 'span:first' ).html( item.text ); + + // DOM attributes + if ( item.attr ) { + $.each( item.attr, function handleDOMAttributes( key, value ) { + if ( key === 'cssClass' || key === 'class' ) { + $item.addClass( value ); + } else { + $item.attr( key, value ); + } + } ); + } + + if ( item.data ) { + $item.data( 'data', item.data ); + } + + newItems.push( $item ); + } ); + + if ( this.$pillGroup.children( '.pill' ).length > 0 ) { + if ( index ) { + $neighbor = this.$pillGroup.find( '.pill:nth-child(' + index + ')' ); + + if ( $neighbor.length ) { + $neighbor.before( newItems ); + } else { + this.$pillGroup.children( '.pill:last' ).after( newItems ); + } + } else { + this.$pillGroup.children( '.pill:last' ).after( newItems ); + } + } else { + this.$pillGroup.prepend( newItems ); + } + + if ( isInternal ) { + this.$element.trigger( 'added.fu.pillbox', { + text: items[ 0 ].text, + value: items[ 0 ].value + } ); + } + } + }, + + inputEvent: function inputEvent( e ) { + var self = this; + var text = self.options.cleanInput( this.$addItem.val() ); + var isFocusOutEvent = e.type === 'focusout'; + var blurredAfterInput = ( isFocusOutEvent && text.length > 0 ); + // If we test for keycode only, it will match for `<` & `,` instead of just `,` + // This way users can type `<3` and `1 < 3`, etc... + var acceptKeyPressed = ( this.acceptKeyCodes[ e.keyCode ] && !isShiftHeld( e ) ); + + if ( acceptKeyPressed || blurredAfterInput ) { + var attr; + var value; + + if ( this.options.onKeyDown && this._isSuggestionsOpen() ) { + var $selection = this.$suggest.find( '.pillbox-suggest-sel' ); + + if ( $selection.length ) { + text = self.options.cleanInput( $selection.html() ); + value = self.options.cleanInput( $selection.data( 'value' ) ); + attr = $selection.data( 'attr' ); + } + } + + // ignore comma and make sure text that has been entered (protects against " ,". https://github.com/ExactTarget/fuelux/issues/593), unless allowEmptyPills is true. + if ( text.replace( /[ ]*\,[ ]*/, '' ).match( /\S/ ) || ( this.options.allowEmptyPills && text.length ) ) { + this._closeSuggestions(); + this.$addItem.hide().val( '' ); + + if ( attr ) { + this.addItems( { + text: text, + value: value, + attr: JSON.parse( attr ) + }, true ); + } else { + this.addItems( { + text: text, + value: value + }, true ); + } + + setTimeout( function clearAddItemInput() { + self.$addItem.show().attr( { + size: 10 + } ).focus(); + }, 0 ); + } + + e.preventDefault(); + return true; + } else if ( isBackspaceKey( e ) || isDeleteKey( e ) ) { + if ( !text.length ) { + e.preventDefault(); + + if ( this.options.edit && this.currentEdit ) { + this.cancelEdit(); + return true; + } + + this._closeSuggestions(); + var $lastItem = this.$pillGroup.children( '.pill:last' ); + + if ( $lastItem.hasClass( 'pillbox-highlight' ) ) { + this._removeElement( this.getItemData( $lastItem, { + el: $lastItem + } ) ); + } else { + $lastItem.addClass( 'pillbox-highlight' ); + } + + return true; + } + } else if ( text.length > 10 ) { + if ( this.$addItem.width() < ( this.$pillGroup.width() - 6 ) ) { + this.$addItem.attr( { + size: text.length + 3 + } ); + } + } + + this.$pillGroup.find( '.pill' ).removeClass( 'pillbox-highlight' ); + + if ( this.options.onKeyDown && !isFocusOutEvent ) { + if ( + isTabKey( e ) || + isUpArrow( e ) || + isDownArrow( e ) + ) { + if ( this._isSuggestionsOpen() ) { + this._keySuggestions( e ); + } + + return true; + } + + // only allowing most recent event callback to register + this.callbackId = e.timeStamp; + this.options.onKeyDown( { + event: e, + value: text + }, function callOpenSuggestions( data ) { + self._openSuggestions( e, data ); + } ); + } + + return true; + }, + + openEdit: function openEdit( el ) { + var targetChildIndex = el.index() + 1; + var $addItemWrap = this.$addItemWrap.detach().hide(); + + this.$pillGroup.find( '.pill:nth-child(' + targetChildIndex + ')' ).before( $addItemWrap ); + this.currentEdit = el.detach(); + + $addItemWrap.addClass( 'editing' ); + this.$addItem.val( el.find( 'span:first' ).html() ); + $addItemWrap.show(); + this.$addItem.focus().select(); + }, + + cancelEdit: function cancelEdit( e ) { + var $addItemWrap; + if ( !this.currentEdit ) { + return false; + } + + this._closeSuggestions(); + if ( e ) { + this.$addItemWrap.before( this.currentEdit ); + } + + this.currentEdit = false; + + $addItemWrap = this.$addItemWrap.detach(); + $addItemWrap.removeClass( 'editing' ); + this.$addItem.val( '' ); + this.$pillGroup.append( $addItemWrap ); + + return true; + }, + + // Must match syntax of placeItem so addItem callback is called when an item is edited + // expecting to receive an array back from the callback containing edited items + saveEdit: function saveEdit() { + var item = arguments[ 0 ][ 0 ] ? arguments[ 0 ][ 0 ] : arguments[ 0 ]; + + this.currentEdit = $( item.el ); + this.currentEdit.data( 'value', item.value ); + this.currentEdit.find( 'span:first' ).html( item.text ); + + this.$addItemWrap.hide(); + this.$addItemWrap.before( this.currentEdit ); + this.currentEdit = false; + + this.$addItem.val( '' ); + this.$addItemWrap.removeClass( 'editing' ); + this.$pillGroup.append( this.$addItemWrap.detach().show() ); + this.$element.trigger( 'edited.fu.pillbox', { + value: item.value, + text: item.text + } ); + }, + + removeBySelector: function removeBySelector() { + var selectors = [].slice.call( arguments ).slice( 0 ); + var self = this; + + $.each( selectors, function doRemove( i, sel ) { + self.$pillGroup.find( sel ).remove(); + } ); + + this._removePillTrigger( { + method: 'removeBySelector', + removedSelectors: selectors + } ); + }, + + removeByValue: function removeByValue() { + var values = [].slice.call( arguments ).slice( 0 ); + var self = this; + + $.each( values, function doRemove( i, val ) { + self.$pillGroup.find( '> .pill[data-value="' + val + '"]' ).remove(); + } ); + + this._removePillTrigger( { + method: 'removeByValue', + removedValues: values + } ); + }, + + removeByText: function removeByText() { + var text = [].slice.call( arguments ).slice( 0 ); + var self = this; + + $.each( text, function doRemove( i, matchingText ) { + self.$pillGroup.find( '> .pill:contains("' + matchingText + '")' ).remove(); + } ); + + this._removePillTrigger( { + method: 'removeByText', + removedText: text + } ); + }, + + truncate: function truncate( enable ) { + var self = this; + + this.$element.removeClass( 'truncate' ); + this.$addItemWrap.removeClass( 'truncated' ); + this.$pillGroup.find( '.pill' ).removeClass( 'truncated' ); + + if ( enable ) { + this.$element.addClass( 'truncate' ); + + var availableWidth = this.$element.width(); + var containerFull = false; + var processedPills = 0; + var totalPills = this.$pillGroup.find( '.pill' ).length; + var widthUsed = 0; + + this.$pillGroup.find( '.pill' ).each( function processPills() { + var pill = $( this ); + if ( !containerFull ) { + processedPills++; + self.$moreCount.text( totalPills - processedPills ); + if ( ( widthUsed + pill.outerWidth( true ) + self.$addItemWrap.outerWidth( true ) ) <= availableWidth ) { + widthUsed += pill.outerWidth( true ); + } else { + self.$moreCount.text( ( totalPills - processedPills ) + 1 ); + pill.addClass( 'truncated' ); + containerFull = true; + } + } else { + pill.addClass( 'truncated' ); + } + } ); + if ( processedPills === totalPills ) { + this.$addItemWrap.addClass( 'truncated' ); + } + } + }, + + inputFocus: function inputFocus() { + this.$element.find( '.pillbox-add-item' ).focus(); + }, + + getItemData: function getItemData( el, data ) { + return $.extend( { + text: el.find( 'span:first' ).html() + }, el.data(), data ); + }, + + _removeElement: function _removeElement( data ) { + data.el.remove(); + delete data.el; + this.$element.trigger( 'removed.fu.pillbox', data ); + }, + + _removePillTrigger: function _removePillTrigger( removedBy ) { + this.$element.trigger( 'removed.fu.pillbox', removedBy ); + }, + + _generateObject: function _generateObject( data ) { + var obj = {}; + + $.each( data, function setObjectValue( index, value ) { + obj[ value ] = true; + } ); + + return obj; + }, + + _openSuggestions: function _openSuggestions( e, data ) { + var $suggestionList = $( '

    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 diff --git a/dist/js/fuelux.js b/dist/js/fuelux.js index 4e6ad51ce..0eac5540d 100644 --- a/dist/js/fuelux.js +++ b/dist/js/fuelux.js @@ -1,5 +1,6 @@ /*! - * Fuel UX v3.16.0 + * Fuel UX EDGE - Built 2017/06/05, 2:24:54 PM + * Previous release: v3.16.0 * Copyright 2012-2017 ExactTarget * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) */ diff --git a/dist/js/fuelux.min.js b/dist/js/fuelux.min.js index 700163428..f09c2f6d9 100644 --- a/dist/js/fuelux.min.js +++ b/dist/js/fuelux.min.js @@ -1,5 +1,6 @@ /*! - * Fuel UX v3.16.0 + * Fuel UX EDGE - Built 2017/06/05, 2:24:54 PM + * Previous release: v3.16.0 * Copyright 2012-2017 ExactTarget * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) */ diff --git a/grunt/config/connect.js b/grunt/config/connect.js index f13fd0ec6..a38fcd762 100644 --- a/grunt/config/connect.js +++ b/grunt/config/connect.js @@ -26,7 +26,19 @@ module.exports = function (grunt) { port: '<%= connectTestServerOptionsPort %>', useAvailablePort: true } + }, + regressionTestServer: { + options: { + base: { + path: '.', + options: { + index: ['index.html', 'tests.html'] + } + }, + hostname: '*', + port: '<%= connectRegressionTestServerOptionsPort %>', + useAvailablePort: true + } } - } - -}; \ No newline at end of file + }; +}; diff --git a/grunt/config/watch.js b/grunt/config/watch.js index fe6f1ff03..2d2d2fe18 100644 --- a/grunt/config/watch.js +++ b/grunt/config/watch.js @@ -43,7 +43,7 @@ module.exports = { ] }, less: { - files: ['fonts/**', + files: ['fonts/**', 'less/**'], options: { livereload: true @@ -65,15 +65,26 @@ module.exports = { tasks: ['distcssdev'] }, dist: { - files: ['fonts/**', + files: ['fonts/**', 'grunt/**', - 'js/**', + 'js/**', 'less/**'], options: { livereload: true }, tasks: ['dist'] }, + reference: { + files: [ + 'reference/dist/css/**', + 'reference/dist/fonts/**', + 'reference/dist/js/**', + 'reference/dist/templates/**'], + options: { + livereload: true + }, + tasks: ['dist'] + }, lite: { files: [], options: { @@ -81,4 +92,4 @@ module.exports = { }, tasks: [] } -}; \ No newline at end of file +}; diff --git a/grunt/tasks/serve.js b/grunt/tasks/serve.js index 314e20e77..d01f3c543 100644 --- a/grunt/tasks/serve.js +++ b/grunt/tasks/serve.js @@ -1,22 +1,18 @@ -module.exports = function(grunt) { - - /* ------------- - SERVE - ------------- */ - // default serve task that runs tests and builds and tests dist by default. - grunt.registerTask('serve', 'Test, build, serve files. (~20s)', function () { +module.exports = function serveTasks (grunt) { + // runs tests and builds and tests dist by default. + grunt.registerTask('serve', 'Test, build, serve files. (~20s)', function serve () { var tasks = ['test', 'servedist']; grunt.task.run(tasks); }); // serve task that runs tests and builds and tests dist by default (~20s). - grunt.registerTask('serveslow', 'Serve files. Run all tests. Does not build. (~20s)', function () { + grunt.registerTask('serveslow', 'Serve files. Run all tests. Does not build. (~20s)', function serveslow () { var tasks = ['connect:server', 'test', 'watch:source']; grunt.task.run(tasks); }); - //Fastest serve command for freely slinging code (no tests will run by default). - grunt.registerTask('servefast', 'Serve the files (no watch), --test to run minimal tests. (~0s)', function () { + // Fastest serve command for freely slinging code (no tests will run by default). + grunt.registerTask('servefast', 'Serve the files (no watch), --test to run minimal tests. (~0s)', function servefast () { grunt.task.run(['connect:server']); if (grunt.option('test')) { @@ -27,7 +23,7 @@ module.exports = function(grunt) { }); // Fastest serve command when you're working on LESS - grunt.registerTask('serveless', 'Compile LESS and serve the files. pass --tests to run test. (~3s)', function () { + grunt.registerTask('serveless', 'Compile LESS and serve the files. pass --tests to run test. (~3s)', function serveless () { grunt.task.run(['distcss']); if (grunt.option('test')) { @@ -46,27 +42,30 @@ module.exports = function(grunt) { }); // Complies the less files into the -dev versions, does not overwrite the main css files. - grunt.registerTask('servedev', 'Serve the files with no "dist" build or tests. Optional --no-less to also disable compiling less into css.', function() { - if (! grunt.option('no-less') ) { + grunt.registerTask('servedev', 'Serve the files with no "dist" build or tests. Optional --no-less to also disable compiling less into css.', function servedev () { + if ( !grunt.option('no-less') ) { grunt.task.run(['distcssdev']); } grunt.task.run(['connect:server', 'watch:cssdev']); }); // same as `grunt serve` but tests default to being off - grunt.registerTask('servedist', 'Compile and serve everything, pass --test to run tests. (~7s)', function () { + grunt.registerTask('servedist', 'Compile and serve everything, pass --test to run tests. (~7s)', function servedist () { grunt.task.run(['dist']); - //start up the servers here so we can run tests if appropriate + // start up the servers here so we can run tests if appropriate grunt.task.run(['connect:server']); grunt.task.run(['connect:testServer']); if (grunt.option('test')) { - grunt.task.run(['browserify:commonjs','qunit:dist', 'watch:full']); + grunt.task.run(['browserify:commonjs', 'qunit:dist', 'watch:full']); } else { grunt.task.run(['watch:dist']); } }); - -}; \ No newline at end of file + // http://localhost:8013/reference/ + grunt.registerTask('serveregressiontests', 'Serve and watch regression test files', function serveregressiontests () { + grunt.task.run(['connect:regressionTestServer:keepalive']); + }); +}; diff --git a/reference/dist/css/fuelux.css b/reference/dist/css/fuelux.css new file mode 100644 index 000000000..473b187e4 --- /dev/null +++ b/reference/dist/css/fuelux.css @@ -0,0 +1,3156 @@ +/*! + * Fuel UX EDGE - Built 2017/06/05, 2:12:16 PM + * Previous release: v3.16.0 + * Copyright 2012-2017 ExactTarget + * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) + */ + +@charset "UTF-8"; +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +@font-face { + font-family: "fuelux"; + src: url("../fonts/fuelux.eot"); + src: url("../fonts/fuelux.eot?#iefix") format("embedded-opentype"), url(data:font-woff;base64,d09GRk9UVE8AAAUUAAsAAAAABuAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAegAAAIisWS2RkZGVE0AAALwAAAAGQAAABxvEtzhR0RFRgAAAwwAAAAdAAAAIAA4AARPUy8yAAADLAAAAEoAAABgL7lMbGNtYXAAAAN4AAAAPAAAAUrAGiK3aGVhZAAAA7QAAAAvAAAANgDSVuNoaGVhAAAD5AAAABwAAAAkBCkCA2htdHgAAAQAAAAAGgAAABoHmgL4bWF4cAAABBwAAAAGAAAABgALUABuYW1lAAAEJAAAAN0AAAF3kxoWmXBvc3QAAAUEAAAAEAAAACAAAwABeJw90M9rE0EUB/D30uzusLtuNTqiGIs/+gt6ifVHtgfRHqQHLTYumEsrpSSWRVNozNJc2t6S2K2bBATbS0tLe9jDUlJ6aS85hFT8H6SCFPwTZiCIbpnq6fMe8+Y7j0GIRgERlbdO9r1TBIwAwijvi/D+Ln4tuqqjq3e5erRHhetW7I/r/i90xfN4ndelOHztjgNcjMP3S3HQ41iIgX4WQ6AbrsJN6IUhGIYReApjMA6WM2c/SyQSgnuCYcF9wQPBQ8EjQVJgCkbEvudbA2AZK/gRV9DFVfyEHlaxBhpiJPlk7GX6TebdhxWDDfEb9JbaGezI9Laa74zTOyqTn9O7KosFtFdlg0ymfeE5e0X7VTZaogOqwXz+OOwM/pqbZz2vs+VwyGC/2YXwjsGWf4YBxrdfYZjhMT9M/veQwU7ZHD3MNianstmpyUb28KjROOox+OcrLnV1Nfysy0AQ6YD5Yjpf+jJxLB0Eza2WR0zFruSW5otEq7W2m3v7pJ2SFvKLubJNNPvAaVZa5ET27LXcxjzRkopVS29n9ki7Le0s+ItBmWjHE9KMnXasCjlRAs9f290gWskqpGczJNWWNnfW/WpAtB9Kq9Qs7M+SVErKb+bW7SrRgpmttGcRU64ES35xl2h/Ac9Ys4h4nGNgYGBkAILzccd+gelbXJ9hNABYswg7AAAAeJxjYGRgYOADYgkGEGBiYARCLiBmAfMYAAS4AD0AAAB4nGNgZmJgnMDAysDB6MOYxsDA4A6lvzJIMrQwMDAxsHIywIEAgskQkOaawuDwgOEBJ+OD/w8Y9Bj//v8LFGaEK1AAQkYALokNlwAAeJxjYGBgZoBgGQZGBhBwAfIYwXwWBg0gzQakGRmYGBgecP7/D1LwgAFEKzBC1QMBIxsDgjNCAQBlrAaweJxjYGRgYADiH2cX2sfz23xl4GZiAIHzt7g+w2lmBmbGv4x/gVwOBrA0AFSyC6wAeJxjYGRgYPzLwMCgx8QAAkA2IwMqYAIANwYCMQIAAAACAAADARUBhwGDAQ8AWAADAAMAXACnAAAAAFAAAAsAAHicbY49asNAEIU/2bJMsEmX1JsipYS0BAwuU/gAKdy7WAuDkPDagtzDkD5djpED5AQ5TZ7kKVJ4l9n59vHmB1jyQcJwEjLujSfMeTae8sTROJXn03jGgm/jTPdXziS9k7IcqwaeqOOD8ZRXcuNUnovxjEe+jDPpP+zpCTR632Hfh6ZXfpNUS2rYEfUNdd/sBBs6Ws5jjnIEHJ6CUnmt+N/sqnitsVJ4eSpe1KJrz5su1sH5onRrdx0p8Pkq92Uly82VtpIiJw7jCk7NhrFsQzwdutZVRXm78A9U7zY2AAAAeJxjYGZABowMaAAAAI4ABQ==) format("woff"), url("../fonts/fuelux.ttf") format("truetype"), url("../fonts/fuelux.svg#fuelux") format("svg"); + font-weight: normal; + font-style: normal; +} +.fuelux [class^="fueluxicon-"]:before, +.fuelux [class*=" fueluxicon-"]:before { + font-family: "fuelux" !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.fuelux .fueluxicon-loader-full:before { + content: "\e000"; +} +.fuelux .fueluxicon-loader-1:before { + content: "\e001"; +} +.fuelux .fueluxicon-loader-2:before { + content: "\e002"; +} +.fuelux .fueluxicon-loader-3:before { + content: "\e003"; +} +.fuelux .fueluxicon-loader-4:before { + content: "\e004"; +} +.fuelux .fueluxicon-loader-5:before { + content: "\e005"; +} +.fuelux .fueluxicon-loader-6:before { + content: "\e006"; +} +.fuelux .fueluxicon-loader-7:before { + content: "\e007"; +} +.fuelux .fueluxicon-loader-8:before { + content: "\e008"; +} +.fuelux .fueluxicon-bullet:before { + content: "\e009"; +} +.fuelux .radio-inline, +.fuelux .checkbox-inline { + padding-left: 0; +} +.fuelux .radio-inline.highlight, +.fuelux .checkbox-inline.highlight { + left: -8px; +} +.fuelux .radio-inline label, +.fuelux .checkbox-inline label { + margin-bottom: 0; +} +label.fuelux .radio:hover:before, +label.fuelux .checkbox:hover:before, +label.fuelux .radio-inline:hover:before, +label.fuelux .checkbox-inline:hover:before, +.input-label.fuelux .radio:hover:before, +.input-label.fuelux .checkbox:hover:before, +.input-label.fuelux .radio-inline:hover:before, +.input-label.fuelux .checkbox-inline:hover:before, +.fuelux .radio label:hover:before, +.fuelux .checkbox label:hover:before, +.fuelux .radio-inline label:hover:before, +.fuelux .checkbox-inline label:hover:before, +.fuelux .radio .input-label:hover:before, +.fuelux .checkbox .input-label:hover:before, +.fuelux .radio-inline .input-label:hover:before, +.fuelux .checkbox-inline .input-label:hover:before { + box-shadow: inset 0px 0px 2px 1px rgba(91, 157, 217, 0.7), 0px 0px 5px 0px rgba(91, 157, 217, 0.7); +} +.fuelux .radio label, +.fuelux .checkbox label, +.fuelux .radio-inline label, +.fuelux .checkbox-inline label, +.fuelux .radio .input-label, +.fuelux .checkbox .input-label, +.fuelux .radio-inline .input-label, +.fuelux .checkbox-inline .input-label, +label.fuelux .radio, +label.fuelux .checkbox, +label.fuelux .radio-inline, +label.fuelux .checkbox-inline { + cursor: pointer; + font-weight: normal; +} +.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .radio-inline.highlight input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .checkbox-inline.highlight input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .radio.highlight input[type="radio"]:not(.sr-only) ~ label, +.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only) ~ label, +.fuelux .radio-inline.highlight input[type="radio"]:not(.sr-only) ~ label, +.fuelux .checkbox-inline.highlight input[type="radio"]:not(.sr-only) ~ label { + padding: 4px; + border-radius: 4px; +} +.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, +.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, +.fuelux .radio-inline.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, +.fuelux .checkbox-inline.highlight input[type="checkbox"]:not(.sr-only):checked ~ label, +.fuelux .radio.highlight input[type="radio"]:not(.sr-only):checked ~ label, +.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only):checked ~ label, +.fuelux .radio-inline.highlight input[type="radio"]:not(.sr-only):checked ~ label, +.fuelux .checkbox-inline.highlight input[type="radio"]:not(.sr-only):checked ~ label { + background-color: #e6e6e6; + opacity: 1; + z-index: 0; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only), +.fuelux .checkbox input[type="checkbox"]:not(.sr-only), +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only), +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only), +.fuelux .radio input[type="radio"]:not(.sr-only), +.fuelux .checkbox input[type="radio"]:not(.sr-only), +.fuelux .radio-inline input[type="radio"]:not(.sr-only), +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only) { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + /* for keyboard tabbing */ +} +.fuelux .radio input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only) ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only) ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only) ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only) ~ label { + padding-left: 0; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only) ~ label:before, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only) ~ label:before, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only) ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only) ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only) ~ label:before, +.fuelux .checkbox input[type="radio"]:not(.sr-only) ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only) ~ label:before, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only) ~ label:before { + font-family: "Glyphicons Halflings"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + speak: none; + border: 1px solid #aaaaaa; + color: #FFF; + font-size: 9px; + width: 14px; + height: 14px; + padding: 0; + margin-top: 0; + margin-bottom: -2px; + cursor: pointer; + display: inline-block; + text-align: left; + z-index: 2; + content: ""; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label { + color: #333333; + color: #39b3d7; + cursor: pointer; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label:before, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label:before, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label:before, +.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label:before, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label:before, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label:before, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label:before, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label:before, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label:before, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label:before { + box-shadow: inset 0px 0px 2px 1px #5b9dd9, 0px 0px 5px 0px #5b9dd9; + outline: none; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):active ~ label:hover, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active ~ label:hover, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active ~ label:hover, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label:hover, +.fuelux .checkbox input[type="radio"]:not(.sr-only):active ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label:hover, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active ~ label:hover, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus ~ label:hover, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus ~ label:hover, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus ~ label:hover, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label:hover, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label:hover, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus ~ label:hover { + color: #333333; + cursor: pointer; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only):active:hover ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active:hover ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):active:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active:hover ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):checked:hover ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked:hover ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):checked:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked:hover ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .checkbox input[type="radio"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .checkbox input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:hover { + color: #333333; + cursor: pointer; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled] ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled] ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only)[disabled] ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled] ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled] ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled] ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only):disabled ~ label, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):disabled ~ label, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):disabled ~ label, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):disabled ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):disabled ~ label, +.fuelux .checkbox input[type="radio"]:not(.sr-only):disabled ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):disabled ~ label, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):disabled ~ label, +.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled="disabled"] ~ label:before, +.fuelux .radio input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .checkbox input[type="radio"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only)[disabled] ~ label:before, +.fuelux .radio input[type="checkbox"]:not(.sr-only):disabled ~ label:before, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):disabled ~ label:before, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):disabled ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):disabled ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):disabled ~ label:before, +.fuelux .checkbox input[type="radio"]:not(.sr-only):disabled ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):disabled ~ label:before, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):disabled ~ label:before { + color: #333333; + opacity: .65; + cursor: not-allowed !important; + outline: none; + box-shadow: none; +} +.fuelux .radio input[type="checkbox"]:not(.sr-only):checked ~ label:before, +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked ~ label:before, +.fuelux .radio-inline input[type="checkbox"]:not(.sr-only):checked ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):checked ~ label:before, +.fuelux .checkbox input[type="radio"]:not(.sr-only):checked ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked ~ label:before, +.fuelux .checkbox-inline input[type="radio"]:not(.sr-only):checked ~ label:before { + background: #39b3d7; + border-color: #39b3d7; +} +.fuelux .radio.highlight:before, +.fuelux .checkbox.highlight:before, +.fuelux .radio-inline.highlight:before, +.fuelux .checkbox-inline.highlight:before { + left: 4px; + top: 7px; +} +.fuelux .radio.highlight input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only) ~ label, +.fuelux .radio.highlight input[type="radio"]:not(.sr-only) ~ label, +.fuelux .checkbox.highlight input[type="radio"]:not(.sr-only) ~ label { + left: -8px; + position: relative; +} +.fuelux .radio-inline, +.fuelux .checkbox-inline { + padding-left: 0; +} +.fuelux .radio-inline:before, +.fuelux .checkbox-inline:before { + left: 0; + top: 3px; +} +.fuelux .checkbox.multiline, +.fuelux .radio.multiline { + float: left; + margin-left: 15px; +} +.fuelux .checkbox.multiline ~ .control-label, +.fuelux .radio.multiline ~ .control-label { + float: left; + width: 80%; + margin-left: 10px; + text-align: left; +} +.fuelux .checkbox.multiline ~ .control-label > label, +.fuelux .radio.multiline ~ .control-label > label { + font-weight: normal; + cursor: pointer; +} +.fuelux .form-group.required .control-label:before { + content: '*'; + color: #a94442; + margin-right: 5px; +} +.fuelux .checkbox { + /* for keyboard tabbing */ +} +.fuelux .checkbox.highlight + .checkbox.highlight { + margin-top: -5px; +} +.fuelux .checkbox.highlight label.checkbox-custom { + padding: 4px 4px 4px 24px; +} +.fuelux .checkbox.highlight.checked label.checkbox-custom, +.fuelux .checkbox.highlight label.checked.checkbox-custom { + background: #e6e6e6; + border-radius: 4px; +} +.fuelux .checkbox input[type="checkbox"]:focus + .checkbox-label, +.fuelux .checkbox input[type="checkbox"]:hover + .checkbox-label, +.fuelux .checkbox .checkbox-label:hover { + color: #999999; +} +.fuelux .checkbox input[type="checkbox"]:disabled:focus + .checkbox-label, +.fuelux .checkbox input[type="checkbox"]:disabled:hover + .checkbox-label, +.fuelux .checkbox.disabled label:hover { + color: inherit; +} +.fuelux .form-horizontal .checkbox-inline { + padding-top: 0; +} +.fuelux .input-group-addon.checkbox-custom { + margin-bottom: 0; + cursor: pointer; + padding-left: 24px; +} +.fuelux .input-group-addon.checkbox-custom input[type=checkbox] { + position: absolute; + margin-left: -24px; +} +.fuelux .input-group-addon.checkbox-custom:before { + left: 11px; + top: 9px; +} +.fuelux .checkbox-custom { + position: relative; + /* for keyboard tabbing */ + /* for keyboard tabbing */ + /* for keyboard tabbing */ +} +.fuelux .checkbox-custom:before { + font-family: "Glyphicons Halflings" !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + border: 1px solid #aaaaaa; + border-radius: 4px; + color: #FFF; + content: " "; + font-size: 9px; + height: 14px; + left: 0px; + padding: 1px 0 0 1px; + position: absolute; + top: 3px; + width: 14px; +} +.fuelux .checkbox-custom:active:before, +.fuelux .checkbox-custom:focus:before { + color: #5B9DD9; + cursor: pointer; + box-shadow: inset 0px 0px 2px 1px #5B9DD9, 0px 0px 5px 0px #5B9DD9; +} +.fuelux .checkbox-custom.highlight:before { + left: 4px; + top: 6px; +} +.fuelux .checkbox-custom.checked:before { + background: #39b3d7; + border-color: #39b3d7; + content: "\e013"; +} +.fuelux .checkbox-custom.disabled { + cursor: not-allowed; + opacity: .65; +} +.fuelux .checkbox-custom.disabled:before { + cursor: not-allowed; + opacity: .65; +} +.fuelux .checkbox-custom.checkbox-inline:before { + left: 0; + top: 3px; +} +.fuelux .checkbox-custom.checkbox-inline.highlight { + padding: 4px 4px 4px 24px; + left: -4px; +} +.fuelux .checkbox-custom.checkbox-inline.highlight:before { + left: 4px; + top: 7px; +} +.fuelux .checkbox-custom.checkbox-inline.highlight.checked { + background: #e6e6e6; + border-radius: 4px; +} +.fuelux .checkbox-custom input[type="checkbox"]:focus + .checkbox-label { + color: #999999; +} +.fuelux .checkbox-custom input[type="checkbox"] + .checkbox-label.truncate { + display: inherit; + line-height: 14px; + margin-top: 3px; + margin-bottom: -3px; +} +.fuelux label.checkbox-custom.checkbox-inline { + padding-left: 20px; +} +.fuelux .checkbox input[type="checkbox"]:not(.sr-only) ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only) ~ label:before { + border-radius: 4px; + z-index: 1; +} +.fuelux .checkbox input[type="checkbox"]:not(.sr-only):checked ~ label:before, +.fuelux .checkbox-inline input[type="checkbox"]:not(.sr-only):checked ~ label:before { + color: white; + content: "\e013"; + line-height: 1em; + padding-left: 1px; + font-size: 8px; + padding-top: 2px; +} +.fuelux .checkbox.hightlight + .checkbox-inline.highlight, +.fuelux .checkbox-inline.hightlight + .checkbox-inline.highlight { + margin-left: -14px; +} +.fuelux .checkbox.hightlight + .checkbox-inline.highlight.checkbox-custom, +.fuelux .checkbox-inline.hightlight + .checkbox-inline.highlight.checkbox-custom { + margin-left: 0px; +} +.fuelux .checkbox.highlight input[type="checkbox"]:not(.sr-only) ~ label { + left: -4px; +} +.fuelux .radio { + /* for keyboard tabbing */ +} +.fuelux .radio.highlight { + padding: 4px; + margin: 0 0 5px 0; +} +.fuelux .radio.highlight + .radio.highlight { + margin-top: -9px; +} +.fuelux .radio.highlight label.radio-custom { + left: -8px; + padding: 4px 4px 4px 24px; + border-radius: 4px; +} +.fuelux .radio.highlight label.radio-custom:before { + left: 5px; + top: 7px; +} +.fuelux .radio.highlight label.radio-custom:after { + left: 9px; + top: 11px; +} +.fuelux .radio.highlight.checked label.radio-custom, +.fuelux .radio.highlight label.radio-custom.checked { + background: #e6e6e6; + border-radius: 4px; +} +.fuelux .radio input[type="radio"]:focus + .radio-label, +.fuelux .radio input[type="radio"]:hover + .radio-label, +.fuelux .radio .radio-label:hover { + color: #999999; +} +.fuelux .form-horizontal .radio-inline { + padding-top: 0; +} +.fuelux .input-group-addon.radio-custom.radio-inline:before { + left: 11px; + top: 9px; +} +.fuelux .input-group-addon.radio-custom.radio-inline:after { + left: 15px; + top: 13px; +} +.fuelux .radio-custom { + position: relative; + /* for keyboard tabbing */ + /* for keyboard tabbing */ +} +.fuelux .radio-custom .highlight { + padding: 4px; + margin: 0 0 5px 0; +} +.fuelux .radio-custom .highlight.checked { + background: #e6e6e6; + border-radius: 4px; +} +.fuelux .radio-custom:after { + background: transparent; + border-radius: 6px; + content: " "; + height: 6px; + left: 4px; + position: absolute; + top: 7px; + width: 6px; +} +.fuelux .radio-custom:before { + border: 1px solid #aaaaaa; + border-radius: 14px; + content: " "; + height: 14px; + left: 0px; + position: absolute; + top: 3px; + width: 14px; +} +.fuelux .radio-custom.checked:after { + background: #FFF; +} +.fuelux .radio-custom.checked:before { + background: #39b3d7; + border-color: #39b3d7; +} +.fuelux .radio-custom.disabled { + cursor: not-allowed; + opacity: .65; +} +.fuelux .radio-custom.disabled:after { + cursor: not-allowed; +} +.fuelux .radio-custom.disabled:before { + cursor: not-allowed; + opacity: .65; +} +.fuelux .radio-custom.radio-inline:after { + left: 4px; + top: 7px; +} +.fuelux .radio-custom.radio-inline:before { + left: 0; + top: 3px; +} +.fuelux .radio-custom.radio-inline.highlight { + left: -3px; + padding: 4px 4px 4px 24px; +} +.fuelux .radio-custom.radio-inline.highlight:after { + left: 8px; + top: 11px; +} +.fuelux .radio-custom.radio-inline.highlight:before { + left: 4px; + top: 7px; +} +.fuelux .radio-custom.radio-inline.highlight.checked { + background: #e6e6e6; + border-radius: 4px; +} +.fuelux .radio-custom input[type="radio"]:focus + .radio-label { + color: #999999; +} +.fuelux .radio-custom input[type="radio"] + .radio-label.truncate { + display: inherit; + line-height: 14px; + margin-top: 3px; + margin-bottom: -3px; +} +.fuelux label.radio-custom.radio-inline { + padding-left: 20px; +} +.fuelux .radio input[type="radio"]:not(.sr-only), +.fuelux .radio-inline input[type="radio"]:not(.sr-only) { + /* for keyboard tabbing */ + /* for keyboard tabbing */ +} +.fuelux .radio input[type="radio"]:not(.sr-only) ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only) ~ label:before { + border-radius: 8px; + z-index: 1; +} +.fuelux .radio input[type="radio"]:not(.sr-only):checked ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked ~ label:before { + background: #39b3d7; + /* Old browsers */ + background: -moz-radial-gradient(center, ellipse cover, #FFF 0%, #FFF 40%, #39b3d7 41%, #39b3d7 100%); + /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #FFF), color-stop(40%, #FFF), color-stop(41%, #39b3d7), color-stop(100%, #39b3d7)); + /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, #FFF 0%, #FFF 40%, #39b3d7 41%, #39b3d7 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, #FFF 0%, #FFF 40%, #39b3d7 41%, #39b3d7 100%); + /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, #FFF 0%, #FFF 40%, #39b3d7 41%, #39b3d7 100%); + /* IE10+ */ + background: radial-gradient(ellipse at center, #FFF 0%, #FFF 40%, #39b3d7 41%, #39b3d7 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF', endColorstr='#39b3d7', GradientType=1); + /* IE6-9 fallback on horizontal gradient */ +} +.fuelux .radio input[type="radio"]:not(.sr-only):hover ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):hover ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):active ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):focus ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus ~ label:before { + box-shadow: inset 0px 0px 2px 1px #5b9dd9, 0px 0px 5px 0px #5b9dd9; +} +.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:before, +.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label:before, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:before { + outline-color: none; + outline-offset: 0; + outline-style: none; + outline-width: 0; + cursor: default; +} +.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label, +.fuelux .radio input[type="radio"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):active:hover ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):focus:hover ~ label:hover, +.fuelux .radio input[type="radio"]:not(.sr-only):checked:hover ~ label:hover, +.fuelux .radio-inline input[type="radio"]:not(.sr-only):checked:hover ~ label:hover { + color: #333333; + cursor: default; +} +.fuelux .combobox.disabled .input-group-btn { + cursor: not-allowed; +} +.fuelux .combobox input::-ms-clear { + display: none; +} +.fuelux .combobox .dropdown-menu > li.selected > a { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.fuelux .combobox .dropdown-menu > li > em { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.fuelux .datepicker-calendar { + padding: 16px 16px 0; + min-height: 262px; +} +.fuelux .datepicker-calendar button { + border: 0; + padding: 0; + background-color: transparent; +} +.fuelux .datepicker-calendar-days { + height: 182px; + margin: 10px 0 12px; + width: 100%; + /* for spacing */ +} +.fuelux .datepicker-calendar-days thead { + border-bottom: 1px solid #cccccc; +} +.fuelux .datepicker-calendar-days tbody:before { + color: transparent; + content: "\200C"; + display: block; + line-height: 3px; + visibility: hidden; +} +.fuelux .datepicker-calendar-days td, +.fuelux .datepicker-calendar-days th { + font-size: 14px; + height: 32px; + text-align: center; + vertical-align: middle; + width: 14.29%; +} +.fuelux .datepicker-calendar-days td b, +.fuelux .datepicker-calendar-days td button { + color: #333333; + display: inline-block; + font-weight: normal; + height: 30px; + text-decoration: none; + width: 30px; +} +.fuelux .datepicker-calendar-days td b { + line-height: 30px; +} +.fuelux .datepicker-calendar-days td span { + display: block; + border-radius: 4px; +} +.fuelux .datepicker-calendar-days td span:hover { + background: #f5f5f5; + text-decoration: none; +} +.fuelux .datepicker-calendar-days td.current-day span { + border: 1px solid #333333; +} +.fuelux .datepicker-calendar-days td.last-month, +.fuelux .datepicker-calendar-days td.next-month { + background: #d5d5d5; +} +.fuelux .datepicker-calendar-days td.last-month.first, +.fuelux .datepicker-calendar-days td.next-month.first { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + padding-left: 1px; +} +.fuelux .datepicker-calendar-days td.last-month.last, +.fuelux .datepicker-calendar-days td.next-month.last { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + padding-right: 1px; +} +.fuelux .datepicker-calendar-days td.past b, +.fuelux .datepicker-calendar-days td.past button { + color: #999999; +} +.fuelux .datepicker-calendar-days td.restricted b, +.fuelux .datepicker-calendar-days td.restricted button { + cursor: no-drop; + position: relative; +} +.fuelux .datepicker-calendar-days td.restricted b:before, +.fuelux .datepicker-calendar-days td.restricted button:before { + border-top: 1px solid #e9322d; + bottom: 0; + content: " "; + display: block; + left: 5px; + position: absolute; + right: 5px; + top: 50%; +} +.fuelux .datepicker-calendar-days td.restricted b:hover, +.fuelux .datepicker-calendar-days td.restricted button:hover { + background: none; +} +.fuelux .datepicker-calendar-days td.selected span { + background: #eeeeee; +} +.fuelux .datepicker-calendar-days td.selected span:hover { + background: #dddddd; +} +.fuelux .datepicker-calendar-days td.selected b, +.fuelux .datepicker-calendar-days td.selected button { + color: #878787; +} +.fuelux .datepicker-calendar-days td.selected.current-day { + box-shadow: 0 0 0 1px #FFF offset; +} +.fuelux .datepicker-calendar-days td.selected.current-day b, +.fuelux .datepicker-calendar-days td.selected.current-day button { + color: #222222; +} +.fuelux .datepicker-calendar-days td.selected.current-day span:hover b, +.fuelux .datepicker-calendar-days td.selected.current-day span:hover button { + border-color: #0f5f9f; +} +.fuelux .datepicker-calendar-days th { + font-weight: bold; + height: 22px; + vertical-align: top; +} +.fuelux .datepicker-calendar-header { + *zoom: 1; +} +.fuelux .datepicker-calendar-header:before, +.fuelux .datepicker-calendar-header:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .datepicker-calendar-header:after { + clear: both; +} +.fuelux .datepicker-calendar-header button { + border: 0; + padding: 0; + background-color: transparent; +} +.fuelux .datepicker-calendar-header .title { + margin: 0 auto; + text-align: center; + display: block; + width: 174px; + color: #222222; + font-size: 20px; + line-height: 30px; + text-decoration: underline; + vertical-align: middle; +} +.fuelux .datepicker-calendar-header .title:hover { + color: #0f5f9f; + text-decoration: underline; +} +.fuelux .datepicker-calendar-header .title.disabled { + cursor: default; + pointer-events: none; + text-decoration: none; +} +.fuelux .datepicker-calendar-header .title .month { + display: inline; + margin: 0; + padding: 0; +} +.fuelux .datepicker-calendar-header .title .month span { + display: none; +} +.fuelux .datepicker-calendar-header .title .month span.current { + display: inline; +} +.fuelux .datepicker-calendar-header .next, +.fuelux .datepicker-calendar-header .prev { + background: #666666; + background-clip: padding-box; + border-radius: 30px; + cursor: pointer; + float: left; + height: 30px; + text-align: center; + width: 30px; +} +.fuelux .datepicker-calendar-header .next span.glyphicon, +.fuelux .datepicker-calendar-header .prev span.glyphicon { + color: #FFF; + font-size: 16px; + line-height: 30px; +} +.fuelux .datepicker-calendar-header .next:hover, +.fuelux .datepicker-calendar-header .prev:hover { + background: #0f5f9f; +} +.fuelux .datepicker-calendar-header .next { + float: right; +} +.fuelux .datepicker-calendar-header .next span.glyphicon { + line-height: 28px; +} +.fuelux .datepicker-calendar-footer { + background: #e6e6e6; + background-clip: padding-box; + border-radius: 0 0 4px 4px; + border-top: 1px solid #cccccc; + height: 30px; + margin: 0 -16px; + padding: 4px 14px; +} +.fuelux .datepicker-calendar-footer .datepicker-today { + color: #333333; + font-size: 14px; + text-decoration: underline; +} +.fuelux .datepicker-calendar-footer .datepicker-today:hover { + color: #1b75bb; + text-decoration: underline; +} +.fuelux .datepicker-calendar-footer .datepicker-today.disabled { + color: #878787; + cursor: default; + pointer-events: none; +} +.fuelux .datepicker-calendar-footer .datepicker-today.disabled:hover { + color: #878787; +} +.fuelux .datepicker-calendar-wrapper { + border: 1px solid #757575; + min-height: 20px; + padding: 0; + width: 300px; +} +.fuelux .datepicker-wheels { + display: none; +} +.fuelux .datepicker-wheels ul button { + border: 0; + padding: 0; + background-color: transparent; +} +.fuelux .datepicker-wheels-footer { + background: #e6e6e6; + border-radius: 0 0 4px 4px; + border-top: 1px solid #cccccc; + clear: both; +} +.fuelux .datepicker-wheels-footer .datepicker-wheels-back { + display: block; + color: #222222; + float: left; + line-height: 22px; + border: 0; + background-color: transparent; +} +.fuelux .datepicker-wheels-footer .datepicker-wheels-back:hover { + color: #1b75bb; +} +.fuelux .datepicker-wheels-footer .datepicker-wheels-select { + float: right; + background-color: transparent; + color: #5B9DD9; +} +.fuelux .datepicker-wheels-footer .datepicker-wheels-select:hover { + color: #1b75bb; +} +.fuelux .datepicker-wheels-month, +.fuelux .datepicker-wheels-year { + float: left; + width: 50%; +} +.fuelux .datepicker-wheels-month ul, +.fuelux .datepicker-wheels-year ul { + height: 217px; + list-style-type: none; + margin: 0; + overflow: auto; + padding: 0; + text-align: center; +} +.fuelux .datepicker-wheels-month ul li, +.fuelux .datepicker-wheels-year ul li { + margin: 4px 0; +} +.fuelux .datepicker-wheels-month ul li button, +.fuelux .datepicker-wheels-year ul li button { + width: 100%; + text-align: center; + color: #454545; + display: block; + font-size: 16px; + line-height: 24px; + text-decoration: none; +} +.fuelux .datepicker-wheels-month ul li button:hover, +.fuelux .datepicker-wheels-year ul li button:hover { + background: #d9edf7; + text-decoration: none; +} +.fuelux .datepicker-wheels-month ul li.selected button, +.fuelux .datepicker-wheels-year ul li.selected button { + background: #1b75bb; + color: #FFF; +} +.fuelux .datepicker-wheels-month ul li.selected button:hover, +.fuelux .datepicker-wheels-year ul li.selected button:hover { + background: #0f5f9f; +} +.fuelux .datepicker-wheels-month .header, +.fuelux .datepicker-wheels-year .header { + background: #e6e6e6; + background-clip: padding-box; + border-bottom: 1px solid #cccccc; + border-radius: 4px 0 0 0; + color: #222222; + font-size: 20px; + font-weight: bold; + line-height: 30px; + margin-top: 0; + margin-bottom: 0; + text-align: center; +} +.fuelux .datepicker-wheels-month.full, +.fuelux .datepicker-wheels-year.full { + border-left: 0; + width: 100%; +} +.fuelux .datepicker-wheels-month.full .header, +.fuelux .datepicker-wheels-year.full .header { + border-radius: 4px 4px 0 0; +} +.fuelux .datepicker-wheels-year { + border-left: 1px solid #cccccc; + float: right; +} +.fuelux .datepicker-wheels-year .header { + border-radius: 0 4px 0 0; +} +.fuelux .datepicker input::-ms-clear { + display: none; +} +.fuelux .infinitescroll { + overflow-y: auto; +} +.fuelux .infinitescroll .infinitescroll-end { + clear: both; + font-style: italic; + padding: 6px; + text-align: center; +} +.fuelux .infinitescroll .infinitescroll-load { + clear: both; + padding: 6px; +} +.fuelux .infinitescroll .infinitescroll-load button { + padding: 5px 12px; + width: 100%; +} +.fuelux .infinitescroll .infinitescroll-load .loader { + font-size: 32px; + height: 32px; + margin: 0 auto; + width: 32px; +} +.fuelux .dropUp, +.fuelux .dropup { + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); +} +.fuelux .loader { + height: 64px; + font-size: 64px; + position: relative; + width: 64px; + background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjRweCIgaGVpZ2h0PSI2NHB4IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGcgd2lkdGg9IjU0cHgiIGhlaWdodD0iNTRweCIgdmlld0JveD0iNSA1IDU0IDU0IiBpZD0ibG9hZGVyIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS4wMDAwMDAsIDUuMDAwMDAwKSIgZmlsbD0iIzE1ODllZSI+PGcgaWQ9InNwaW5uZXItbWVkaXVtIj48ZyBpZD0iT3ZhbC0zNSI+PGNpcmNsZSBpZD0iVG9wIiBjeD0iMjciIGN5PSI2IiByPSI1Ij48L2NpcmNsZT48Y2lyY2xlIGlkPSJUb3BSaWdodCIgY3g9IjQ4IiBjeT0iMTciIHI9IjUiPjwvY2lyY2xlPjxjaXJjbGUgaWQ9IkJvdHRvbVJpZ2h0IiBjeD0iNDgiIGN5PSIzNiIgcj0iNSI+PC9jaXJjbGU+PGNpcmNsZSBpZD0iQm90dG9tIiBjeD0iMjciIGN5PSI0OCIgcj0iNSI+PC9jaXJjbGU+PGNpcmNsZSBpZD0iQm90dG9tTGVmdCIgY3g9IjYiIGN5PSIzNiIgcj0iNSI+PC9jaXJjbGU+PGNpcmNsZSBpZD0iVG9wTGVmdCIgY3g9IjYiIGN5PSIxNyIgcj0iNSI+PC9jaXJjbGU+PC9nPjwvZz48L2c+PGFuaW1hdGVNb3Rpb24geGxpbms6aHJlZj0iI1RvcCIgcGF0aD0iTSAwIDAgViAtNSBaIiBkdXI9Ii4yNXMiIGJlZ2luPSIwczsgVG9wTGVmdEFuaW0uZW5kIiBpZD0iVG9wQW5pbSIgLz48YW5pbWF0ZU1vdGlvbiB4bGluazpocmVmPSIjVG9wUmlnaHQiIHBhdGg9Ik0gMCAwIEwgNSAtNSBaIiBkdXI9Ii4yNXMiIGJlZ2luPSJUb3BBbmltLmVuZCIgaWQ9IlRvcFJpZ2h0QW5pbSIgLz48YW5pbWF0ZU1vdGlvbiB4bGluazpocmVmPSIjQm90dG9tUmlnaHQiIHBhdGg9Ik0gMCAwIEwgNSA1IFoiIGR1cj0iLjI1cyIgYmVnaW49IlRvcFJpZ2h0QW5pbS5lbmQiIGlkPSJCb3R0b21SaWdodEFuaW0iIC8+PGFuaW1hdGVNb3Rpb24geGxpbms6aHJlZj0iI0JvdHRvbSIgcGF0aD0iTSAwIDAgViA1IFoiIGR1cj0iLjI1cyIgYmVnaW49IkJvdHRvbVJpZ2h0QW5pbS5lbmQiIGlkPSJCb3R0b21BbmltIiAvPjxhbmltYXRlTW90aW9uIHhsaW5rOmhyZWY9IiNCb3R0b21MZWZ0IiBwYXRoPSJNIDAgMCBMIC01IDUgWiIgZHVyPSIuMjVzIiBiZWdpbj0iQm90dG9tQW5pbS5lbmQiIGlkPSJCb3R0b21MZWZ0QW5pbSIgLz48YW5pbWF0ZU1vdGlvbiB4bGluazpocmVmPSIjVG9wTGVmdCIgcGF0aD0iTSAwIDAgTCAtNSAtNSBaIiBkdXI9Ii4yNXMiIGJlZ2luPSJCb3R0b21MZWZ0QW5pbS5lbmQiIGlkPSJUb3BMZWZ0QW5pbSIgLz48L3N2Zz4="); + background-size: contain; +} +.fuelux .pillbox { + border: 1px solid #bbbbbb; + border-radius: 4px; + cursor: text; + padding: 3px; +} +.fuelux .pillbox[data-readonly] { + border: 1px solid transparent; +} +.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap { + display: inline-block; +} +.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap.truncated { + display: none; +} +.fuelux .pillbox[data-readonly].truncate .pillbox-more { + display: inline; +} +.fuelux .pillbox[data-readonly] .pill span.glyphicon-close { + display: none; +} +.fuelux .pillbox[data-readonly] .pillbox-add-item { + display: none; +} +.fuelux .pillbox[data-readonly] .pillbox-input-wrap { + display: none; +} +.fuelux .pillbox[data-readonly] .pillbox-input-wrap button.dropdown-toggle { + display: none; +} +.fuelux .pillbox.pills-editable .pill-group .pill span { + cursor: text; +} +.fuelux .pillbox.pills-editable .pill-group .pill span.glyphicon-close { + cursor: pointer; +} +.fuelux .pillbox > .pill-group { + margin: 0; + padding: 0; + width: 100%; +} +.fuelux .pillbox > .pill-group > .pill { + margin: 2px; + cursor: default; + float: left; + word-break: break-all; +} +.fuelux .pillbox > .pill-group > .pill.pillbox-highlight { + outline: 1px dotted #999999; +} +.fuelux .pillbox > .pill-group > .pill.truncated { + display: none; +} +.fuelux .pillbox > .pill-group > .pill .pillbox-list-edit { + border: none; + color: #333333; + font-weight: normal; + border-radius: 2px; +} +.fuelux .pillbox > .pill-group > .pill .pillbox-list-edit:focus { + outline: none; + border: none; +} +.fuelux .pillbox > .pill-group > .pill .glyphicon-close { + cursor: pointer; + top: -1px; + left: 2px; +} +.fuelux .pillbox > .pill-group > .pill .glyphicon-close:before { + content: " \00d7"; +} +.fuelux .pillbox > .pill-group > .pill .glyphicon-close:hover { + opacity: .4; +} +.fuelux .pillbox .pillbox-input-wrap { + position: relative; + margin: 4px 0 3px 3px; + float: left; +} +.fuelux .pillbox .pillbox-input-wrap.editing { + border: 1px solid #cccccc; + border-radius: 4px; + margin: 2px 0 3px 3px; +} +.fuelux .pillbox .pillbox-input-wrap.editing input.pillbox-add-item { + border-radius: 4px; + color: #333333; + height: 32px; +} +.fuelux .pillbox .pillbox-add-item { + border: none; + box-shadow: none; +} +.fuelux .pillbox .pillbox-add-item:focus { + outline: none; + border: none; +} +.fuelux .pillbox .pillbox-more { + cursor: pointer; + display: none; + line-height: 30px; +} +.fuelux .pillbox .suggest { + max-height: 166px; + overflow-y: auto; +} +.fuelux .pillbox .suggest > li { + white-space: nowrap; + cursor: pointer; + padding: 3px 20px; +} +.fuelux .pillbox .suggest > li.pillbox-suggest-sel { + background-color: #eeeeee; +} +.fuelux .pillbox .suggest > li:hover { + background-color: #eeeeee; +} +.fuelux .pillbox input::-ms-clear { + display: none; +} +.fuelux .placard { + display: inline-block; + position: relative; +} +.fuelux .placard[data-ellipsis="true"].showing div.placard-field, +.fuelux .placard[data-ellipsis="true"].showing input.placard-field { + overflow: auto; + text-overflow: clip; + white-space: normal; +} +.fuelux .placard[data-ellipsis="true"] div.placard-field, +.fuelux .placard[data-ellipsis="true"] input.placard-field { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.fuelux .placard[data-ellipsis="true"] div.placard-field::-ms-clear, +.fuelux .placard[data-ellipsis="true"] input.placard-field::-ms-clear { + display: none; +} +.fuelux .placard[data-ellipsis="true"] div.placard-field[data-textarea] { + overflow: auto; + text-overflow: clip; + white-space: normal; +} +.fuelux .placard[data-ellipsis="true"] textarea.placard-field[readonly] { + overflow: hidden; +} +.fuelux .placard.showing .placard-footer, +.fuelux .placard.showing .placard-header, +.fuelux .placard.showing .placard-popup { + display: block; + z-index: 1; +} +.fuelux .placard.showing div.placard-field, +.fuelux .placard.showing input.placard-field, +.fuelux .placard.showing textarea.placard-field { + background: #FFF; + border: 1px solid #cccccc; + box-shadow: none; + position: relative; + z-index: 1; +} +.fuelux .placard div.placard-field, +.fuelux .placard input.placard-field, +.fuelux .placard textarea.placard-field { + resize: none; +} +.fuelux .placard div.placard-field[readonly], +.fuelux .placard input.placard-field[readonly], +.fuelux .placard textarea.placard-field[readonly] { + background: #FFF; + cursor: auto; +} +.fuelux .placard div.placard-field[readonly].glass, +.fuelux .placard input.placard-field[readonly].glass, +.fuelux .placard textarea.placard-field[readonly].glass { + background: none; +} +.fuelux .placard div.placard-field[readonly].glass:hover, +.fuelux .placard input.placard-field[readonly].glass:hover, +.fuelux .placard textarea.placard-field[readonly].glass:hover { + background: #d9edf7; + cursor: pointer; +} +.fuelux .placard div.placard-field:focus, +.fuelux .placard input.placard-field:focus, +.fuelux .placard textarea.placard-field:focus { + border: 1px solid #cccccc; + box-shadow: none; +} +.fuelux .placard div.placard-field { + width: 168px; + overflow: auto; +} +.fuelux .placard div.placard-field[data-textarea] { + height: 54px; +} +.fuelux .placard-cancel { + font-size: 12px; + margin-right: 4px; + vertical-align: middle; +} +.fuelux .placard-footer, +.fuelux .placard-header { + display: none; + left: 0; + line-height: 1; + position: absolute; + right: 0; +} +.fuelux .placard-footer { + padding: 4px 0 8px 0; + text-align: right; + top: 100%; +} +.fuelux .placard-header { + bottom: 100%; + padding: 8px 0 4px 0; +} +.fuelux .placard-header h1, +.fuelux .placard-header h2, +.fuelux .placard-header h3, +.fuelux .placard-header h4, +.fuelux .placard-header h5, +.fuelux .placard-header h6 { + margin: 0; +} +.fuelux .placard-popup { + background: #d9edf7; + background-clip: padding-box; + border: 1px solid #cccccc; + border-radius: 4px; + bottom: -8px; + box-shadow: 0 0 0 1px #FFF inset; + display: none; + left: -8px; + position: absolute; + right: -8px; + top: -8px; +} +.fuelux .placard .glass { + background: transparent; + border: 1px solid #FFF; + box-shadow: none; +} +.fuelux .placard .glass:hover { + background: #d9edf7; + border-color: #5B9DD9; + cursor: pointer; +} +.fuelux .placard .glass:hover[disabled] { + background: transparent; + border-color: #FFF; + cursor: not-allowed; +} +.fuelux .placard .glass:focus { + background: #FFF; + border-color: #5B9DD9; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.75), 0 0 8px rgba(91, 157, 217, 0.6); + cursor: auto; +} +.fuelux .placard .glass:focus[disabled] { + background: transparent; + border-color: #FFF; + cursor: not-allowed; +} +.fuelux .placard .glass[disabled] { + cursor: not-allowed; +} +.fuelux .repeater { + border: 1px solid #dddddd; + border-radius: 4px; + /* + * reinforce spacing around control buttons + */ +} +.fuelux .repeater-canvas.scrolling { + bottom: 0; + left: 0; + overflow-y: auto; + position: absolute; + right: 0; + top: 0; +} +.fuelux .repeater-header, +.fuelux .repeater-footer { + background: #fafafa; + min-height: 50px; + padding: 8px; + *zoom: 1; +} +.fuelux .repeater-header:before, +.fuelux .repeater-footer:before, +.fuelux .repeater-header:after, +.fuelux .repeater-footer:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .repeater-header:after, +.fuelux .repeater-footer:after { + clear: both; +} +.fuelux .repeater-header-left, +.fuelux .repeater-footer-left { + float: left; +} +.fuelux .repeater-header-right, +.fuelux .repeater-footer-right { + float: right; +} +@media (max-width: 625px) { + .fuelux .repeater-header-left, + .fuelux .repeater-footer-left, + .fuelux .repeater-header-right, + .fuelux .repeater-footer-right { + float: none; + *zoom: 1; + } + .fuelux .repeater-header-left:before, + .fuelux .repeater-footer-left:before, + .fuelux .repeater-header-right:before, + .fuelux .repeater-footer-right:before, + .fuelux .repeater-header-left:after, + .fuelux .repeater-footer-left:after, + .fuelux .repeater-header-right:after, + .fuelux .repeater-footer-right:after { + display: table; + content: ""; + line-height: 0; + } + .fuelux .repeater-header-left:after, + .fuelux .repeater-footer-left:after, + .fuelux .repeater-header-right:after, + .fuelux .repeater-footer-right:after { + clear: both; + } + .fuelux .repeater-header-left, + .fuelux .repeater-footer-left { + margin-bottom: 8px; + } +} +.fuelux .repeater-header { + border-bottom: 1px solid #dddddd; + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.fuelux .repeater-footer { + border-top: 1px solid #dddddd; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.fuelux .repeater-loader { + display: none; + left: 50%; + position: absolute; + margin: -32px 0 0 -32px; + top: 50%; +} +.fuelux .repeater-viewport { + min-height: 80px; + position: relative; +} +.fuelux .repeater-pagination label { + font-weight: normal; +} +.fuelux .repeater-pagination .repeater-primaryPaging { + display: none; + vertical-align: middle; + width: 116px; +} +.fuelux .repeater-pagination .repeater-primaryPaging.active { + display: inline-block; +} +.fuelux .repeater-pagination .repeater-primaryPaging ul.dropdown-menu { + min-width: 116px; +} +.fuelux .repeater-pagination .repeater-secondaryPaging { + display: none; + width: 82px; +} +.fuelux .repeater-pagination .repeater-secondaryPaging.active { + display: inline-block; +} +.fuelux .repeater-search { + float: left; + width: 200px; +} +.fuelux .repeater-title { + display: block; + float: left; + line-height: 34px; + margin-right: 10px; +} +.fuelux .repeater-itemization .selectlist, +.fuelux .repeater-filters, +.fuelux .repeater-secondaryPaging, +.fuelux .repeater-primaryPaging, +.fuelux .repeater-next, +.fuelux .repeater-prev { + margin: auto 0.3em; +} +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable:hover td, +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable.hovered td { + background: #fff; +} +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas .repeater-list .repeater-select-checkbox { + cursor: not-allowed; +} +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas .repeater-list .repeater-list-wrapper table thead tr th.sortable, +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas .repeater-list .repeater-list-wrapper table thead tr th .repeater-list-heading.sortable { + background: #fafafa; + cursor: auto; +} +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas .repeater-list .repeater-list-wrapper table tbody tr.selectable:hover.selected td, +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas .repeater-list .repeater-list-wrapper table tbody tr.selectable.hovered.selected td { + background: #eee; +} +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas .repeater-list .repeater-list-wrapper table tbody tr.selectable:hover td, +.fuelux .repeater[data-viewtype="list"].disabled .repeater-canvas .repeater-list .repeater-list-wrapper table tbody tr.selectable.hovered td { + background: #fff; + cursor: auto; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling { + overflow: visible; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling .repeater-list { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.scrolling .repeater-list-wrapper { + height: 100%; + overflow: auto; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list { + position: relative; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table { + margin-bottom: 0; + width: 100%; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td { + border-bottom: 1px solid #dddddd; + border-left: 1px solid #dddddd; + border-top: none; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td:first-child { + border-left: none; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td.sorted { + background: #fafafa; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody td.truncate { + display: inherit; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr:focus { + outline: 1px dotted #dddddd; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.empty td { + border-bottom: none; + font-size: 14px; + font-style: italic; + padding: 20px; + text-align: center; + width: 100%; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable:hover td, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable.hovered td { + background: #f5f5f5; + cursor: pointer; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selectable .checkbox-custom:before { + margin-top: -4px; + top: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selected td { + background: #eeeeee; + color: #333333; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table tbody tr.selected td:first-child { + padding-left: 30px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th { + background: #fafafa; + border-bottom: 1px solid #dddddd; + border-left: 1px solid transparent; + border-top: none; + color: rgba(0, 0, 0, 0); + line-height: 1.42857; + padding: 8px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th:first-child { + border-left: none; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th:first-child .header-checkbox { + width: 37px; + padding-left: 12px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th:first-child .header-checkbox .checkbox-inline:before { + top: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th.sortable:hover, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th.sortable.sorted { + background: #f5f5f5; + cursor: pointer; + background-color: #f2f2f2; + background-image: -moz-linear-gradient(top, #fafafa, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #fafafa, #e6e6e6); + background-image: -o-linear-gradient(top, #fafafa, #e6e6e6); + background-image: linear-gradient(to bottom, #fafafa, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe6e6e6', GradientType=0); +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th.sorted span.glyphicon { + display: block; + visibility: hidden; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th span.glyphicon { + display: none; + float: right; + margin-top: 2px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list table thead > tr > th .actions-hidden { + visibility: hidden; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-check { + display: inline-block; + height: 0; + line-height: 0; + position: relative; + vertical-align: top; + width: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-check span.glyphicon { + left: -22px; + position: absolute; + top: 2px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading { + background: #fafafa; + border-bottom: 1px solid #dddddd; + border-left: 1px solid #dddddd; + border-top: none; + color: #333333; + line-height: 1.42857; + margin-left: -9px; + padding: 8px; + position: absolute; + top: 0; + z-index: 1; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.shifted { + margin-left: -1px; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + .fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.shifted { + margin-left: 0; + } +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable:hover, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable.sorted { + background: #f5f5f5; + cursor: pointer; + background-color: #f2f2f2; + background-image: -moz-linear-gradient(top, #fafafa, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #fafafa, #e6e6e6); + background-image: -o-linear-gradient(top, #fafafa, #e6e6e6); + background-image: linear-gradient(to bottom, #fafafa, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe6e6e6', GradientType=0); +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading.sortable.sorted span.glyphicon { + display: block; + visibility: visible; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas .repeater-list-heading span.glyphicon { + display: none; + float: right; + margin-top: 2px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled { + overflow: auto; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list-wrapper { + overflow: visible; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-column-wrapper { + position: absolute; + z-index: 2; + left: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-thead-wrapper { + position: absolute; + top: 0; + left: 0; + z-index: 3; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list .frozen-thead-wrapper table { + border-right: 1px solid #dddddd; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table { + table-layout: fixed; + word-wrap: break-word; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen { + border-right: 1px solid #dddddd; + z-index: 2; + background: #FFF; + border-collapse: collapse; + table-layout: fixed; + float: left; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen td, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen th { + border-collapse: collapse; + word-wrap: break-word; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen .repeater-frozen-heading { + background: #fafafa; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.frozen-enabled .repeater-list table.table-frozen .repeater-frozen-heading.shifted { + left: -1px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled { + overflow: auto; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list-wrapper { + overflow: visible; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper { + position: absolute; + z-index: 2; + right: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table { + table-layout: fixed; + word-wrap: break-word; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions { + border-left: 1px solid #dddddd; + z-index: 2; + border-collapse: collapse; + table-layout: fixed; + float: right; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr { + border-left: 1px solid #dddddd; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.empty-heading { + background: transparent; + border-left: 1px solid transparent; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.empty-heading th { + background: transparent; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td { + background: #FFF; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable:hover td, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable.hovered td { + background: #f5f5f5; + cursor: pointer; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selectable .checkbox-custom:before { + margin-top: -4px; + top: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td { + background: #eeeeee; + color: #333333; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td:first-child { + padding-left: 30px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th { + border-collapse: collapse; + word-wrap: break-word; + padding-bottom: 5px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td .btn-group, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .btn-group { + width: 100%; + text-align: center; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr td .btn-group .btn, +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .btn-group .btn { + float: none; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr.selected td:first-child { + padding-left: 8px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th { + border-bottom: 1px solid #dddddd; + padding-bottom: 7px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading { + padding: 8px 0 7px; + border-left: 1px solid #fafafa; + margin-left: -9px; + width: 100%; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading .glyphicon { + display: inline-block; + float: none; + margin-top: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-column-wrapper table.table-actions .caret { + margin-left: 0; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list .actions-thead-wrapper { + position: absolute; + top: 0; + right: 0; + z-index: 3; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list table { + table-layout: fixed; + word-wrap: break-word; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list table thead tr th:last-child .repeater-list-heading { + border-left: 1px solid transparent; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions { + background-color: #FFF; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr { + background-color: transparent; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr.empty-heading { + border-left: 1px solid #fafafa; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr th { + padding-bottom: 8px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.actions-enabled .repeater-list.ie-9 .actions-column-wrapper table.table-actions tr td { + padding-bottom: 6px; + line-height: 1.39; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list thead tr:first-child .header-checkbox { + width: 37px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list thead tr:first-child .header-checkbox .checkbox { + margin: 0 4px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list tbody tr .body-checkbox { + left: 4px; + top: -3px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled .repeater-list tr.selected td:first-child { + padding-left: 8px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-canvas.multi-select-enabled.actions-enabled .repeater-list .actions-column-wrapper table.table-actions tr th .repeater-list-heading { + border-left: 1px solid #dddddd; +} +.fuelux .repeater[data-viewtype="list"] .repeater-loader { + margin-top: -12px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-loader.noHeader { + margin-top: -32px; +} +.fuelux .repeater[data-viewtype="list"] .repeater-viewport { + overflow: hidden; +} +.fuelux .repeater[data-viewtype="list"] .actions-wrapper { + z-index: 10; + text-align: right; +} +.fuelux .repeater.disabled .repeater-thumbnail.selectable:hover { + background: #fff; + cursor: auto; +} +.fuelux .repeater.disabled .repeater-thumbnail.selectable.selected:hover { + background: #eeeeee; +} +.fuelux .repeater-thumbnail { + border: 1px solid #dddddd; + color: #666666; + float: left; + font-size: 14px; + min-height: 110px; + min-width: 100px; + margin: 8px 7px; + text-align: center; +} +.fuelux .repeater-thumbnail img { + display: block; + margin-top: 10px; + margin-bottom: 3px; +} +.fuelux .repeater-thumbnail-cont { + height: 100%; + overflow-y: auto; + padding: 6px; + width: 100%; +} +.fuelux .repeater-thumbnail-cont.align-center, +.fuelux .repeater-thumbnail-cont.align-justify, +.fuelux .repeater-thumbnail-cont.align-left, +.fuelux .repeater-thumbnail-cont.align-right { + position: relative; + font-size: 0.1px; +} +.fuelux .repeater-thumbnail-cont.align-center:after, +.fuelux .repeater-thumbnail-cont.align-justify:after, +.fuelux .repeater-thumbnail-cont.align-left:after, +.fuelux .repeater-thumbnail-cont.align-right:after { + display: inline-block; + width: 100%; + content: ''; +} +.fuelux .repeater-thumbnail-cont.align-center .infinitescroll-end, +.fuelux .repeater-thumbnail-cont.align-justify .infinitescroll-end, +.fuelux .repeater-thumbnail-cont.align-left .infinitescroll-end, +.fuelux .repeater-thumbnail-cont.align-right .infinitescroll-end, +.fuelux .repeater-thumbnail-cont.align-center .infinitescroll-load, +.fuelux .repeater-thumbnail-cont.align-justify .infinitescroll-load, +.fuelux .repeater-thumbnail-cont.align-left .infinitescroll-load, +.fuelux .repeater-thumbnail-cont.align-right .infinitescroll-load { + display: inline-block; + width: 100%; +} +.fuelux .repeater-thumbnail-cont.align-center .repeater-thumbnail, +.fuelux .repeater-thumbnail-cont.align-justify .repeater-thumbnail, +.fuelux .repeater-thumbnail-cont.align-left .repeater-thumbnail, +.fuelux .repeater-thumbnail-cont.align-right .repeater-thumbnail { + display: inline-block; + float: none; + font-size: 14px; +} +.fuelux .repeater-thumbnail-cont.align-center .repeater-thumbnail:after, +.fuelux .repeater-thumbnail-cont.align-justify .repeater-thumbnail:after, +.fuelux .repeater-thumbnail-cont.align-left .repeater-thumbnail:after, +.fuelux .repeater-thumbnail-cont.align-right .repeater-thumbnail:after { + content: ' '; +} +.fuelux .repeater-thumbnail-cont.align-center { + text-align: center; +} +.fuelux .repeater-thumbnail-cont.align-justify { + text-align: justify; +} +.fuelux .repeater-thumbnail-cont.align-left { + text-align: left; +} +.fuelux .repeater-thumbnail-cont.align-right { + text-align: right; +} +.fuelux .repeater-thumbnail-cont div.empty { + font-size: 14px; + font-style: italic; + padding: 14px 10px 20px; + text-align: center; +} +.fuelux .repeater-thumbnail-cont .selectable:hover { + background: #f5f5f5; + cursor: pointer; +} +.fuelux .repeater-thumbnail-cont .selectable.selected { + background: #eeeeee; +} +.fuelux .repeater-thumbnail-cont .selectable.selected:hover { + background: #dddddd; +} +.fuelux .spinbox { + display: inline-block; + position: relative; +} +.fuelux .spinbox.digits-3 { + width: 60px; +} +.fuelux .spinbox.disabled .spinbox-buttons { + cursor: not-allowed; +} +.fuelux .spinbox .spinbox-input { + float: left; + padding-bottom: 3px; + /* Magic number */ + padding: 0px 25px 0px 7px; +} +.fuelux .spinbox .spinbox-input::-ms-clear { + display: none; +} +.fuelux .spinbox .btn { + position: relative; + width: 20px; + height: 13px; + padding-top: 0; + padding-right: 9px; + padding-left: 9px; + overflow-y: hidden; +} +.fuelux .spinbox .btn.disabled { + cursor: not-allowed; +} +.fuelux .spinbox .spinbox-buttons { + position: absolute; + height: 28px; + width: 20px; + right: 2px; +} +.fuelux .spinbox .spinbox-up { + padding: 0 0 14px 1px; + top: 2px; +} +.fuelux .spinbox .spinbox-up .glyphicon-chevron-up { + position: relative; + top: 0px; +} +.fuelux .spinbox .btn-group > .btn.spinbox-up { + border-top-right-radius: 4px; +} +.fuelux .spinbox .spinbox-down { + padding: 0 0 8px 1px; + top: 2px; + height: 15px; + border-bottom-left-radius: 4px; +} +.fuelux .spinbox .spinbox-down .glyphicon-chevron-down { + position: relative; + left: 0; + top: 0; +} +.fuelux .spinbox input::-ms-clear { + display: none; +} +.fuelux .scheduler { + /* ------------------------------- + START DATE/TIME + ------------------------------- */ + /* ------------------------------- + TIMEZONE + ------------------------------- */ + /* ------------------------------- + REPEAT PANELS + ------------------------------- */ + /* ------------------------------- + END + ------------------------------- */ +} +.fuelux .scheduler .row { + margin-bottom: 10px; +} +.fuelux .scheduler .row.no-margin { + margin-bottom: 0px; +} +.fuelux .scheduler .control-label { + min-width: 7em; +} +.fuelux .scheduler .inline-form-text { + float: left; + line-height: 27px; + margin-top: 4px; +} +.fuelux .scheduler .form-group { + margin-bottom: 0px; +} +.fuelux .scheduler .start-datetime .form-group { + margin-left: 0; +} +.fuelux .scheduler .start-datetime .combobox { + max-width: 9em; +} +.fuelux .scheduler .start-datetime .combobox .dropdown-menu { + max-height: 200px; + overflow: auto; +} +.fuelux .scheduler .start-datetime .dropdown { + float: left; + margin: 0 10px 0 0; +} +.fuelux .scheduler .timezone-container .input-group { + max-width: 20em; +} +.fuelux .scheduler .timezone-container .dropdown-label { + height: 18px; + white-space: nowrap; + max-width: 20em; + overflow: hidden; + text-overflow: ellipsis; +} +.fuelux .scheduler .timezone-container .dropdown-menu { + max-height: 200px; + overflow: auto; +} +.fuelux .scheduler .repeat-panel { + margin-left: 0; +} +.fuelux .scheduler .repeat-panel label { + font-weight: normal; +} +.fuelux .scheduler .repeat-panel .radio { + margin-right: 10px; +} +.fuelux .scheduler .repeat-panel .form-group { + margin-left: 0; +} +.fuelux .scheduler .repeat-interval { + margin-left: 0; + *zoom: 1; +} +.fuelux .scheduler .repeat-interval:before, +.fuelux .scheduler .repeat-interval:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .scheduler .repeat-interval:after { + clear: both; +} +.fuelux .scheduler .repeat-interval .form-group { + margin-left: 0; +} +.fuelux .scheduler .repeat-interval .dropdown-menu { + max-height: 200px; + overflow: auto; +} +.fuelux .scheduler .repeat-interval .repeat-every-panel { + float: left; +} +.fuelux .scheduler .repeat-interval .repeat-every-panel .repeat-every-pretext { + padding: 0 10px; +} +.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox { + float: left; + margin-right: 10px; +} +.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox input { + margin-bottom: 0; +} +.fuelux .scheduler .repeat-monthly .repeat-monthly-date { + margin-top: 10px; + *zoom: 1; +} +.fuelux .scheduler .repeat-monthly .repeat-monthly-date:before, +.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after { + clear: both; +} +.fuelux .scheduler .repeat-monthly .repeat-monthly-date .selectlist { + margin-left: 5px; +} +.fuelux .scheduler .repeat-monthly .repeat-monthly-day { + margin-top: 10px; + *zoom: 1; +} +.fuelux .scheduler .repeat-monthly .repeat-monthly-day:before, +.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after { + clear: both; +} +.fuelux .scheduler .repeat-monthly .month-days { + margin-left: 10px; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-date { + margin-top: 10px; + *zoom: 1; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-date:before, +.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after { + clear: both; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-date .year-month-day { + margin-left: 10px; +} +.fuelux .scheduler .repeat-yearly .year-month-days { + margin-left: 10px; +} +.fuelux .scheduler .repeat-yearly .year-month { + margin-left: 10px; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-day { + margin-top: 10px; + *zoom: 1; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-day:before, +.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after { + clear: both; +} +.fuelux .scheduler .repeat-yearly .repeat-yearly-day .repeat-yearly-day-text { + margin-left: 10px; +} +.fuelux .scheduler .repeat-weekly.repeat-days-of-the-week { + margin-top: 10px; + *zoom: 1; +} +.fuelux .scheduler .repeat-weekly.repeat-days-of-the-week:before, +.fuelux .scheduler .repeat-weekly.repeat-days-of-the-week:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .scheduler .repeat-weekly.repeat-days-of-the-week:after { + clear: both; +} +.fuelux .scheduler .repeat-weekly button:not(.active) { + background-color: #FFF; +} +.fuelux .scheduler .repeat-weekly .btn-group.disabled { + position: relative; + opacity: 0.65; +} +.fuelux .scheduler .repeat-weekly .btn-group.disabled:before { + background: transparent; + bottom: 0; + content: ""; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.fuelux .scheduler .selectlist { + float: left; +} +.fuelux .scheduler label.radio { + float: left; + line-height: 27px; +} +.fuelux .scheduler label.radio input { + margin-top: 8px; +} +.fuelux .scheduler .repeat-end .end-after { + float: left; + display: inline-block; + margin-right: 10px; +} +.fuelux .scheduler .repeat-end .form-group { + margin-left: 0; +} +.fuelux .scheduler .repeat-end .end-option-panel { + padding-left: 10px; +} +.fuelux .scheduler .repeat-end .selectlist { + min-width: 100%; +} +.fuelux .scheduler .repeat-end .selectlist button, +.fuelux .scheduler .repeat-end .selectlist ul { + min-width: 100%; +} +.fuelux .scheduler input::-ms-clear { + display: none; +} +.fuelux .search.disabled .input-group-btn { + cursor: not-allowed; +} +.fuelux .search input::-ms-clear { + display: none; +} +.fuelux .selectlist.disabled { + cursor: not-allowed; +} +.fuelux .selectlist .selected-label { + overflow: hidden; + min-width: 2em; +} +.fuelux .selectlist .dropdown-menu { + min-width: inherit; + overflow-y: auto; +} +.fuelux .selectlist .btn.dropdown-toggle { + text-align: left; + padding-right: 28px; +} +.fuelux .selectlist .btn.dropdown-toggle .caret { + margin: auto; + position: absolute; + top: 0; + bottom: 0; + right: 12px; +} +.fuelux .button-sizer, +.fuelux .selectlist-sizer { + display: inline-block; + position: absolute; + visibility: hidden; + top: 0; + float: left; +} +.fuelux .button-sizer .selectlist, +.fuelux .selectlist-sizer .selectlist { + display: block !important; +} +.fuelux .button-sizer .dropdown-menu, +.fuelux .selectlist-sizer .dropdown-menu { + display: block; + min-width: inherit; +} +.fuelux .button-sizer .selected-label, +.fuelux .selectlist-sizer .selected-label { + width: auto !important; +} +.fuelux .picker { + display: inline-block; + position: relative; +} +.fuelux .picker[data-ellipsis="true"].showing input.picker-field { + overflow: visible; + text-overflow: clip; + white-space: normal; +} +.fuelux .picker[data-ellipsis="true"] input.picker-field { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.fuelux .picker[data-ellipsis="true"] input.picker-field::-ms-clear { + display: none; +} +.fuelux .picker[data-ellipsis="true"] textarea.picker-field[readonly] { + overflow: hidden; +} +.fuelux .picker.showing .picker-footer, +.fuelux .picker.showing .picker-header, +.fuelux .picker.showing .picker-popup { + display: block; + z-index: 1; +} +.fuelux .picker.showing input.picker-field, +.fuelux .picker.showing textarea.picker-field { + background: #FFF; + border: 1px solid #cccccc; + box-shadow: none; + position: relative; + z-index: 1; +} +.fuelux .picker input.picker-field, +.fuelux .picker textarea.picker-field { + resize: none; +} +.fuelux .picker input.picker-field[readonly], +.fuelux .picker textarea.picker-field[readonly] { + background: #FFF; + cursor: auto; +} +.fuelux .picker input.picker-field[readonly].glass, +.fuelux .picker textarea.picker-field[readonly].glass { + background: none; +} +.fuelux .picker input.picker-field[readonly].glass:hover, +.fuelux .picker textarea.picker-field[readonly].glass:hover { + background: #d9edf7; + cursor: pointer; +} +.fuelux .picker input.picker-field:focus, +.fuelux .picker textarea.picker-field:focus { + border: 1px solid #cccccc; + box-shadow: none; +} +.fuelux .picker-cancel { + font-size: 12px; + margin-right: 4px; + vertical-align: middle; +} +.fuelux .picker-footer, +.fuelux .picker-header { + display: none; + left: 0; + line-height: 1; + right: 0; +} +.fuelux .picker-footer { + padding: 8px 10px 8px 0; + text-align: right; + bottom: 0; + position: absolute; +} +.fuelux .picker-header { + height: 31px; + padding: 8px 0 0px 10px; +} +.fuelux .picker-header h1, +.fuelux .picker-header h2, +.fuelux .picker-header h3, +.fuelux .picker-header h4, +.fuelux .picker-header h5, +.fuelux .picker-header h6 { + margin: 0; +} +.fuelux .picker-popup { + background: #d9edf7; + background-clip: padding-box; + border: 1px solid #cccccc; + border-radius: 4px; + box-shadow: 0 0 0 1px #FFF inset; + display: none; + position: absolute; + padding-left: 6px; + padding-right: 6px; + height: 234px; + width: 350px; + margin: 4px 0; +} +.fuelux .picker .picker-body.well { + background-color: #fff; + overflow: scroll; + padding: 0; + height: 165px; +} +.fuelux .picker .tree { + border: none; +} +.fuelux .picker .glass { + background: transparent; + border: 1px solid #FFF; + box-shadow: none; +} +.fuelux .picker .glass:hover { + background: #d9edf7; + border-color: #5B9DD9; + cursor: pointer; +} +.fuelux .picker .glass:hover[disabled] { + background: transparent; + border-color: #FFF; + cursor: not-allowed; +} +.fuelux .picker .glass:focus { + background: #FFF; + border-color: #5B9DD9; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.75), 0 0 8px rgba(91, 157, 217, 0.6); + cursor: auto; +} +.fuelux .picker .glass:focus[disabled] { + background: transparent; + border-color: #FFF; + cursor: not-allowed; +} +.fuelux .picker .glass[disabled] { + cursor: not-allowed; +} +.fuelux .tree { + border: 1px solid #999999; + border-radius: 4px 4px 4px 4px; + padding: 10px 15px 0 15px; + overflow-x: auto; + overflow-y: auto; + position: relative; + list-style: none; +} +.fuelux .tree *:focus { + outline: none; +} +.fuelux .tree button:focus { + color: #999999; +} +.fuelux .tree ul { + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + list-style: none; +} +.fuelux .tree li { + margin: 0; + margin-top: 5px; + margin-bottom: 5px; +} +.fuelux .tree .tree-loader { + margin-left: 65px; +} +.fuelux .tree > .tree-loader { + margin-left: 50px; +} +.fuelux .tree .tree-open > .tree-branch-header .glyphicon-play { + transform: rotate(90deg); + -ms-transform: rotate(90deg); + -webkit-transform: rotate(90deg); + position: relative; +} +.fuelux .tree [data-children=false] > .tree-branch-header .icon-caret:before { + content: '\00a0'; +} +.fuelux .tree .tree-branch .tree-branch-header { + position: relative; + border-radius: 6px; + white-space: nowrap; +} +.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name:hover { + color: #999999; +} +.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play { + font-size: 10px; + padding-right: 5px; + padding-left: 7px; +} +.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play:before { + position: relative; + top: -2px; +} +.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name { + white-space: nowrap; + border-radius: 6px; + background-color: transparent; + border: 0; +} +.fuelux .tree .tree-branch .tree-branch-header label { + font-weight: normal; + padding-left: 3px; + margin-bottom: 0; + cursor: pointer; +} +.fuelux .tree .tree-branch .tree-branch-children { + margin-left: 14px; +} +.fuelux .tree .tree-branch[haschildren='false'] .icon-caret, +.fuelux .tree .tree-branch[data-has-children='false'] .icon-caret { + visibility: hidden; +} +.fuelux .tree .tree-item, +.fuelux .tree .tree-overflow { + white-space: nowrap; + position: relative; + cursor: pointer; + border-radius: 6px; + margin-left: 26px; +} +.fuelux .tree .tree-item .tree-item-name, +.fuelux .tree .tree-overflow .tree-item-name, +.fuelux .tree .tree-item .tree-overflow-name, +.fuelux .tree .tree-overflow .tree-overflow-name { + white-space: nowrap; + border-radius: 6px; + background-color: transparent; + border: 0; +} +.fuelux .tree .tree-item .tree-overflow-name .tree-label, +.fuelux .tree .tree-overflow .tree-overflow-name .tree-label { + margin-left: 15px; + color: #0088cc; +} +.fuelux .tree .tree-item .tree-item-name:hover, +.fuelux .tree .tree-overflow .tree-item-name:hover, +.fuelux .tree .tree-item .tree-overflow-name:hover, +.fuelux .tree .tree-overflow .tree-overflow-name:hover { + color: #999999; +} +.fuelux .tree .tree-item.tree-selected .tree-item-name, +.fuelux .tree .tree-overflow.tree-selected .tree-item-name { + background-color: #eeeeee; + color: #333333; +} +.fuelux .tree .tree-item label, +.fuelux .tree .tree-overflow label { + font-weight: normal; + padding-left: 7px; + margin-bottom: 0; + cursor: pointer; +} +.fuelux .tree .icon-caret:hover + .tree-branch-name { + color: #999999; +} +.fuelux .tree.tree-folder-select .tree-branch .icon-caret { + background-color: transparent; + border: 0; +} +.fuelux .tree.tree-folder-select .tree-branch .icon-caret:hover { + cursor: pointer; + color: #999999; +} +.fuelux .tree.tree-folder-select .tree-branch > .tree-branch-name { + padding: 1px 5px 0 5px; + border-radius: 6px; +} +.fuelux .tree.tree-folder-select .tree-branch > .tree-branch-name.tree-selected { + background-color: #eeeeee; +} +.fuelux .tree.tree-folder-select .tree-branch.tree-selected > .tree-branch-header .tree-branch-name { + background-color: #eeeeee; +} +.fuelux .tree.tree-folder-select .tree-branch.tree-selected > .tree-branch-header .tree-branch-name:hover { + background-color: #eeeeee; +} +.fuelux .truncate .tree .tree-branch-header .tree-branch-name, +.fuelux .truncate .tree .tree-item .tree-item-name { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.fuelux .wizard { + *zoom: 1; + border: 1px solid #d4d4d4; + border-radius: 4px; + background-color: #fafafa; + position: relative; + min-height: 48px; +} +.fuelux .wizard:before, +.fuelux .wizard:after { + display: table; + content: ""; + line-height: 0; +} +.fuelux .wizard:after { + clear: both; +} +.fuelux .wizard.no-steps-container { + overflow: hidden; +} +.fuelux .wizard .steps-container { + border-radius: 4px 4px 0 0; + overflow: hidden; +} +.fuelux .wizard > ul.steps, +.fuelux .wizard > .steps-container > ul.steps { + list-style: none outside none; + padding: 0; + margin: 0; + width: 999999px; +} +.fuelux .wizard > ul.steps.previous-disabled li.complete, +.fuelux .wizard > .steps-container > ul.steps.previous-disabled li.complete { + cursor: default; +} +.fuelux .wizard > ul.steps.previous-disabled li.complete:hover, +.fuelux .wizard > .steps-container > ul.steps.previous-disabled li.complete:hover { + background: #f5f5f5; + color: #468847; + cursor: default; +} +.fuelux .wizard > ul.steps.previous-disabled li.complete:hover .chevron:before, +.fuelux .wizard > .steps-container > ul.steps.previous-disabled li.complete:hover .chevron:before { + border-left-color: #f5f5f5; +} +.fuelux .wizard > ul.steps li, +.fuelux .wizard > .steps-container > ul.steps li { + float: left; + margin: 0; + padding: 0 20px 0 30px; + height: 46px; + line-height: 46px; + position: relative; + background: #eeeeee; + color: #999999; + font-size: 16px; + cursor: not-allowed; +} +.fuelux .wizard > ul.steps li > .has-secondary-text, +.fuelux .wizard > .steps-container > ul.steps li > .has-secondary-text { + display: inline; +} +.fuelux .wizard > ul.steps li > .has-secondary-text > h4, +.fuelux .wizard > .steps-container > ul.steps li > .has-secondary-text > h4 { + display: inline; + font-size: 16px; + font-weight: normal; +} +.fuelux .wizard > ul.steps li > .has-secondary-text > small, +.fuelux .wizard > .steps-container > ul.steps li > .has-secondary-text > small { + display: none; +} +.fuelux .wizard > ul.steps li .chevron, +.fuelux .wizard > .steps-container > ul.steps li .chevron { + border: 24px solid transparent; + border-left: 14px solid #d4d4d4; + border-right: 0; + display: block; + position: absolute; + right: -14px; + top: 0; + z-index: 1; +} +.fuelux .wizard > ul.steps li .chevron:before, +.fuelux .wizard > .steps-container > ul.steps li .chevron:before { + border: 24px solid transparent; + border-left: 14px solid #eeeeee; + border-right: 0; + content: ""; + display: block; + position: absolute; + right: 1px; + top: -24px; +} +.fuelux .wizard > ul.steps li.complete, +.fuelux .wizard > .steps-container > ul.steps li.complete { + background: #f5f5f5; + color: #468847; +} +.fuelux .wizard > ul.steps li.complete:hover, +.fuelux .wizard > .steps-container > ul.steps li.complete:hover { + background: #e2eaee; + cursor: pointer; +} +.fuelux .wizard > ul.steps li.complete:hover .chevron:before, +.fuelux .wizard > .steps-container > ul.steps li.complete:hover .chevron:before { + border-left: 14px solid #e2eaee; +} +.fuelux .wizard > ul.steps li.complete .chevron:before, +.fuelux .wizard > .steps-container > ul.steps li.complete .chevron:before { + border-left: 14px solid #f5f5f5; +} +.fuelux .wizard > ul.steps li.active, +.fuelux .wizard > .steps-container > ul.steps li.active { + background: #eef7fb; + color: #3a87ad; + cursor: default; +} +.fuelux .wizard > ul.steps li.active .chevron:before, +.fuelux .wizard > .steps-container > ul.steps li.active .chevron:before { + border-left: 14px solid #eef7fb; +} +.fuelux .wizard > ul.steps li.active .badge, +.fuelux .wizard > .steps-container > ul.steps li.active .badge { + background-color: #3a87ad; +} +.fuelux .wizard > ul.steps li .badge, +.fuelux .wizard > .steps-container > ul.steps li .badge { + margin-right: 8px; +} +.fuelux .wizard > ul.steps li .badge-success, +.fuelux .wizard > .steps-container > ul.steps li .badge-success { + background-color: #468847; +} +.fuelux .wizard > ul.steps li:first-child, +.fuelux .wizard > .steps-container > ul.steps li:first-child { + border-radius: 4px 0 0 0; + padding-left: 20px; +} +.fuelux .wizard.rtl { + direction: rtl; +} +.fuelux .wizard.rtl > ul.steps, +.fuelux .wizard.rtl > .steps-container > ul.steps { + right: 0; + left: auto; + float: right; +} +.fuelux .wizard.rtl > ul.steps.previous-disabled li.complete:hover .chevron:before, +.fuelux .wizard.rtl > .steps-container > ul.steps.previous-disabled li.complete:hover .chevron:before { + border-right-color: #f5f5f5; +} +.fuelux .wizard.rtl > ul.steps li, +.fuelux .wizard.rtl > .steps-container > ul.steps li { + float: right; +} +.fuelux .wizard.rtl > ul.steps li .chevron, +.fuelux .wizard.rtl > .steps-container > ul.steps li .chevron { + right: auto; + left: -14px; + border-right: 14px solid #cccccc; + border-left: 0; +} +.fuelux .wizard.rtl > ul.steps li .chevron:before, +.fuelux .wizard.rtl > .steps-container > ul.steps li .chevron:before { + right: auto; + left: 1px; + border-right: 14px solid #eeeeee; + border-left: 0; +} +.fuelux .wizard.rtl > ul.steps li.active .chevron:before, +.fuelux .wizard.rtl > .steps-container > ul.steps li.active .chevron:before { + border-right: 14px solid #eef7fb; +} +.fuelux .wizard.rtl > ul.steps li.complete .chevron:before, +.fuelux .wizard.rtl > .steps-container > ul.steps li.complete .chevron:before { + border-right: 14px solid #f5f5f5; +} +.fuelux .wizard.rtl > ul.steps li.complete:hover .chevron:before, +.fuelux .wizard.rtl > .steps-container > ul.steps li.complete:hover .chevron:before { + border-right: 14px solid #e2eaee; + border-left: none; +} +.fuelux .wizard.rtl > ul.steps li .badge, +.fuelux .wizard.rtl > .steps-container > ul.steps li .badge { + margin-left: 8px; +} +.fuelux .wizard.rtl > .actions { + right: auto; + left: 0; + float: left; + border-left: none; + border-right: 1px solid #d4d4d4; + border-radius: 4px 0 0 0; +} +.fuelux .wizard.rtl > .actions .btn-prev span { + margin-left: 5px; + margin-right: 0; +} +.fuelux .wizard.rtl > .actions .btn-next span { + margin-left: 0; + margin-right: 5px; +} +.fuelux .wizard > .actions { + z-index: 1000; + position: absolute; + right: 0; + top: 0; + line-height: 46px; + float: right; + padding-left: 15px; + padding-right: 15px; + vertical-align: middle; + background-color: #e6e6e6; + border-left: 1px solid #d4d4d4; + border-radius: 0 4px 0 0; +} +.fuelux .wizard > .actions a { + line-height: 45px; + font-size: 12px; + margin-right: 8px; +} +.fuelux .wizard > .actions .btn-prev[disabled] { + cursor: not-allowed; +} +.fuelux .wizard > .actions .btn-prev span { + margin-right: 5px; +} +.fuelux .wizard > .actions .btn-next[disabled] { + cursor: not-allowed; +} +.fuelux .wizard > .actions .btn-next span { + margin-left: 5px; +} +.fuelux .wizard .step-content { + border-top: 1px solid #cccccc; + padding: 10px; + float: left; + width: 100%; +} +.fuelux .wizard .step-content .step-pane { + display: none; +} +.fuelux .wizard .step-content > .active { + display: block; +} +.fuelux .wizard .step-content > .active .btn-group .active { + display: inline-block; +} +.fuelux .wizard.complete > .actions .btn-next .glyphicon { + display: none; +} +.fuelux .serif { + font-family: Georgia, "Times New Roman", Times, serif; +} +.fuelux .monospace { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} +.fuelux .text-sm { + font-size: 14px * 0.85; +} +.fuelux .text-lg { + font-size: 14px * 1.25; +} +.fuelux .padding-xs { + padding: 5px; +} +.fuelux .padding-xs-horizontal { + padding: 0 5px; +} +.fuelux .padding-xs-vertical { + padding: 5px 0; +} +.fuelux .padding-xs-top { + padding-top: 5px; +} +.fuelux .padding-xs-bottom { + padding-bottom: 5px; +} +.fuelux .padding-xs-left { + padding-left: 5px; +} +.fuelux .padding-xs-right { + padding-right: 5px; +} +.fuelux .padding-sm { + padding: 10px; +} +.fuelux .padding-sm-horizontal { + padding: 0 10px; +} +.fuelux .padding-sm-vertical { + padding: 10px 0; +} +.fuelux .padding-sm-top { + padding-top: 10px; +} +.fuelux .padding-sm-bottom { + padding-bottom: 10px; +} +.fuelux .padding-sm-left { + padding-left: 10px; +} +.fuelux .padding-sm-right { + padding-right: 10px; +} +.fuelux .padding-md { + padding: 15px; +} +.fuelux .padding-md-horizontal { + padding: 0 15px; +} +.fuelux .padding-md-vertical { + padding: 15px 0; +} +.fuelux .padding-md-top { + padding-top: 15px; +} +.fuelux .padding-md-bottom { + padding-bottom: 15px; +} +.fuelux .padding-md-left { + padding-left: 15px; +} +.fuelux .padding-md-right { + padding-right: 15px; +} +.fuelux .padding-lg { + padding: 20px; +} +.fuelux .padding-lg-horizontal { + padding: 0 20px; +} +.fuelux .padding-lg-vertical { + padding: 20px 0; +} +.fuelux .padding-lg-top { + padding-top: 20px; +} +.fuelux .padding-lg-bottom { + padding-bottom: 20px; +} +.fuelux .padding-lg-left { + padding-left: 20px; +} +.fuelux .padding-lg-right { + padding-right: 20px; +} +.fuelux .margin-xs { + margin: 5px; +} +.fuelux .margin-xs-horizontal { + margin: 0 5px; +} +.fuelux .margin-xs-vertical { + margin: 5px 0; +} +.fuelux .margin-xs-top { + margin-top: 5px; +} +.fuelux .margin-xs-bottom { + margin-bottom: 5px; +} +.fuelux .margin-xs-left { + margin-left: 5px; +} +.fuelux .margin-xs-right { + margin-right: 5px; +} +.fuelux .margin-sm { + margin: 10px; +} +.fuelux .margin-sm-horizontal { + margin: 0 10px; +} +.fuelux .margin-sm-vertical { + margin: 10px 0; +} +.fuelux .margin-sm-top { + margin-top: 10px; +} +.fuelux .margin-sm-bottom { + margin-bottom: 10px; +} +.fuelux .margin-sm-left { + margin-left: 10px; +} +.fuelux .margin-sm-right { + margin-right: 10px; +} +.fuelux .margin-md { + margin: 15px; +} +.fuelux .margin-md-horizontal { + margin: 0 15px; +} +.fuelux .margin-md-vertical { + margin: 15px 0; +} +.fuelux .margin-md-top { + margin-top: 15px; +} +.fuelux .margin-md-bottom { + margin-bottom: 15px; +} +.fuelux .margin-md-left { + margin-left: 15px; +} +.fuelux .margin-md-right { + margin-right: 15px; +} +.fuelux .margin-lg { + margin: 20px; +} +.fuelux .margin-lg-horizontal { + margin: 0 20px; +} +.fuelux .margin-lg-vertical { + margin: 20px 0; +} +.fuelux .margin-lg-top { + margin-top: 20px; +} +.fuelux .margin-lg-bottom { + margin-bottom: 20px; +} +.fuelux .margin-lg-left { + margin-left: 20px; +} +.fuelux .margin-lg-right { + margin-right: 20px; +} +.fuelux .data-label { + text-transform: uppercase; + font-size: 10px; + margin-bottom: 2px; + text-shadow: 0 1px #FFF; + color: #666666; +} +.fuelux .data-value { + font-size: 14px; +} +.fuelux .section-heading { + font-size: 16px; + color: #333333; + margin: 0 0 10px; + padding: 0; + text-shadow: 0 1px #FFF; +} +.fuelux .truncate { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.checkbox-label { + margin-left: 100px; + color: blue; +} \ No newline at end of file diff --git a/reference/dist/fonts/fuelux.eot b/reference/dist/fonts/fuelux.eot new file mode 100644 index 0000000000000000000000000000000000000000..36f005ee9819158bf4dbb3e0cf3b94949c755d26 GIT binary patch literal 2048 zcmds2-D_M`5dY2I-MhQZ$Ex|#vf?#KlUB%P_a@nmX|<&!8_-mjCTvq0)TP~gz-Bk* zLldDzh!PMV0)-U&W(hVG3O@TF#RnfmD2ROtd05f6fD)u2LK=VP+_Ozm^&jxCcW34| zbLPxBGiMG$z&k-e;DZ`I1j3pjvMP!j%6KxKGL#x`JXpJQtAg#*YK&t6c@+4+NVpc~ zDNRr+Act8ZjmQ$2#T=$kLJ&EM(H@k#nVIwtfbJ{Y0aK{R3(A z!KU0w*?Dug)9t)5^g1VvQqEqU&duCA+VTzMpZL8tk(-;@+oLB0qtu5c3QOaA*M5Hk zuuf6GHJQ&{!H?NrsN3R~oFw2s;R{e#Pq}q+dVVo{)AuLkuP8ScN|$rKN7e}EJCvi- zxy2b=Ko|ABl$~O3I)D9W<7YtNSz_hba6wPHL0tk}QXrF^)16bv!EtK$!Q+wz(N^Nv$z|73D$f|I24F zi4X7zZsJRPjqkCE-tmuhQoX>4k14>mTX z>|jIkw6xg4rldu&t-Xn8SKE!3;=^Yzj@V9LZ`a8e{KNiV6UX~r$zI!s%Nn?=m9nBt zQg;>fXy+u22Gz{ad;74|YviI*s;merWmz^@%j&-Am8C(ulsno|+pI{0w_#n|=(yxt zZ^89_Kg$@Umu+QpOz%T>b==#^8`p`jD%Y{3^=h{%nNqu0(y_6mRHbg?s?u}&Tt!dJ zUhtw2YR5QxN9j+CI=NSM2xDFZ)Jp@d%7)U{>GQSp^4@Ofe@s@ew*BmLw#~1R2g+)Bs z|Ig3z3HdSHA=f+q!eenTNOxBgM~UV@sf$E=tAubZK@X@3^tJ z)8}|gl5smy9d0~9lS8jjC8Ym&fU^17xv5goNyPXX{p-ZXJ=n{^KYL7#s#EyHCzkjn zAhrZ0Bw;xsRl$Yg)IdBQH#A|WYiO6D-G=rUnlv + + +Generated by Fontastic.me + + + + + + + + + + + + + + + + diff --git a/reference/dist/fonts/fuelux.ttf b/reference/dist/fonts/fuelux.ttf new file mode 100644 index 0000000000000000000000000000000000000000..100a104bf190eaae589165a04a19db27beef7d2c GIT binary patch literal 1888 zcmds2-D_KA82>#v$w{)Vi`tLqsCaC;bQ78;Cv8%@>BeYNn41<`vJQ(9wxlhjO-);E zg$NUWhOdy(ztj=v_f6G7uq)zxO?FY{mTrzVM#sd4A9L z`*k1yTJb(CjOTKb7b;Kf{0sy~h<1&QjOH*5n{p3j=e3D`xBu4pR{)u!oWDF@SiE;M z_6_A9InT`$mKGZgMnbTQ`p`^yt<<>o`>TL;iu#?|V&MvY$p1p!4rgYTfd7OqKwUfK zp4s{3)$ncKpOn9%++D6*F8CfW3&h3x)aOjia5P0D-58y}MXh zTDCsVUI6Ut)PD@s8|PkL($k7C31)lavcGLy8|#e5dxM?PtR3vgoR*j!jAkr~@!lxWbo|x}$%(U|F&t+B-?3G36P0XCIb!ja*VnwJXAtvMyUZ z%j&-A%+jGl$`{&F+iXaLw_#J;=(^;-mvD1G&N`+TWmnl8(|t%?*S)KvF;9f2auaJ> zue#03oa$mt*Ty5IPUa{gXM*SUpDC3e)H@BzV?v4)*WLz0{bE#CWo^#z;x9gqa z!?~p?Oyn>_d%TYkI}C5(Ecy)Z zr_Bw+2hfQv!`sBaM+qw^qRj6qP+BRLS4dwcG()J20;&{?Gb`l+nH(xuz_O-QS`^{H zMS_o(!)M+3S1=E8Sw@!ArA-P03{hEF&Q+>2MaNAfongmINyhEV_PNOvO&(iPp2@0M z!kjL_VK9{z`C@fxuCm~y5)>Zms9#cV{nhusZ%nI3ec}^K{1Ombf)bLj9Fmsc%EH`e zGMO|qWvFXt+Ry<*2Mx^_nl*ID&=*xEzKVRv$sOV3Uxq`;7I#DVhBjYCUFU;0zx_)Y I9Q?oh4Ft*q4FCWD literal 0 HcmV?d00001 diff --git a/reference/dist/fonts/fuelux.woff b/reference/dist/fonts/fuelux.woff new file mode 100644 index 0000000000000000000000000000000000000000..4c2cd2d62cb06f7ffd09ae877a475c3887d9dc04 GIT binary patch literal 1300 zcmZXUc~Fx_7{>R@_ZgHMMH)_1Olt`kPE$~kJ6Hl@LpTO${Q@M!0|ARA93lizY*M69 z!znrx)CyR@2r8o{px}iFDiy>64MowY0hB{&=*HT=x--AoeV%u(cV~A~f*FipHai%A zCB{Gpz(O1Wh^GF3@nJB?03b^t&j27;H^sIv7z}n0Y^z{zQ;0>v@}W_GUq1!_s4mo& z5HfHDSa68F6ZGt$4uIhH7Xx?4#B&m%CxCh*oHIaXX5Gr?a$=z;g`Pcx4*J3rd}u;% z3~CDq1+yWb{P<)z4ucYyY0xSs%*AsAa6U}ahxh@VtzZu)o(nw+)KB0VDaB?cWr+#j zCBu9*gAE~MfC5BN>3*+g*9tFVE!AwF@>OHoo^|W1Ng|JTI%$XB`nPEHTGeQ+rPE58 zwzU+AUkLwBU)10qMUNUPFzhjt$xMIL!D6NDuy@O4FRZE&8ZWHik@NSIJ)fAinjYV9 z#4DeH7#(fhGIKcu6NC0IUW-&}TISkIXMU+mxtJ#P&wCN3Jn}+qpL~5UF%J3?=Qs~0Ww|h2$dT`tqjDelYA+V9 z&A4{u={6KMwVg8xzjr-!A=fIbiD(v0nU7U+-vy07IkYlIZ_@mYWYAQ3<4sHXYw`UJ z)Z*j!+o+-?(r|80;K}`?Zs~sSL+O##=oxv2+EuBmF0Y7l|Lxpgi8t`819_?fx#Yk> zq_cH9r*zcOBTzkCDBm(*;eLny`KjiCUvDyIRHu7gpF7SywWaObw{D^Swx{7l)_nB( z?eCnD>@2bF28n;*^|ND=aglG``Id_G_ch0gOr}H^n}b~5%XWlCj`_|g&kuEO>@E5s zl$j7Wv$<{UOS?IdR~f%+MW6WC_x0LtUlV$^KYl`vyh*KzbEZ6$&{O*V-sve_6;SuU zPT5n$4!D&t-v5%?D=ce}#u=w(DhJQ~NmX=ENUO#;{j;Qleri^eNuvRg9wvyReEnQTPA_Nvon zC#i#jgJa`fCs{TS-ZU&6FK-`FWsM?h6gi6qq&K8R^`ee3FV}V}@MZwoVZD-n*TQjL z7H&#p5DgQNDUv+Hgs4aECf1mmmXb(TiRwiImMRPJwRP}*h$5@aQK7Rp0=V_W#*h01 zf3AxAWUy=caRzsU7Y(wfTQ6+t*uf+6IMo4zUd2_3`Sf~v-BSb~y)`I*Uat%xbF_Qd5* zuYO!}CzW0`b*c9m#S?0-eX7}5i~Th1gX?-A5`z^ zsi5`C=c|)yFW~n(( Oo+nYP%ZH)>EcplGj|fHp literal 0 HcmV?d00001 diff --git a/reference/dist/js/fuelux.js b/reference/dist/js/fuelux.js new file mode 100644 index 000000000..2ac762878 --- /dev/null +++ b/reference/dist/js/fuelux.js @@ -0,0 +1,8369 @@ +/*! + * Fuel UX EDGE - Built 2017/06/05, 2:15:24 PM + * Previous release: v3.16.0 + * Copyright 2012-2017 ExactTarget + * Licensed under the BSD-3-Clause license (https://github.com/ExactTarget/fuelux/blob/master/LICENSE) + */ + + +// For more information on UMD visit: https://github.com/umdjs/umd/ +( function( factory ) { + if ( typeof define === 'function' && define.amd ) { + define( [ 'jquery', 'bootstrap' ], factory ); + } else { + factory( jQuery ); + } +}( function( jQuery ) { + + if ( typeof jQuery === 'undefined' ) { + throw new Error( 'Fuel UX\'s JavaScript requires jQuery' ) + } + + if ( typeof jQuery.fn.dropdown === 'undefined' || typeof jQuery.fn.collapse === 'undefined' ) { + throw new Error( 'Fuel UX\'s JavaScript requires Bootstrap' ) + } + + ( function( $ ) { + + /* + * Fuel UX Checkbox + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.checkbox; + + // CHECKBOX CONSTRUCTOR AND PROTOTYPE + + var Checkbox = function( element, options ) { + this.options = $.extend( {}, $.fn.checkbox.defaults, options ); + + if ( element.tagName.toLowerCase() !== 'label' ) { + //console.log('initialize checkbox on the label that wraps the checkbox'); + return; + } + + // cache elements + this.$label = $( element ); + this.$chk = this.$label.find( 'input[type="checkbox"]' ); + this.$container = $( element ).parent( '.checkbox' ); // the container div + + // determine if a toggle container is specified + var containerSelector = this.$chk.attr( 'data-toggle' ); + this.$toggleContainer = $( containerSelector ); + + // handle internal events + this.$chk.on( 'change', $.proxy( this.itemchecked, this ) ); + + // set default state + this.setInitialState(); + }; + + Checkbox.prototype = { + + constructor: Checkbox, + + setInitialState: function() { + var $chk = this.$chk; + var $lbl = this.$label; + + // get current state of input + var checked = $chk.prop( 'checked' ); + var disabled = $chk.prop( 'disabled' ); + + // sync label class with input state + this.setCheckedState( $chk, checked ); + this.setDisabledState( $chk, disabled ); + }, + + setCheckedState: function( element, checked ) { + var $chk = element; + var $lbl = this.$label; + var $container = this.$container; + var $containerToggle = this.$toggleContainer; + + // set class on outer container too...to support highlighting + // TODO: verify inline checkboxes, also test with MCTheme + + if ( checked ) { + $chk.prop( 'checked', true ); + $lbl.addClass( 'checked' ); + //$container.addClass('checked'); + $containerToggle.removeClass( 'hide hidden' ); + $lbl.trigger( 'checked.fu.checkbox' ); + } else { + $chk.prop( 'checked', false ); + $lbl.removeClass( 'checked' ); + //$container.removeClass('checked'); + $containerToggle.addClass( 'hidden' ); + $lbl.trigger( 'unchecked.fu.checkbox' ); + } + + $lbl.trigger( 'changed.fu.checkbox', checked ); + }, + + setDisabledState: function( element, disabled ) { + var $chk = element; + var $lbl = this.$label; + + if ( disabled ) { + this.$chk.prop( 'disabled', true ); + $lbl.addClass( 'disabled' ); + $lbl.trigger( 'disabled.fu.checkbox' ); + } else { + this.$chk.prop( 'disabled', false ); + $lbl.removeClass( 'disabled' ); + $lbl.trigger( 'enabled.fu.checkbox' ); + } + }, + + itemchecked: function( evt ) { + var $chk = $( evt.target ); + var checked = $chk.prop( 'checked' ); + + this.setCheckedState( $chk, checked ); + }, + + toggle: function() { + var checked = this.isChecked(); + + if ( checked ) { + this.uncheck(); + } else { + this.check(); + } + }, + + check: function() { + this.setCheckedState( this.$chk, true ); + }, + + uncheck: function() { + this.setCheckedState( this.$chk, false ); + }, + + isChecked: function() { + var checked = this.$chk.prop( 'checked' ); + return checked; + }, + + enable: function() { + this.setDisabledState( this.$chk, false ); + }, + + disable: function() { + this.setDisabledState( this.$chk, true ); + }, + + destroy: function() { + this.$label.remove(); + // remove any external bindings + // [none] + // empty elements to return to original markup + // [none] + return this.$label[ 0 ].outerHTML; + } + }; + + Checkbox.prototype.getValue = Checkbox.prototype.isChecked; + + // CHECKBOX PLUGIN DEFINITION + + $.fn.checkbox = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.checkbox' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.checkbox', ( data = new Checkbox( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.checkbox.defaults = {}; + + $.fn.checkbox.Constructor = Checkbox; + + $.fn.checkbox.noConflict = function() { + $.fn.checkbox = old; + return this; + }; + + // DATA-API + + $( document ).on( 'mouseover.fu.checkbox.data-api', '[data-initialize=checkbox]', function( e ) { + var $control = $( e.target ); + if ( !$control.data( 'fu.checkbox' ) ) { + $control.checkbox( $control.data() ); + } + } ); + + // Must be domReady for AMD compatibility + $( function() { + $( '[data-initialize=checkbox]' ).each( function() { + var $this = $( this ); + if ( !$this.data( 'fu.checkbox' ) ) { + $this.checkbox( $this.data() ); + } + } ); + } ); + + + + } )( jQuery ); + + + ( function( $ ) { + + /* + * Fuel UX Combobox + * https://github.com/ExactTarget/fuelux + * + * Copyright (c) 2014 ExactTarget + * Licensed under the BSD New license. + */ + + + + // -- BEGIN MODULE CODE HERE -- + + var old = $.fn.combobox; + + + // COMBOBOX CONSTRUCTOR AND PROTOTYPE + + var Combobox = function( element, options ) { + this.$element = $( element ); + this.options = $.extend( {}, $.fn.combobox.defaults, options ); + + this.$dropMenu = this.$element.find( '.dropdown-menu' ); + this.$input = this.$element.find( 'input' ); + this.$button = this.$element.find( '.btn' ); + this.$inputGroupBtn = this.$element.find( '.input-group-btn' ); + + this.$element.on( 'click.fu.combobox', 'a', $.proxy( this.itemclicked, this ) ); + this.$element.on( 'change.fu.combobox', 'input', $.proxy( this.inputchanged, this ) ); + this.$element.on( 'shown.bs.dropdown', $.proxy( this.menuShown, this ) ); + this.$input.on( 'keyup.fu.combobox', $.proxy( this.keypress, this ) ); + + // set default selection + this.setDefaultSelection(); + + // if dropdown is empty, disable it + var items = this.$dropMenu.children( 'li' ); + if ( items.length === 0 ) { + this.$button.addClass( 'disabled' ); + } + + // filter on load in case the first thing they do is press navigational key to pop open the menu + if ( this.options.filterOnKeypress ) { + this.options.filter( this.$dropMenu.find( 'li' ), this.$input.val(), this ); + } + + }; + + Combobox.prototype = { + + constructor: Combobox, + + destroy: function() { + this.$element.remove(); + // remove any external bindings + // [none] + + // set input value attrbute in markup + this.$element.find( 'input' ).each( function() { + $( this ).attr( 'value', $( this ).val() ); + } ); + + // empty elements to return to original markup + // [none] + + return this.$element[ 0 ].outerHTML; + }, + + doSelect: function( $item ) { + + if ( typeof $item[ 0 ] !== 'undefined' ) { + // remove selection from old item, may result in remove and + // re-addition of class if item is the same + this.$element.find( 'li.selected:first' ).removeClass( 'selected' ); + + // add selection to new item + this.$selectedItem = $item; + this.$selectedItem.addClass( 'selected' ); + + // update input + this.$input.val( this.$selectedItem.text().trim() ); + } else { + // this is a custom input, not in the menu + this.$selectedItem = null; + this.$element.find( 'li.selected:first' ).removeClass( 'selected' ); + } + }, + + clearSelection: function() { + this.$selectedItem = null; + this.$input.val( '' ); + this.$dropMenu.find( 'li' ).removeClass( 'selected' ); + }, + + menuShown: function() { + if ( this.options.autoResizeMenu ) { + this.resizeMenu(); + } + }, + + resizeMenu: function() { + var width = this.$element.outerWidth(); + this.$dropMenu.outerWidth( width ); + }, + + selectedItem: function() { + var item = this.$selectedItem; + var data = {}; + + if ( item ) { + var txt = this.$selectedItem.text().trim(); + data = $.extend( { + text: txt + }, this.$selectedItem.data() ); + } else { + data = { + text: this.$input.val().trim(), + notFound: true + }; + } + + return data; + }, + + selectByText: function( text ) { + var $item = $( [] ); + this.$element.find( 'li' ).each( function() { + if ( ( this.textContent || this.innerText || $( this ).text() || '' ).trim().toLowerCase() === ( text || '' ).trim().toLowerCase() ) { + $item = $( this ); + return false; + } + } ); + + this.doSelect( $item ); + }, + + selectByValue: function( value ) { + var selector = 'li[data-value="' + value + '"]'; + this.selectBySelector( selector ); + }, + + selectByIndex: function( index ) { + // zero-based index + var selector = 'li:eq(' + index + ')'; + this.selectBySelector( selector ); + }, + + selectBySelector: function( selector ) { + var $item = this.$element.find( selector ); + this.doSelect( $item ); + }, + + setDefaultSelection: function() { + var selector = 'li[data-selected=true]:first'; + var item = this.$element.find( selector ); + + if ( item.length > 0 ) { + // select by data-attribute + this.selectBySelector( selector ); + item.removeData( 'selected' ); + item.removeAttr( 'data-selected' ); + } + }, + + enable: function() { + this.$element.removeClass( 'disabled' ); + this.$input.removeAttr( 'disabled' ); + this.$button.removeClass( 'disabled' ); + }, + + disable: function() { + this.$element.addClass( 'disabled' ); + this.$input.attr( 'disabled', true ); + this.$button.addClass( 'disabled' ); + }, + + itemclicked: function( e ) { + this.$selectedItem = $( e.target ).parent(); + + // set input text and trigger input change event marked as synthetic + this.$input.val( this.$selectedItem.text().trim() ).trigger( 'change', { + synthetic: true + } ); + + // pass object including text and any data-attributes + // to onchange event + var data = this.selectedItem(); + + // trigger changed event + this.$element.trigger( 'changed.fu.combobox', data ); + + e.preventDefault(); + + // return focus to control after selecting an option + this.$element.find( '.dropdown-toggle' ).focus(); + }, + + keypress: function( e ) { + var ENTER = 13; + //var TAB = 9; + var ESC = 27; + var LEFT = 37; + var UP = 38; + var RIGHT = 39; + var DOWN = 40; + + var IS_NAVIGATIONAL = ( + e.which === UP || + e.which === DOWN || + e.which === LEFT || + e.which === RIGHT + ); + + if ( this.options.showOptionsOnKeypress && !this.$inputGroupBtn.hasClass( 'open' ) ) { + this.$button.dropdown( 'toggle' ); + this.$input.focus(); + } + + if ( e.which === ENTER ) { + e.preventDefault(); + + var selected = this.$dropMenu.find( 'li.selected' ).text().trim(); + if ( selected.length > 0 ) { + this.selectByText( selected ); + } else { + this.selectByText( this.$input.val() ); + } + + this.$inputGroupBtn.removeClass( 'open' ); + } else if ( e.which === ESC ) { + e.preventDefault(); + this.clearSelection(); + this.$inputGroupBtn.removeClass( 'open' ); + } else if ( this.options.showOptionsOnKeypress ) { + if ( e.which === DOWN || e.which === UP ) { + e.preventDefault(); + var $selected = this.$dropMenu.find( 'li.selected' ); + if ( $selected.length > 0 ) { + if ( e.which === DOWN ) { + $selected = $selected.next( ':not(.hidden)' ); + } else { + $selected = $selected.prev( ':not(.hidden)' ); + } + } + + if ( $selected.length === 0 ) { + if ( e.which === DOWN ) { + $selected = this.$dropMenu.find( 'li:not(.hidden):first' ); + } else { + $selected = this.$dropMenu.find( 'li:not(.hidden):last' ); + } + } + this.doSelect( $selected ); + } + } + + // Avoid filtering on navigation key presses + if ( this.options.filterOnKeypress && !IS_NAVIGATIONAL ) { + this.options.filter( this.$dropMenu.find( 'li' ), this.$input.val(), this ); + } + + this.previousKeyPress = e.which; + }, + + inputchanged: function( e, extra ) { + var val = $( e.target ).val(); + // skip processing for internally-generated synthetic event + // to avoid double processing + if ( extra && extra.synthetic ) { + this.selectByText( val ); + return; + } + this.selectByText( val ); + + // find match based on input + // if no match, pass the input value + var data = this.selectedItem(); + if ( data.text.length === 0 ) { + data = { + text: val + }; + } + + // trigger changed event + this.$element.trigger( 'changed.fu.combobox', data ); + } + }; + + Combobox.prototype.getValue = Combobox.prototype.selectedItem; + + // COMBOBOX PLUGIN DEFINITION + + $.fn.combobox = function( option ) { + var args = Array.prototype.slice.call( arguments, 1 ); + var methodReturn; + + var $set = this.each( function() { + var $this = $( this ); + var data = $this.data( 'fu.combobox' ); + var options = typeof option === 'object' && option; + + if ( !data ) { + $this.data( 'fu.combobox', ( data = new Combobox( this, options ) ) ); + } + + if ( typeof option === 'string' ) { + methodReturn = data[ option ].apply( data, args ); + } + } ); + + return ( methodReturn === undefined ) ? $set : methodReturn; + }; + + $.fn.combobox.defaults = { + autoResizeMenu: true, + filterOnKeypress: false, + showOptionsOnKeypress: false, + filter: function filter( list, predicate, self ) { + var visible = 0; + self.$dropMenu.find( '.empty-indicator' ).remove(); + + list.each( function( i ) { + var $li = $( this ); + var text = $( this ).text().trim(); + + $li.removeClass(); + + if ( text === predicate ) { + $li.addClass( 'text-success' ); + visible++; + } else if ( text.substr( 0, predicate.length ) === predicate ) { + $li.addClass( 'text-info' ); + visible++; + } else { + $li.addClass( 'hidden' ); + } + } ); + + if ( visible === 0 ) { + self.$dropMenu.append( '