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.
- data/COPYING +28 -0
- data/README.md +59 -0
- data/THIRD-PARTY +25 -0
- data/lib/fuelux-rails/version.rb +1 -1
- data/vendor/assets/images/form.png +0 -0
- data/vendor/assets/javascripts/fuelux/checkbox.js +106 -0
- data/vendor/assets/javascripts/fuelux/combobox.js +122 -11
- data/vendor/assets/javascripts/fuelux/datagrid.js +7 -3
- data/vendor/assets/javascripts/fuelux/loader.js +1045 -43
- data/vendor/assets/javascripts/fuelux/pillbox.js +2 -1
- data/vendor/assets/javascripts/fuelux/radio.js +106 -0
- data/vendor/assets/javascripts/fuelux/search.js +1 -2
- data/vendor/assets/javascripts/fuelux/select.js +166 -0
- data/vendor/assets/javascripts/fuelux/spinner.js +2 -3
- data/vendor/assets/javascripts/fuelux/tree.js +166 -0
- data/vendor/assets/javascripts/fuelux/util.js +26 -0
- data/vendor/assets/javascripts/fuelux/wizard.js +154 -0
- data/vendor/assets/javascripts/fuelux.js +6 -0
- data/vendor/toolkit/fuelux/checkbox.less +52 -0
- data/vendor/toolkit/fuelux/combobox.less +0 -0
- data/vendor/toolkit/fuelux/datagrid.less +0 -0
- data/vendor/toolkit/fuelux/pillbox.less +0 -0
- data/vendor/toolkit/fuelux/radio.less +52 -0
- data/vendor/toolkit/fuelux/select.less +17 -0
- data/vendor/toolkit/fuelux/spinner.less +0 -0
- data/vendor/toolkit/fuelux/tree.less +97 -0
- data/vendor/toolkit/fuelux/wizard.less +147 -0
- data/vendor/toolkit/fuelux.less +7 -0
- metadata +20 -7
- data/MIT-LICENSE +0 -20
- data/README.rdoc +0 -3
@@ -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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
-
/*
|
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
|
-
/*
|
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.
|
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.
|
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.
|
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.
|
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
|
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"
|
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.
|
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.
|
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.
|
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.
|
2359
|
+
var pos = $.extend({}, this.$element.position(), {
|
2239
2360
|
height: this.$element[0].offsetHeight
|
2240
2361
|
})
|
2241
2362
|
|
2242
|
-
this.$menu
|
2243
|
-
|
2244
|
-
|
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 =
|
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
|
-
/*
|
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
|
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/
|
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
|
-
|
2524
|
-
this.$
|
2525
|
-
|
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
|
2530
|
-
|
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
|
-
|
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
|
/*
|