fuelux-rails 2.1.3 → 2.2.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -344,7 +344,7 @@ define("almond", function(){});
344
344
  (function (root) { var amdExports; define('bootstrap/bootstrap-transition',['jquery'], function () { (function () {
345
345
 
346
346
  /* ===================================================
347
- * bootstrap-transition.js v2.2.1
347
+ * bootstrap-transition.js v2.2.2
348
348
  * http://twitter.github.com/bootstrap/javascript.html#transitions
349
349
  * ===================================================
350
350
  * Copyright 2012 Twitter, Inc.
@@ -413,7 +413,7 @@ define("almond", function(){});
413
413
  (function (root) { var amdExports; define('bootstrap/bootstrap-affix',['bootstrap/bootstrap-transition'], function () { (function () {
414
414
 
415
415
  /* ==========================================================
416
- * bootstrap-affix.js v2.2.1
416
+ * bootstrap-affix.js v2.2.2
417
417
  * http://twitter.github.com/bootstrap/javascript.html#affix
418
418
  * ==========================================================
419
419
  * Copyright 2012 Twitter, Inc.
@@ -482,6 +482,8 @@ define("almond", function(){});
482
482
  /* AFFIX PLUGIN DEFINITION
483
483
  * ======================= */
484
484
 
485
+ var old = $.fn.affix
486
+
485
487
  $.fn.affix = function (option) {
486
488
  return this.each(function () {
487
489
  var $this = $(this)
@@ -499,6 +501,15 @@ define("almond", function(){});
499
501
  }
500
502
 
501
503
 
504
+ /* AFFIX NO CONFLICT
505
+ * ================= */
506
+
507
+ $.fn.affix.noConflict = function () {
508
+ $.fn.affix = old
509
+ return this
510
+ }
511
+
512
+
502
513
  /* AFFIX DATA-API
503
514
  * ============== */
504
515
 
@@ -528,7 +539,7 @@ define("almond", function(){});
528
539
  (function (root) { var amdExports; define('bootstrap/bootstrap-alert',['bootstrap/bootstrap-transition'], function () { (function () {
529
540
 
530
541
  /* ==========================================================
531
- * bootstrap-alert.js v2.2.1
542
+ * bootstrap-alert.js v2.2.2
532
543
  * http://twitter.github.com/bootstrap/javascript.html#alerts
533
544
  * ==========================================================
534
545
  * Copyright 2012 Twitter, Inc.
@@ -597,6 +608,8 @@ define("almond", function(){});
597
608
  /* ALERT PLUGIN DEFINITION
598
609
  * ======================= */
599
610
 
611
+ var old = $.fn.alert
612
+
600
613
  $.fn.alert = function (option) {
601
614
  return this.each(function () {
602
615
  var $this = $(this)
@@ -609,6 +622,15 @@ define("almond", function(){});
609
622
  $.fn.alert.Constructor = Alert
610
623
 
611
624
 
625
+ /* ALERT NO CONFLICT
626
+ * ================= */
627
+
628
+ $.fn.alert.noConflict = function () {
629
+ $.fn.alert = old
630
+ return this
631
+ }
632
+
633
+
612
634
  /* ALERT DATA-API
613
635
  * ============== */
614
636
 
@@ -625,7 +647,7 @@ define("almond", function(){});
625
647
  (function (root) { var amdExports; define('bootstrap/bootstrap-button',['bootstrap/bootstrap-transition'], function () { (function () {
626
648
 
627
649
  /* ============================================================
628
- * bootstrap-button.js v2.2.1
650
+ * bootstrap-button.js v2.2.2
629
651
  * http://twitter.github.com/bootstrap/javascript.html#buttons
630
652
  * ============================================================
631
653
  * Copyright 2012 Twitter, Inc.
@@ -690,6 +712,8 @@ define("almond", function(){});
690
712
  /* BUTTON PLUGIN DEFINITION
691
713
  * ======================== */
692
714
 
715
+ var old = $.fn.button
716
+
693
717
  $.fn.button = function (option) {
694
718
  return this.each(function () {
695
719
  var $this = $(this)
@@ -708,6 +732,15 @@ define("almond", function(){});
708
732
  $.fn.button.Constructor = Button
709
733
 
710
734
 
735
+ /* BUTTON NO CONFLICT
736
+ * ================== */
737
+
738
+ $.fn.button.noConflict = function () {
739
+ $.fn.button = old
740
+ return this
741
+ }
742
+
743
+
711
744
  /* BUTTON DATA-API
712
745
  * =============== */
713
746
 
@@ -728,7 +761,7 @@ define("almond", function(){});
728
761
  (function (root) { var amdExports; define('bootstrap/bootstrap-carousel',['bootstrap/bootstrap-transition'], function () { (function () {
729
762
 
730
763
  /* ==========================================================
731
- * bootstrap-carousel.js v2.2.1
764
+ * bootstrap-carousel.js v2.2.2
732
765
  * http://twitter.github.com/bootstrap/javascript.html#carousel
733
766
  * ==========================================================
734
767
  * Copyright 2012 Twitter, Inc.
@@ -758,7 +791,6 @@ define("almond", function(){});
758
791
  var Carousel = function (element, options) {
759
792
  this.$element = $(element)
760
793
  this.options = options
761
- this.options.slide && this.slide(this.options.slide)
762
794
  this.options.pause == 'hover' && this.$element
763
795
  .on('mouseenter', $.proxy(this.pause, this))
764
796
  .on('mouseleave', $.proxy(this.cycle, this))
@@ -870,6 +902,8 @@ define("almond", function(){});
870
902
  /* CAROUSEL PLUGIN DEFINITION
871
903
  * ========================== */
872
904
 
905
+ var old = $.fn.carousel
906
+
873
907
  $.fn.carousel = function (option) {
874
908
  return this.each(function () {
875
909
  var $this = $(this)
@@ -891,6 +925,14 @@ define("almond", function(){});
891
925
  $.fn.carousel.Constructor = Carousel
892
926
 
893
927
 
928
+ /* CAROUSEL NO CONFLICT
929
+ * ==================== */
930
+
931
+ $.fn.carousel.noConflict = function () {
932
+ $.fn.carousel = old
933
+ return this
934
+ }
935
+
894
936
  /* CAROUSEL DATA-API
895
937
  * ================= */
896
938
 
@@ -913,7 +955,7 @@ define("almond", function(){});
913
955
  (function (root) { var amdExports; define('bootstrap/bootstrap-collapse',['bootstrap/bootstrap-transition'], function () { (function () {
914
956
 
915
957
  /* =============================================================
916
- * bootstrap-collapse.js v2.2.1
958
+ * bootstrap-collapse.js v2.2.2
917
959
  * http://twitter.github.com/bootstrap/javascript.html#collapse
918
960
  * =============================================================
919
961
  * Copyright 2012 Twitter, Inc.
@@ -1034,8 +1076,10 @@ define("almond", function(){});
1034
1076
  }
1035
1077
 
1036
1078
 
1037
- /* COLLAPSIBLE PLUGIN DEFINITION
1038
- * ============================== */
1079
+ /* COLLAPSE PLUGIN DEFINITION
1080
+ * ========================== */
1081
+
1082
+ var old = $.fn.collapse
1039
1083
 
1040
1084
  $.fn.collapse = function (option) {
1041
1085
  return this.each(function () {
@@ -1054,9 +1098,18 @@ define("almond", function(){});
1054
1098
  $.fn.collapse.Constructor = Collapse
1055
1099
 
1056
1100
 
1057
- /* COLLAPSIBLE DATA-API
1101
+ /* COLLAPSE NO CONFLICT
1058
1102
  * ==================== */
1059
1103
 
1104
+ $.fn.collapse.noConflict = function () {
1105
+ $.fn.collapse = old
1106
+ return this
1107
+ }
1108
+
1109
+
1110
+ /* COLLAPSE DATA-API
1111
+ * ================= */
1112
+
1060
1113
  $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
1061
1114
  var $this = $(this), href
1062
1115
  , target = $this.attr('data-target')
@@ -1078,7 +1131,7 @@ define("almond", function(){});
1078
1131
  (function (root) { var amdExports; define('bootstrap/bootstrap-dropdown',['bootstrap/bootstrap-transition'], function () { (function () {
1079
1132
 
1080
1133
  /* ============================================================
1081
- * bootstrap-dropdown.js v2.2.1
1134
+ * bootstrap-dropdown.js v2.2.2
1082
1135
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
1083
1136
  * ============================================================
1084
1137
  * Copyright 2012 Twitter, Inc.
@@ -1132,9 +1185,10 @@ define("almond", function(){});
1132
1185
 
1133
1186
  if (!isActive) {
1134
1187
  $parent.toggleClass('open')
1135
- $this.focus()
1136
1188
  }
1137
1189
 
1190
+ $this.focus()
1191
+
1138
1192
  return false
1139
1193
  }
1140
1194
 
@@ -1161,7 +1215,7 @@ define("almond", function(){});
1161
1215
 
1162
1216
  if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
1163
1217
 
1164
- $items = $('[role=menu] li:not(.divider) a', $parent)
1218
+ $items = $('[role=menu] li:not(.divider):visible a', $parent)
1165
1219
 
1166
1220
  if (!$items.length) return
1167
1221
 
@@ -1203,6 +1257,8 @@ define("almond", function(){});
1203
1257
  /* DROPDOWN PLUGIN DEFINITION
1204
1258
  * ========================== */
1205
1259
 
1260
+ var old = $.fn.dropdown
1261
+
1206
1262
  $.fn.dropdown = function (option) {
1207
1263
  return this.each(function () {
1208
1264
  var $this = $(this)
@@ -1215,12 +1271,22 @@ define("almond", function(){});
1215
1271
  $.fn.dropdown.Constructor = Dropdown
1216
1272
 
1217
1273
 
1274
+ /* DROPDOWN NO CONFLICT
1275
+ * ==================== */
1276
+
1277
+ $.fn.dropdown.noConflict = function () {
1278
+ $.fn.dropdown = old
1279
+ return this
1280
+ }
1281
+
1282
+
1218
1283
  /* APPLY TO STANDARD DROPDOWN ELEMENTS
1219
1284
  * =================================== */
1220
1285
 
1221
1286
  $(document)
1222
1287
  .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
1223
1288
  .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
1289
+ .on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() })
1224
1290
  .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
1225
1291
  .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
1226
1292
 
@@ -1235,7 +1301,7 @@ define("almond", function(){});
1235
1301
  (function (root) { var amdExports; define('bootstrap/bootstrap-modal',['bootstrap/bootstrap-transition'], function () { (function () {
1236
1302
 
1237
1303
  /* =========================================================
1238
- * bootstrap-modal.js v2.2.1
1304
+ * bootstrap-modal.js v2.2.2
1239
1305
  * http://twitter.github.com/bootstrap/javascript.html#modals
1240
1306
  * =========================================================
1241
1307
  * Copyright 2012 Twitter, Inc.
@@ -1429,6 +1495,8 @@ define("almond", function(){});
1429
1495
  /* MODAL PLUGIN DEFINITION
1430
1496
  * ======================= */
1431
1497
 
1498
+ var old = $.fn.modal
1499
+
1432
1500
  $.fn.modal = function (option) {
1433
1501
  return this.each(function () {
1434
1502
  var $this = $(this)
@@ -1449,6 +1517,15 @@ define("almond", function(){});
1449
1517
  $.fn.modal.Constructor = Modal
1450
1518
 
1451
1519
 
1520
+ /* MODAL NO CONFLICT
1521
+ * ================= */
1522
+
1523
+ $.fn.modal.noConflict = function () {
1524
+ $.fn.modal = old
1525
+ return this
1526
+ }
1527
+
1528
+
1452
1529
  /* MODAL DATA-API
1453
1530
  * ============== */
1454
1531
 
@@ -1479,7 +1556,7 @@ define("almond", function(){});
1479
1556
  (function (root) { var amdExports; define('bootstrap/bootstrap-tooltip',['bootstrap/bootstrap-transition'], function () { (function () {
1480
1557
 
1481
1558
  /* ===========================================================
1482
- * bootstrap-tooltip.js v2.2.1
1559
+ * bootstrap-tooltip.js v2.2.2
1483
1560
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
1484
1561
  * Inspired by the original jQuery.tipsy by Jason Frame
1485
1562
  * ===========================================================
@@ -1730,6 +1807,8 @@ define("almond", function(){});
1730
1807
  /* TOOLTIP PLUGIN DEFINITION
1731
1808
  * ========================= */
1732
1809
 
1810
+ var old = $.fn.tooltip
1811
+
1733
1812
  $.fn.tooltip = function ( option ) {
1734
1813
  return this.each(function () {
1735
1814
  var $this = $(this)
@@ -1753,6 +1832,15 @@ define("almond", function(){});
1753
1832
  , html: false
1754
1833
  }
1755
1834
 
1835
+
1836
+ /* TOOLTIP NO CONFLICT
1837
+ * =================== */
1838
+
1839
+ $.fn.tooltip.noConflict = function () {
1840
+ $.fn.tooltip = old
1841
+ return this
1842
+ }
1843
+
1756
1844
  }(window.jQuery);
1757
1845
 
1758
1846
 
@@ -1764,7 +1852,7 @@ define("almond", function(){});
1764
1852
  (function (root) { var amdExports; define('bootstrap/bootstrap-popover',['bootstrap/bootstrap-transition','bootstrap/bootstrap-tooltip'], function () { (function () {
1765
1853
 
1766
1854
  /* ===========================================================
1767
- * bootstrap-popover.js v2.2.1
1855
+ * bootstrap-popover.js v2.2.2
1768
1856
  * http://twitter.github.com/bootstrap/javascript.html#popovers
1769
1857
  * ===========================================================
1770
1858
  * Copyright 2012 Twitter, Inc.
@@ -1809,7 +1897,7 @@ define("almond", function(){});
1809
1897
  , content = this.getContent()
1810
1898
 
1811
1899
  $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1812
- $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
1900
+ $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
1813
1901
 
1814
1902
  $tip.removeClass('fade top bottom left right in')
1815
1903
  }
@@ -1846,6 +1934,8 @@ define("almond", function(){});
1846
1934
  /* POPOVER PLUGIN DEFINITION
1847
1935
  * ======================= */
1848
1936
 
1937
+ var old = $.fn.popover
1938
+
1849
1939
  $.fn.popover = function (option) {
1850
1940
  return this.each(function () {
1851
1941
  var $this = $(this)
@@ -1862,9 +1952,18 @@ define("almond", function(){});
1862
1952
  placement: 'right'
1863
1953
  , trigger: 'click'
1864
1954
  , content: ''
1865
- , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1955
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'
1866
1956
  })
1867
1957
 
1958
+
1959
+ /* POPOVER NO CONFLICT
1960
+ * =================== */
1961
+
1962
+ $.fn.popover.noConflict = function () {
1963
+ $.fn.popover = old
1964
+ return this
1965
+ }
1966
+
1868
1967
  }(window.jQuery);
1869
1968
 
1870
1969
 
@@ -1876,7 +1975,7 @@ define("almond", function(){});
1876
1975
  (function (root) { var amdExports; define('bootstrap/bootstrap-scrollspy',['bootstrap/bootstrap-transition'], function () { (function () {
1877
1976
 
1878
1977
  /* =============================================================
1879
- * bootstrap-scrollspy.js v2.2.1
1978
+ * bootstrap-scrollspy.js v2.2.2
1880
1979
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1881
1980
  * =============================================================
1882
1981
  * Copyright 2012 Twitter, Inc.
@@ -1936,7 +2035,7 @@ define("almond", function(){});
1936
2035
  , $href = /^#\w/.test(href) && $(href)
1937
2036
  return ( $href
1938
2037
  && $href.length
1939
- && [[ $href.position().top, href ]] ) || null
2038
+ && [[ $href.position().top + self.$scrollElement.scrollTop(), href ]] ) || null
1940
2039
  })
1941
2040
  .sort(function (a, b) { return a[0] - b[0] })
1942
2041
  .each(function () {
@@ -1998,6 +2097,8 @@ define("almond", function(){});
1998
2097
  /* SCROLLSPY PLUGIN DEFINITION
1999
2098
  * =========================== */
2000
2099
 
2100
+ var old = $.fn.scrollspy
2101
+
2001
2102
  $.fn.scrollspy = function (option) {
2002
2103
  return this.each(function () {
2003
2104
  var $this = $(this)
@@ -2015,6 +2116,15 @@ define("almond", function(){});
2015
2116
  }
2016
2117
 
2017
2118
 
2119
+ /* SCROLLSPY NO CONFLICT
2120
+ * ===================== */
2121
+
2122
+ $.fn.scrollspy.noConflict = function () {
2123
+ $.fn.scrollspy = old
2124
+ return this
2125
+ }
2126
+
2127
+
2018
2128
  /* SCROLLSPY DATA-API
2019
2129
  * ================== */
2020
2130
 
@@ -2036,7 +2146,7 @@ define("almond", function(){});
2036
2146
  (function (root) { var amdExports; define('bootstrap/bootstrap-tab',['bootstrap/bootstrap-transition'], function () { (function () {
2037
2147
 
2038
2148
  /* ========================================================
2039
- * bootstrap-tab.js v2.2.1
2149
+ * bootstrap-tab.js v2.2.2
2040
2150
  * http://twitter.github.com/bootstrap/javascript.html#tabs
2041
2151
  * ========================================================
2042
2152
  * Copyright 2012 Twitter, Inc.
@@ -2147,6 +2257,8 @@ define("almond", function(){});
2147
2257
  /* TAB PLUGIN DEFINITION
2148
2258
  * ===================== */
2149
2259
 
2260
+ var old = $.fn.tab
2261
+
2150
2262
  $.fn.tab = function ( option ) {
2151
2263
  return this.each(function () {
2152
2264
  var $this = $(this)
@@ -2159,6 +2271,15 @@ define("almond", function(){});
2159
2271
  $.fn.tab.Constructor = Tab
2160
2272
 
2161
2273
 
2274
+ /* TAB NO CONFLICT
2275
+ * =============== */
2276
+
2277
+ $.fn.tab.noConflict = function () {
2278
+ $.fn.tab = old
2279
+ return this
2280
+ }
2281
+
2282
+
2162
2283
  /* TAB DATA-API
2163
2284
  * ============ */
2164
2285
 
@@ -2178,7 +2299,7 @@ define("almond", function(){});
2178
2299
  (function (root) { var amdExports; define('bootstrap/bootstrap-typeahead',['bootstrap/bootstrap-transition'], function () { (function () {
2179
2300
 
2180
2301
  /* =============================================================
2181
- * bootstrap-typeahead.js v2.2.1
2302
+ * bootstrap-typeahead.js v2.2.2
2182
2303
  * http://twitter.github.com/bootstrap/javascript.html#typeahead
2183
2304
  * =============================================================
2184
2305
  * Copyright 2012 Twitter, Inc.
@@ -2212,8 +2333,8 @@ define("almond", function(){});
2212
2333
  this.sorter = this.options.sorter || this.sorter
2213
2334
  this.highlighter = this.options.highlighter || this.highlighter
2214
2335
  this.updater = this.options.updater || this.updater
2215
- this.$menu = $(this.options.menu).appendTo('body')
2216
2336
  this.source = this.options.source
2337
+ this.$menu = $(this.options.menu)
2217
2338
  this.shown = false
2218
2339
  this.listen()
2219
2340
  }
@@ -2235,16 +2356,18 @@ define("almond", function(){});
2235
2356
  }
2236
2357
 
2237
2358
  , show: function () {
2238
- var pos = $.extend({}, this.$element.offset(), {
2359
+ var pos = $.extend({}, this.$element.position(), {
2239
2360
  height: this.$element[0].offsetHeight
2240
2361
  })
2241
2362
 
2242
- this.$menu.css({
2243
- top: pos.top + pos.height
2244
- , left: pos.left
2245
- })
2363
+ this.$menu
2364
+ .insertAfter(this.$element)
2365
+ .css({
2366
+ top: pos.top + pos.height
2367
+ , left: pos.left
2368
+ })
2369
+ .show()
2246
2370
 
2247
- this.$menu.show()
2248
2371
  this.shown = true
2249
2372
  return this
2250
2373
  }
@@ -2396,7 +2519,7 @@ define("almond", function(){});
2396
2519
  }
2397
2520
 
2398
2521
  , keydown: function (e) {
2399
- this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
2522
+ this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
2400
2523
  this.move(e)
2401
2524
  }
2402
2525
 
@@ -2455,6 +2578,8 @@ define("almond", function(){});
2455
2578
  /* TYPEAHEAD PLUGIN DEFINITION
2456
2579
  * =========================== */
2457
2580
 
2581
+ var old = $.fn.typeahead
2582
+
2458
2583
  $.fn.typeahead = function (option) {
2459
2584
  return this.each(function () {
2460
2585
  var $this = $(this)
@@ -2476,7 +2601,16 @@ define("almond", function(){});
2476
2601
  $.fn.typeahead.Constructor = Typeahead
2477
2602
 
2478
2603
 
2479
- /* TYPEAHEAD DATA-API
2604
+ /* TYPEAHEAD NO CONFLICT
2605
+ * =================== */
2606
+
2607
+ $.fn.typeahead.noConflict = function () {
2608
+ $.fn.typeahead = old
2609
+ return this
2610
+ }
2611
+
2612
+
2613
+ /* TYPEAHEAD DATA-API
2480
2614
  * ================== */
2481
2615
 
2482
2616
  $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
@@ -2495,40 +2629,277 @@ define("almond", function(){});
2495
2629
  }); }(this));
2496
2630
 
2497
2631
  /*
2498
- * Fuel UX Combobox
2632
+ * Fuel UX Checkbox
2499
2633
  * https://github.com/ExactTarget/fuelux
2500
2634
  *
2501
2635
  * Copyright (c) 2012 ExactTarget
2502
2636
  * Licensed under the MIT license.
2503
2637
  */
2504
2638
 
2505
- define('fuelux/combobox',['require','jquery'],function(require) {
2506
-
2639
+ define('fuelux/checkbox',['require','jquery'],function (require) {
2640
+
2507
2641
  var $ = require('jquery');
2508
2642
 
2509
2643
 
2644
+ // CHECKBOX CONSTRUCTOR AND PROTOTYPE
2645
+
2646
+ var Checkbox = function (element, options) {
2647
+
2648
+ this.$element = $(element);
2649
+ this.options = $.extend({}, $.fn.checkbox.defaults, options);
2650
+
2651
+ // cache elements
2652
+ this.$label = this.$element.parent();
2653
+ this.$icon = this.$label.find('i');
2654
+ this.$chk = this.$label.find('input[type=checkbox]');
2655
+
2656
+ // set default state
2657
+ this.setState(this.$chk);
2658
+
2659
+ // handle events
2660
+ this.$chk.on('change', $.proxy(this.itemchecked, this));
2661
+ };
2662
+
2663
+ Checkbox.prototype = {
2664
+
2665
+ constructor: Checkbox,
2666
+
2667
+ setState: function ($chk) {
2668
+ var checked = $chk.is(':checked');
2669
+ var disabled = $chk.is(':disabled');
2670
+
2671
+ // reset classes
2672
+ this.$icon.removeClass('checked').removeClass('disabled');
2673
+
2674
+ // set state of checkbox
2675
+ if (checked === true) {
2676
+ this.$icon.addClass('checked');
2677
+ }
2678
+ if (disabled === true) {
2679
+ this.$icon.addClass('disabled');
2680
+ }
2681
+ },
2682
+
2683
+ enable: function () {
2684
+ this.$chk.attr('disabled', false);
2685
+ this.$icon.removeClass('disabled');
2686
+ },
2687
+
2688
+ disable: function () {
2689
+ this.$chk.attr('disabled', true);
2690
+ this.$icon.addClass('disabled');
2691
+ },
2692
+
2693
+ toggle: function () {
2694
+ this.$chk.click();
2695
+ },
2696
+
2697
+ itemchecked: function (e) {
2698
+ var chk = $(e.target);
2699
+ this.setState(chk);
2700
+ }
2701
+ };
2702
+
2703
+
2704
+ // CHECKBOX PLUGIN DEFINITION
2705
+
2706
+ $.fn.checkbox = function (option, value) {
2707
+ var methodReturn;
2708
+
2709
+ var $set = this.each(function () {
2710
+ var $this = $(this);
2711
+ var data = $this.data('checkbox');
2712
+ var options = typeof option === 'object' && option;
2713
+
2714
+ if (!data) $this.data('checkbox', (data = new Checkbox(this, options)));
2715
+ if (typeof option === 'string') methodReturn = data[option](value);
2716
+ });
2717
+
2718
+ return (methodReturn === undefined) ? $set : methodReturn;
2719
+ };
2720
+
2721
+ $.fn.checkbox.defaults = {};
2722
+
2723
+ $.fn.checkbox.Constructor = Checkbox;
2724
+
2725
+
2726
+ // CHECKBOX DATA-API
2727
+
2728
+ $(function () {
2729
+ $(window).on('load', function () {
2730
+ //$('i.checkbox').each(function () {
2731
+ $('.checkbox-custom > input[type=checkbox]').each(function () {
2732
+ var $this = $(this);
2733
+ if ($this.data('checkbox')) return;
2734
+ $this.checkbox($this.data());
2735
+ });
2736
+ });
2737
+ });
2738
+
2739
+ });
2740
+
2741
+ /*
2742
+ * Fuel UX Utilities
2743
+ * https://github.com/ExactTarget/fuelux
2744
+ *
2745
+ * Copyright (c) 2012 ExactTarget
2746
+ * Licensed under the MIT license.
2747
+ */
2748
+
2749
+ define('fuelux/util',['require','jquery'],function (require) {
2750
+
2751
+ var $ = require('jquery');
2752
+
2753
+ // custom case-insensitive match expression
2754
+ function fuelTextExactCI(elem, text) {
2755
+ return (elem.textContent || elem.innerText || $(elem).text() || '').toLowerCase() === (text || '').toLowerCase();
2756
+ }
2757
+
2758
+ $.expr[':'].fuelTextExactCI = $.expr.createPseudo ?
2759
+ $.expr.createPseudo(function (text) {
2760
+ return function (elem) {
2761
+ return fuelTextExactCI(elem, text);
2762
+ };
2763
+ }) :
2764
+ function (elem, i, match) {
2765
+ return fuelTextExactCI(elem, match[3]);
2766
+ };
2767
+
2768
+ });
2769
+ /*
2770
+ * Fuel UX Combobox
2771
+ * https://github.com/ExactTarget/fuelux
2772
+ *
2773
+ * Copyright (c) 2012 ExactTarget
2774
+ * Licensed under the MIT license.
2775
+ */
2776
+
2777
+ define('fuelux/combobox',['require','jquery','./util'],function (require) {
2778
+
2779
+ var $ = require('jquery');
2780
+ require('./util');
2781
+
2510
2782
  // COMBOBOX CONSTRUCTOR AND PROTOTYPE
2511
2783
 
2512
2784
  var Combobox = function (element, options) {
2513
2785
  this.$element = $(element);
2514
2786
  this.options = $.extend({}, $.fn.combobox.defaults, options);
2515
2787
  this.$element.on('click', 'a', $.proxy(this.itemclicked, this));
2788
+ this.$element.on('change', 'input', $.proxy(this.inputchanged, this));
2516
2789
  this.$input = this.$element.find('input');
2790
+ this.$button = this.$element.find('.btn');
2791
+
2792
+ // set default selection
2793
+ this.setDefaultSelection();
2517
2794
  };
2518
2795
 
2519
2796
  Combobox.prototype = {
2520
2797
 
2521
2798
  constructor: Combobox,
2522
2799
 
2523
- select: function (val) {
2524
- this.$input.val(val).change();
2525
- return this;
2800
+ selectedItem: function () {
2801
+ var item = this.$selectedItem;
2802
+ var data = {};
2803
+
2804
+ if (item) {
2805
+ var txt = this.$selectedItem.text();
2806
+ data = $.extend({ text: txt }, this.$selectedItem.data());
2807
+ }
2808
+ else {
2809
+ data = { text: this.$input.val()};
2810
+ }
2811
+
2812
+ return data;
2813
+ },
2814
+
2815
+ selectByText: function (text) {
2816
+ var selector = 'li:fuelTextExactCI(' + text + ')';
2817
+ this.selectBySelector(selector);
2818
+ },
2819
+
2820
+ selectByValue: function (value) {
2821
+ var selector = 'li[data-value=' + value + ']';
2822
+ this.selectBySelector(selector);
2823
+ },
2824
+
2825
+ selectByIndex: function (index) {
2826
+ // zero-based index
2827
+ var selector = 'li:eq(' + index + ')';
2828
+ this.selectBySelector(selector);
2829
+ },
2830
+
2831
+ selectBySelector: function (selector) {
2832
+ var $item = this.$element.find(selector);
2833
+
2834
+ if (typeof $item[0] !== 'undefined') {
2835
+ this.$selectedItem = $item;
2836
+ this.$input.val(this.$selectedItem.text());
2837
+ }
2838
+ else {
2839
+ this.$selectedItem = null;
2840
+ }
2841
+ },
2842
+
2843
+ setDefaultSelection: function () {
2844
+ var selector = 'li[data-selected=true]:first';
2845
+ var item = this.$element.find(selector);
2846
+ if (item.length === 0) {
2847
+ // select first item
2848
+ this.selectByIndex(0);
2849
+ }
2850
+ else {
2851
+ // select by data-attribute
2852
+ this.selectBySelector(selector);
2853
+ item.removeData('selected');
2854
+ item.removeAttr('data-selected');
2855
+ }
2856
+ },
2857
+
2858
+ enable: function () {
2859
+ this.$input.removeAttr('disabled');
2860
+ this.$button.removeClass('disabled');
2861
+ },
2862
+
2863
+ disable: function () {
2864
+ this.$input.attr('disabled', true);
2865
+ this.$button.addClass('disabled');
2526
2866
  },
2527
2867
 
2528
2868
  itemclicked: function (e) {
2529
- this.select($(e.target).text());
2530
- $('body').click();
2869
+ this.$selectedItem = $(e.target).parent();
2870
+
2871
+ // set input text and trigger input change event marked as synthetic
2872
+ this.$input.val(this.$selectedItem.text()).trigger('change', { synthetic: true });
2873
+
2874
+ // pass object including text and any data-attributes
2875
+ // to onchange event
2876
+ var data = this.selectedItem();
2877
+
2878
+ // trigger changed event
2879
+ this.$element.trigger('changed', data);
2880
+
2531
2881
  e.preventDefault();
2882
+ },
2883
+
2884
+ inputchanged: function (e, extra) {
2885
+
2886
+ // skip processing for internally-generated synthetic event
2887
+ // to avoid double processing
2888
+ if (extra && extra.synthetic) return;
2889
+
2890
+ var val = $(e.target).val();
2891
+ this.selectByText(val);
2892
+
2893
+ // find match based on input
2894
+ // if no match, pass the input value
2895
+ var data = this.selectedItem();
2896
+ if (data.text.length === 0) {
2897
+ data = { text: val };
2898
+ }
2899
+
2900
+ // trigger changed event
2901
+ this.$element.trigger('changed', data);
2902
+
2532
2903
  }
2533
2904
 
2534
2905
  };
@@ -2536,15 +2907,19 @@ define('fuelux/combobox',['require','jquery'],function(require) {
2536
2907
 
2537
2908
  // COMBOBOX PLUGIN DEFINITION
2538
2909
 
2539
- $.fn.combobox = function (option) {
2540
- return this.each(function () {
2910
+ $.fn.combobox = function (option, value) {
2911
+ var methodReturn;
2912
+
2913
+ var $set = this.each(function () {
2541
2914
  var $this = $(this);
2542
2915
  var data = $this.data('combobox');
2543
2916
  var options = typeof option === 'object' && option;
2544
2917
 
2545
2918
  if (!data) $this.data('combobox', (data = new Combobox(this, options)));
2546
- if (typeof option === 'string') data[option]();
2919
+ if (typeof option === 'string') methodReturn = data[option](value);
2547
2920
  });
2921
+
2922
+ return (methodReturn === undefined) ? $set : methodReturn;
2548
2923
  };
2549
2924
 
2550
2925
  $.fn.combobox.defaults = {};
@@ -2555,6 +2930,15 @@ define('fuelux/combobox',['require','jquery'],function(require) {
2555
2930
  // COMBOBOX DATA-API
2556
2931
 
2557
2932
  $(function () {
2933
+
2934
+ $(window).on('load', function () {
2935
+ $('.combobox').each(function () {
2936
+ var $this = $(this);
2937
+ if ($this.data('combobox')) return;
2938
+ $this.combobox($this.data());
2939
+ });
2940
+ });
2941
+
2558
2942
  $('body').on('mousedown.combobox.data-api', '.combobox', function (e) {
2559
2943
  var $this = $(this);
2560
2944
  if ($this.data('combobox')) return;
@@ -2754,6 +3138,11 @@ define('fuelux/datagrid',['require','jquery'],function(require) {
2754
3138
  next: function () {
2755
3139
  this.options.dataOptions.pageIndex++;
2756
3140
  this.renderData();
3141
+ },
3142
+
3143
+ reload: function () {
3144
+ this.options.dataOptions.pageIndex = 0;
3145
+ this.renderData();
2757
3146
  }
2758
3147
 
2759
3148
  };
@@ -2855,6 +3244,116 @@ define('fuelux/pillbox',['require','jquery'],function(require) {
2855
3244
  });
2856
3245
 
2857
3246
 
3247
+ /*
3248
+ * Fuel UX Radio
3249
+ * https://github.com/ExactTarget/fuelux
3250
+ *
3251
+ * Copyright (c) 2012 ExactTarget
3252
+ * Licensed under the MIT license.
3253
+ */
3254
+
3255
+ define('fuelux/radio',['require','jquery'],function (require) {
3256
+
3257
+ var $ = require('jquery');
3258
+
3259
+
3260
+ // RADIO CONSTRUCTOR AND PROTOTYPE
3261
+
3262
+ var Radio = function (element, options) {
3263
+ this.$element = $(element);
3264
+ this.options = $.extend({}, $.fn.radio.defaults, options);
3265
+
3266
+ // cache elements
3267
+ this.$label = this.$element.parent();
3268
+ this.$icon = this.$label.find('i');
3269
+ this.$radio = this.$label.find('input[type=radio]');
3270
+ this.groupName = this.$radio.attr('name');
3271
+
3272
+ // set default state
3273
+ this.setState(this.$radio);
3274
+
3275
+ // handle events
3276
+ this.$radio.on('change', $.proxy(this.itemchecked, this));
3277
+ };
3278
+
3279
+ Radio.prototype = {
3280
+
3281
+ constructor: Radio,
3282
+
3283
+ setState: function ($radio, resetGroupState) {
3284
+ var checked = $radio.is(':checked');
3285
+ var disabled = $radio.is(':disabled');
3286
+
3287
+ // set state of radio
3288
+ if (checked === true) {
3289
+ this.$icon.addClass('checked');
3290
+ }
3291
+ if (disabled === true) {
3292
+ this.$icon.addClass('disabled');
3293
+ }
3294
+ },
3295
+
3296
+ resetGroup: function () {
3297
+ // reset all radio buttons in group
3298
+ $('input[name=' + this.groupName + ']').next().removeClass('checked');
3299
+ },
3300
+
3301
+ enable: function () {
3302
+ this.$radio.attr('disabled', false);
3303
+ this.$icon.removeClass('disabled');
3304
+ },
3305
+
3306
+ disable: function () {
3307
+ this.$radio.attr('disabled', true);
3308
+ this.$icon.addClass('disabled');
3309
+ },
3310
+
3311
+ itemchecked: function (e) {
3312
+ var radio = $(e.target);
3313
+
3314
+ this.resetGroup();
3315
+ this.setState(radio);
3316
+ }
3317
+ };
3318
+
3319
+
3320
+ // RADIO PLUGIN DEFINITION
3321
+
3322
+ $.fn.radio = function (option, value) {
3323
+ var methodReturn;
3324
+
3325
+ var $set = this.each(function () {
3326
+ var $this = $(this);
3327
+ var data = $this.data('radio');
3328
+ var options = typeof option === 'object' && option;
3329
+
3330
+ if (!data) $this.data('radio', (data = new Radio(this, options)));
3331
+ if (typeof option === 'string') methodReturn = data[option](value);
3332
+ });
3333
+
3334
+ return (methodReturn === undefined) ? $set : methodReturn;
3335
+ };
3336
+
3337
+ $.fn.radio.defaults = {};
3338
+
3339
+ $.fn.radio.Constructor = Radio;
3340
+
3341
+
3342
+ // RADIO DATA-API
3343
+
3344
+ $(function () {
3345
+ $(window).on('load', function () {
3346
+ //$('i.radio').each(function () {
3347
+ $('.radio-custom > input[type=radio]').each(function () {
3348
+ var $this = $(this);
3349
+ if ($this.data('radio')) return;
3350
+ $this.radio($this.data());
3351
+ });
3352
+ });
3353
+ });
3354
+
3355
+ });
3356
+
2858
3357
  /*
2859
3358
  * Fuel UX Search
2860
3359
  * https://github.com/ExactTarget/fuelux
@@ -3151,6 +3650,504 @@ define('fuelux/spinner',['require','jquery'],function(require) {
3151
3650
  });
3152
3651
 
3153
3652
  });
3653
+ /*
3654
+ * Fuel UX Select
3655
+ * https://github.com/ExactTarget/fuelux
3656
+ *
3657
+ * Copyright (c) 2012 ExactTarget
3658
+ * Licensed under the MIT license.
3659
+ */
3660
+
3661
+ define('fuelux/select',['require','jquery','./util'],function(require) {
3662
+
3663
+ var $ = require('jquery');
3664
+ require('./util');
3665
+
3666
+ // SELECT CONSTRUCTOR AND PROTOTYPE
3667
+
3668
+ var Select = function (element, options) {
3669
+ this.$element = $(element);
3670
+ this.options = $.extend({}, $.fn.select.defaults, options);
3671
+ this.$element.on('click', 'a', $.proxy(this.itemclicked, this));
3672
+ this.$button = this.$element.find('.btn');
3673
+ this.$label = this.$element.find('.dropdown-label');
3674
+ this.setDefaultSelection();
3675
+
3676
+ if (options.resize === 'auto') {
3677
+ this.resize();
3678
+ }
3679
+ };
3680
+
3681
+ Select.prototype = {
3682
+
3683
+ constructor: Select,
3684
+
3685
+ itemclicked: function (e) {
3686
+ this.$selectedItem = $(e.target).parent();
3687
+ this.$label.text(this.$selectedItem.text());
3688
+
3689
+ // pass object including text and any data-attributes
3690
+ // to onchange event
3691
+ var data = this.selectedItem();
3692
+
3693
+ // trigger changed event
3694
+ this.$element.trigger('changed', data);
3695
+
3696
+ e.preventDefault();
3697
+ },
3698
+
3699
+ resize: function() {
3700
+ var el = $('#selectTextSize')[0];
3701
+
3702
+ // create element if it doesn't exist
3703
+ // used to calculate the length of the longest string
3704
+ if(!el) {
3705
+ $('<div/>').attr({id:'selectTextSize'}).appendTo('body');
3706
+ }
3707
+
3708
+ var width = 0;
3709
+ var newWidth = 0;
3710
+
3711
+ // iterate through each item to find longest string
3712
+ this.$element.find('a').each(function () {
3713
+ var $this = $(this);
3714
+ var txt = $this.text();
3715
+ var $txtSize = $('#selectTextSize');
3716
+ $txtSize.text(txt);
3717
+ newWidth = $txtSize.outerWidth();
3718
+ if(newWidth > width) {
3719
+ width = newWidth;
3720
+ }
3721
+ });
3722
+
3723
+ this.$label.width(width);
3724
+ },
3725
+
3726
+ selectedItem: function() {
3727
+ var txt = this.$selectedItem.text();
3728
+ return $.extend({ text: txt }, this.$selectedItem.data());
3729
+ },
3730
+
3731
+ selectByText: function(text) {
3732
+ var selector = 'li a:fuelTextExactCI(' + text + ')';
3733
+ this.selectBySelector(selector);
3734
+ },
3735
+
3736
+ selectByValue: function(value) {
3737
+ var selector = 'li[data-value=' + value + ']';
3738
+ this.selectBySelector(selector);
3739
+ },
3740
+
3741
+ selectByIndex: function(index) {
3742
+ // zero-based index
3743
+ var selector = 'li:eq(' + index + ')';
3744
+ this.selectBySelector(selector);
3745
+ },
3746
+
3747
+ selectBySelector: function(selector) {
3748
+ var item = this.$element.find(selector);
3749
+
3750
+ this.$selectedItem = item;
3751
+ this.$label.text(this.$selectedItem.text());
3752
+ },
3753
+
3754
+ setDefaultSelection: function() {
3755
+ var selector = 'li[data-selected=true]:first';
3756
+ var item = this.$element.find(selector);
3757
+ if(item.length === 0) {
3758
+ // select first item
3759
+ this.selectByIndex(0);
3760
+ }
3761
+ else {
3762
+ // select by data-attribute
3763
+ this.selectBySelector(selector);
3764
+ item.removeData('selected');
3765
+ item.removeAttr('data-selected');
3766
+ }
3767
+ },
3768
+
3769
+ enable: function() {
3770
+ this.$button.removeClass('disabled');
3771
+ },
3772
+
3773
+ disable: function() {
3774
+ this.$button.addClass('disabled');
3775
+ }
3776
+
3777
+ };
3778
+
3779
+
3780
+ // SELECT PLUGIN DEFINITION
3781
+
3782
+ $.fn.select = function (option,value) {
3783
+ var methodReturn;
3784
+
3785
+ var $set = this.each(function () {
3786
+ var $this = $(this);
3787
+ var data = $this.data('select');
3788
+ var options = typeof option === 'object' && option;
3789
+
3790
+ if (!data) $this.data('select', (data = new Select(this, options)));
3791
+ if (typeof option === 'string') methodReturn = data[option](value);
3792
+ });
3793
+
3794
+ return (methodReturn === undefined) ? $set : methodReturn;
3795
+ };
3796
+
3797
+ $.fn.select.defaults = {};
3798
+
3799
+ $.fn.select.Constructor = Select;
3800
+
3801
+
3802
+ // SELECT DATA-API
3803
+
3804
+ $(function () {
3805
+
3806
+ $(window).on('load', function () {
3807
+ $('.select').each(function () {
3808
+ var $this = $(this);
3809
+ if ($this.data('select')) return;
3810
+ $this.select($this.data());
3811
+ });
3812
+ });
3813
+
3814
+ $('body').on('mousedown.select.data-api', '.select', function (e) {
3815
+ var $this = $(this);
3816
+ if ($this.data('select')) return;
3817
+ $this.select($this.data());
3818
+ });
3819
+ });
3820
+
3821
+ });
3822
+
3823
+ /*
3824
+ * Fuel UX Tree
3825
+ * https://github.com/ExactTarget/fuelux
3826
+ *
3827
+ * Copyright (c) 2012 ExactTarget
3828
+ * Licensed under the MIT license.
3829
+ */
3830
+
3831
+ define('fuelux/tree',['require','jquery'],function(require) {
3832
+
3833
+ var $ = require('jquery');
3834
+
3835
+
3836
+ // TREE CONSTRUCTOR AND PROTOTYPE
3837
+
3838
+ var Tree = function (element, options) {
3839
+ this.$element = $(element);
3840
+ this.options = $.extend({}, $.fn.tree.defaults, options);
3841
+
3842
+ this.$element.on('click', '.tree-item', $.proxy( function(ev) { this.selectItem(ev.currentTarget); } ,this));
3843
+ this.$element.on('click', '.tree-folder-header', $.proxy( function(ev) { this.selectFolder(ev.currentTarget); }, this));
3844
+
3845
+ this.render();
3846
+ };
3847
+
3848
+ Tree.prototype = {
3849
+ constructor: Tree,
3850
+
3851
+ render: function () {
3852
+ this.populate(this.$element);
3853
+ },
3854
+
3855
+ populate: function ($el) {
3856
+ var self = this;
3857
+ var loader = $el.parent().find('.tree-loader:eq(0)');
3858
+
3859
+ loader.show();
3860
+ this.options.dataSource.data($el.data(), function (items) {
3861
+ loader.hide();
3862
+
3863
+ $.each( items.data, function(index, value) {
3864
+ var $entity;
3865
+
3866
+ if(value.type === "folder") {
3867
+ $entity = self.$element.find('.tree-folder:eq(0)').clone().show();
3868
+ $entity.find('.tree-folder-name').html(value.name);
3869
+ $entity.find('.tree-loader').html(self.options.loadingHTML);
3870
+ $entity.find('.tree-folder-header').data(value);
3871
+ } else if (value.type === "item") {
3872
+ $entity = self.$element.find('.tree-item:eq(0)').clone().show();
3873
+ $entity.find('.tree-item-name').html(value.name);
3874
+ $entity.data(value);
3875
+ }
3876
+
3877
+ if($el.hasClass('tree-folder-header')) {
3878
+ $el.parent().find('.tree-folder-content:eq(0)').append($entity);
3879
+ } else {
3880
+ $el.append($entity);
3881
+ }
3882
+ });
3883
+
3884
+ self.$element.trigger('loaded');
3885
+ });
3886
+ },
3887
+
3888
+ selectItem: function (el) {
3889
+ var $el = $(el);
3890
+ var $all = this.$element.find('.tree-selected');
3891
+ var data = [];
3892
+
3893
+ if (this.options.multiSelect) {
3894
+ $.each($all, function(index, value) {
3895
+ var $val = $(value);
3896
+ if($val[0] !== $el[0]) {
3897
+ data.push( $(value).data() );
3898
+ }
3899
+ });
3900
+ } else if ($all[0] !== $el[0]) {
3901
+ $all.removeClass('tree-selected')
3902
+ .find('i').removeClass('icon-ok').addClass('tree-dot');
3903
+ data.push($el.data());
3904
+ }
3905
+
3906
+ if($el.hasClass('tree-selected')) {
3907
+ $el.removeClass('tree-selected');
3908
+ $el.find('i').removeClass('icon-ok').addClass('tree-dot');
3909
+ } else {
3910
+ $el.addClass ('tree-selected');
3911
+ $el.find('i').removeClass('tree-dot').addClass('icon-ok');
3912
+ if (this.options.multiSelect) {
3913
+ data.push( $el.data() );
3914
+ }
3915
+ }
3916
+
3917
+ if(data.length) {
3918
+ this.$element.trigger('selected', {info: data});
3919
+ }
3920
+
3921
+ },
3922
+
3923
+ selectFolder: function (el) {
3924
+ var $el = $(el);
3925
+ var $par = $el.parent();
3926
+
3927
+ if($el.find('.icon-folder-close').length) {
3928
+ if ($par.find('.tree-folder-content').children().length) {
3929
+ $par.find('.tree-folder-content:eq(0)').show();
3930
+ } else {
3931
+ this.populate( $el );
3932
+ }
3933
+
3934
+ $par.find('.icon-folder-close:eq(0)')
3935
+ .removeClass('icon-folder-close')
3936
+ .addClass('icon-folder-open');
3937
+
3938
+ this.$element.trigger('opened', $el.data());
3939
+ } else {
3940
+ if(this.options.cacheItems) {
3941
+ $par.find('.tree-folder-content:eq(0)').hide();
3942
+ } else {
3943
+ $par.find('.tree-folder-content:eq(0)').empty();
3944
+ }
3945
+
3946
+ $par.find('.icon-folder-open:eq(0)')
3947
+ .removeClass('icon-folder-open')
3948
+ .addClass('icon-folder-close');
3949
+
3950
+ this.$element.trigger('closed', $el.data());
3951
+ }
3952
+ },
3953
+
3954
+ selectedItems: function () {
3955
+ var $sel = this.$element.find('.tree-selected');
3956
+ var data = [];
3957
+
3958
+ $.each($sel, function (index, value) {
3959
+ data.push($(value).data());
3960
+ });
3961
+ return data;
3962
+ }
3963
+ };
3964
+
3965
+
3966
+ // TREE PLUGIN DEFINITION
3967
+
3968
+ $.fn.tree = function (option, value) {
3969
+ var methodReturn;
3970
+
3971
+ var $set = this.each(function () {
3972
+ var $this = $(this);
3973
+ var data = $this.data('tree');
3974
+ var options = typeof option === 'object' && option;
3975
+
3976
+ if (!data) $this.data('tree', (data = new Tree(this, options)));
3977
+ if (typeof option === 'string') methodReturn = data[option](value);
3978
+ });
3979
+
3980
+ return (methodReturn === undefined) ? $set : methodReturn;
3981
+ };
3982
+
3983
+ $.fn.tree.defaults = {
3984
+ multiSelect: false,
3985
+ loadingHTML: '<div>Loading...</div>',
3986
+ cacheItems: true
3987
+ };
3988
+
3989
+ $.fn.tree.Constructor = Tree;
3990
+
3991
+ });
3992
+
3993
+ /*
3994
+ * Fuel UX Wizard
3995
+ * https://github.com/ExactTarget/fuelux
3996
+ *
3997
+ * Copyright (c) 2012 ExactTarget
3998
+ * Licensed under the MIT license.
3999
+ */
4000
+
4001
+ define('fuelux/wizard',['require','jquery'],function(require) {
4002
+
4003
+ var $ = require('jquery');
4004
+
4005
+
4006
+ // WIZARD CONSTRUCTOR AND PROTOTYPE
4007
+
4008
+ var Wizard = function (element, options) {
4009
+ this.$element = $(element);
4010
+ this.options = $.extend({}, $.fn.wizard.defaults, options);
4011
+ this.currentStep = 1;
4012
+ this.numSteps = this.$element.find('li').length;
4013
+ this.$prevBtn = this.$element.find('button.btn-prev');
4014
+ this.$nextBtn = this.$element.find('button.btn-next');
4015
+ this.nextText = this.$nextBtn.text();
4016
+
4017
+ // handle events
4018
+ this.$prevBtn.on('click', $.proxy(this.previous, this));
4019
+ this.$nextBtn.on('click', $.proxy(this.next, this));
4020
+ this.$element.on('click', 'li.complete', $.proxy(this.stepclicked, this));
4021
+ };
4022
+
4023
+ Wizard.prototype = {
4024
+
4025
+ constructor: Wizard,
4026
+
4027
+ setState: function() {
4028
+ var canMoveNext = (this.currentStep + 1 <= this.numSteps);
4029
+ var lastStep = (this.currentStep === this.numSteps);
4030
+ var canMovePrev = (this.currentStep > 1);
4031
+ var firstStep = (this.currentStep === 1);
4032
+
4033
+ // disable buttons based on current step
4034
+ this.$prevBtn.attr('disabled', (firstStep === true || canMovePrev === false));
4035
+ this.$nextBtn.attr('disabled', (lastStep === true || canMoveNext === false));
4036
+
4037
+ // change button text of last step, if specified
4038
+ var data = this.$nextBtn.data();
4039
+ if(data && data.last) {
4040
+ this.lastText = data.last;
4041
+ if(typeof this.lastText !== 'undefined') {
4042
+ var text = (lastStep !== true) ? this.nextText : this.lastText;
4043
+ this.$nextBtn
4044
+ .contents()
4045
+ .filter(function() {
4046
+ return this.nodeType === 3;
4047
+ }).replaceWith(text);
4048
+ }
4049
+ }
4050
+
4051
+ // reset classes for all steps
4052
+ var $steps = this.$element.find('li');
4053
+ $steps.removeClass('active').removeClass('complete');
4054
+ $steps.find('span.badge').removeClass('badge-info').removeClass('badge-success');
4055
+
4056
+ // set class for all previous steps
4057
+ var prevSelector = 'li:lt(' + (this.currentStep - 1) + ')';
4058
+ var $prevSteps = this.$element.find(prevSelector);
4059
+ $prevSteps.addClass('complete');
4060
+ $prevSteps.find('span.badge').addClass('badge-success');
4061
+
4062
+ // set class for current step
4063
+ var currentSelector = 'li:eq(' + (this.currentStep - 1) + ')';
4064
+ var $currentStep = this.$element.find(currentSelector);
4065
+ $currentStep.addClass('active');
4066
+ $currentStep.find('span.badge').addClass('badge-info');
4067
+
4068
+ // set display of target element
4069
+ var target = $currentStep.data().target;
4070
+ $('.step-pane').removeClass('active');
4071
+ $(target).addClass('active');
4072
+
4073
+ this.$element.trigger('changed');
4074
+ },
4075
+
4076
+ stepclicked: function(e) {
4077
+ var li = $(e.currentTarget);
4078
+
4079
+ var index = $('.steps li').index(li);
4080
+ this.currentStep = (index + 1);
4081
+ this.setState();
4082
+ },
4083
+
4084
+ previous: function() {
4085
+ var canMovePrev = (this.currentStep > 1);
4086
+ if(canMovePrev) {
4087
+ var e = $.Event('change');
4088
+ this.$element.trigger(e, {step:this.currentStep, direction:'previous'});
4089
+ if (e.isDefaultPrevented()) return;
4090
+
4091
+ this.currentStep -= 1;
4092
+ this.setState();
4093
+ }
4094
+ },
4095
+
4096
+ next: function() {
4097
+ var canMoveNext = (this.currentStep + 1 <= this.numSteps);
4098
+ if(canMoveNext) {
4099
+ var e = $.Event('change');
4100
+ this.$element.trigger(e, {step:this.currentStep, direction:'next'});
4101
+
4102
+ if (e.isDefaultPrevented()) return;
4103
+
4104
+ this.currentStep += 1;
4105
+ this.setState();
4106
+ }
4107
+ },
4108
+
4109
+ selectedItem: function(val) {
4110
+ return {
4111
+ step: this.currentStep
4112
+ };
4113
+ }
4114
+ };
4115
+
4116
+
4117
+ // WIZARD PLUGIN DEFINITION
4118
+
4119
+ $.fn.wizard = function (option,value) {
4120
+ var methodReturn;
4121
+
4122
+ var $set = this.each(function () {
4123
+ var $this = $(this);
4124
+ var data = $this.data('wizard');
4125
+ var options = typeof option === 'object' && option;
4126
+
4127
+ if (!data) $this.data('wizard', (data = new Wizard(this, options)));
4128
+ if (typeof option === 'string') methodReturn = data[option](value);
4129
+ });
4130
+
4131
+ return (methodReturn === undefined) ? $set : methodReturn;
4132
+ };
4133
+
4134
+ $.fn.wizard.defaults = {};
4135
+
4136
+ $.fn.wizard.Constructor = Wizard;
4137
+
4138
+
4139
+ // WIZARD DATA-API
4140
+
4141
+ $(function () {
4142
+ $('body').on('mousedown.wizard.data-api', '.wizard', function () {
4143
+ var $this = $(this);
4144
+ if ($this.data('wizard')) return;
4145
+ $this.wizard($this.data());
4146
+ });
4147
+ });
4148
+
4149
+ });
4150
+
3154
4151
  /*
3155
4152
  * Fuel UX
3156
4153
  * https://github.com/ExactTarget/fuelux
@@ -3159,7 +4156,7 @@ define('fuelux/spinner',['require','jquery'],function(require) {
3159
4156
  * Licensed under the MIT license.
3160
4157
  */
3161
4158
 
3162
- define('fuelux/all',['require','jquery','bootstrap/bootstrap-affix','bootstrap/bootstrap-alert','bootstrap/bootstrap-button','bootstrap/bootstrap-carousel','bootstrap/bootstrap-collapse','bootstrap/bootstrap-dropdown','bootstrap/bootstrap-modal','bootstrap/bootstrap-popover','bootstrap/bootstrap-scrollspy','bootstrap/bootstrap-tab','bootstrap/bootstrap-tooltip','bootstrap/bootstrap-transition','bootstrap/bootstrap-typeahead','fuelux/combobox','fuelux/datagrid','fuelux/pillbox','fuelux/search','fuelux/spinner'],function (require) {
4159
+ define('fuelux/all',['require','jquery','bootstrap/bootstrap-affix','bootstrap/bootstrap-alert','bootstrap/bootstrap-button','bootstrap/bootstrap-carousel','bootstrap/bootstrap-collapse','bootstrap/bootstrap-dropdown','bootstrap/bootstrap-modal','bootstrap/bootstrap-popover','bootstrap/bootstrap-scrollspy','bootstrap/bootstrap-tab','bootstrap/bootstrap-tooltip','bootstrap/bootstrap-transition','bootstrap/bootstrap-typeahead','fuelux/checkbox','fuelux/combobox','fuelux/datagrid','fuelux/pillbox','fuelux/radio','fuelux/search','fuelux/spinner','fuelux/select','fuelux/tree','fuelux/wizard'],function (require) {
3163
4160
  require('jquery');
3164
4161
  require('bootstrap/bootstrap-affix');
3165
4162
  require('bootstrap/bootstrap-alert');
@@ -3174,11 +4171,16 @@ define('fuelux/all',['require','jquery','bootstrap/bootstrap-affix','bootstrap/b
3174
4171
  require('bootstrap/bootstrap-tooltip');
3175
4172
  require('bootstrap/bootstrap-transition');
3176
4173
  require('bootstrap/bootstrap-typeahead');
4174
+ require('fuelux/checkbox');
3177
4175
  require('fuelux/combobox');
3178
4176
  require('fuelux/datagrid');
3179
4177
  require('fuelux/pillbox');
4178
+ require('fuelux/radio');
3180
4179
  require('fuelux/search');
3181
4180
  require('fuelux/spinner');
4181
+ require('fuelux/select');
4182
+ require('fuelux/tree');
4183
+ require('fuelux/wizard');
3182
4184
  });
3183
4185
 
3184
4186
  /*