fuelux-rails 2.1.3 → 2.2.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  /*