cmstyle 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/app/assets/images/novartis-micro.png +0 -0
- data/lib/app/assets/images/novartis-small.png +0 -0
- data/lib/app/assets/javascripts/application.js +16 -0
- data/lib/app/assets/stylesheets/application.css +96 -0
- data/lib/app/views/{cmstyle → layouts}/_footer.slim +0 -0
- data/lib/app/views/layouts/_header.slim +34 -0
- data/lib/app/views/layouts/_modals.slim +66 -0
- data/lib/app/views/layouts/application.slim +35 -0
- data/lib/assets/images/8020select.png +0 -0
- data/lib/assets/images/adoptahydrant.png +0 -0
- data/lib/assets/images/apple-touch-icon-114-precomposed.png +0 -0
- data/lib/assets/images/apple-touch-icon-144-precomposed.png +0 -0
- data/lib/assets/images/apple-touch-icon-57-precomposed.png +0 -0
- data/lib/assets/images/apple-touch-icon-72-precomposed.png +0 -0
- data/lib/assets/images/bootstrap-example-carousel.png +0 -0
- data/lib/assets/images/bootstrap-example-fluid.jpg +0 -0
- data/lib/assets/images/bootstrap-example-hero.jpg +0 -0
- data/lib/assets/images/bootstrap-example-marketing-narrow.png +0 -0
- data/lib/assets/images/bootstrap-example-signin.png +0 -0
- data/lib/assets/images/bootstrap-example-starter.jpg +0 -0
- data/lib/assets/images/bootstrap-example-sticky-footer.png +0 -0
- data/lib/assets/images/bootstrap-mdo-sfmoma-01.jpg +0 -0
- data/lib/assets/images/bootstrap-mdo-sfmoma-02.jpg +0 -0
- data/lib/assets/images/bootstrap-mdo-sfmoma-03.jpg +0 -0
- data/lib/assets/images/breakingnews.png +0 -0
- data/lib/assets/images/browser-icon-chrome.png +0 -0
- data/lib/assets/images/browser-icon-firefox.png +0 -0
- data/lib/assets/images/browser-icon-safari.png +0 -0
- data/lib/assets/images/bs-docs-bootstrap-features.png +0 -0
- data/lib/assets/images/bs-docs-masthead-pattern.png +0 -0
- data/lib/assets/images/bs-docs-responsive-illustrations.png +0 -0
- data/lib/assets/images/bs-docs-twitter-github.png +0 -0
- data/lib/assets/images/fleetio.png +0 -0
- data/lib/assets/images/gathercontent.png +0 -0
- data/lib/assets/images/glyphicons-halflings-white.png +0 -0
- data/lib/assets/images/glyphicons-halflings.png +0 -0
- data/lib/assets/images/grid-baseline-20px.png +0 -0
- data/lib/assets/images/jshint.png +0 -0
- data/lib/assets/images/kippt.png +0 -0
- data/lib/assets/images/less-logo-large.png +0 -0
- data/lib/assets/images/logo.png +0 -0
- data/lib/assets/images/noise.png +0 -0
- data/lib/assets/images/responsive-illustrations.png +0 -0
- data/lib/assets/images/slide-01.jpg +0 -0
- data/lib/assets/images/slide-02.jpg +0 -0
- data/lib/assets/images/slide-03.jpg +0 -0
- data/lib/assets/images/small-hogan-icon.png +0 -0
- data/lib/assets/images/soundready.png +0 -0
- data/lib/assets/images/stripes.png +0 -0
- data/lib/assets/javascripts/application.js +154 -0
- data/lib/assets/javascripts/bootstrap-affix.js +19 -0
- data/lib/assets/javascripts/bootstrap-alert.js +56 -0
- data/lib/assets/javascripts/bootstrap-button.js +96 -0
- data/lib/assets/javascripts/bootstrap-carousel.js +63 -0
- data/lib/assets/javascripts/bootstrap-collapse.js +88 -0
- data/lib/assets/javascripts/bootstrap-dropdown.js +145 -0
- data/lib/assets/javascripts/bootstrap-modal.js +114 -0
- data/lib/assets/javascripts/bootstrap-phantom.js +21 -0
- data/lib/assets/javascripts/bootstrap-popover.js +107 -0
- data/lib/assets/javascripts/bootstrap-scrollspy.js +31 -0
- data/lib/assets/javascripts/bootstrap-tab.js +80 -0
- data/lib/assets/javascripts/bootstrap-tooltip.js +153 -0
- data/lib/assets/javascripts/bootstrap-transition.js +13 -0
- data/lib/assets/javascripts/bootstrap-typeahead.js +199 -0
- data/lib/assets/javascripts/compiler.js +348 -0
- data/lib/assets/javascripts/hogan-1.0.5.amd.js +576 -0
- data/lib/assets/javascripts/hogan-1.0.5.common.js +576 -0
- data/lib/assets/javascripts/hogan-1.0.5.js +572 -0
- data/lib/assets/javascripts/hogan-1.0.5.mustache.js +619 -0
- data/lib/assets/javascripts/hogan.js +545 -0
- data/lib/assets/javascripts/index.js +848 -0
- data/lib/assets/javascripts/jquery.js +2 -0
- data/lib/assets/javascripts/mustache.js +90 -0
- data/lib/assets/javascripts/phantom.js +63 -0
- data/lib/assets/javascripts/prettify.js +0 -0
- data/lib/assets/javascripts/qunit.js +1510 -0
- data/lib/assets/javascripts/release.js +74 -0
- data/lib/assets/javascripts/server.js +14 -0
- data/lib/assets/javascripts/spec.js +77 -0
- data/lib/assets/javascripts/template-1.0.5.js +233 -0
- data/lib/assets/javascripts/template.js +233 -0
- data/lib/assets/javascripts/web_templates.js +32 -0
- data/lib/assets/stylesheets/bootstrap.css +2 -2
- data/lib/assets/stylesheets/css-tests.css +139 -0
- data/lib/assets/stylesheets/docs.css +1015 -0
- data/lib/assets/stylesheets/layout.css +206 -0
- data/lib/assets/stylesheets/prettify.css +0 -0
- data/lib/assets/stylesheets/qunit.css +232 -0
- data/lib/assets/stylesheets/skeleton.css +236 -0
- data/lib/cmstyle/railtie.rb +7 -0
- data/lib/cmstyle/version.rb +1 -1
- data/lib/cmstyle.rb +2 -1
- data/lib/tasks/cleanup.rake +52 -0
- data/lib/tasks/setup.rake +32 -0
- metadata +90 -6
- data/lib/app/views/cmstyle/_header.slim +0 -40
- data/lib/app/views/cmstyle/_modals.slim +0 -62
@@ -0,0 +1,31 @@
|
|
1
|
+
$(function () {
|
2
|
+
|
3
|
+
module("bootstrap-scrollspy")
|
4
|
+
|
5
|
+
test("should be defined on jquery object", function () {
|
6
|
+
ok($(document.body).scrollspy, 'scrollspy method is defined')
|
7
|
+
})
|
8
|
+
|
9
|
+
test("should return element", function () {
|
10
|
+
ok($(document.body).scrollspy()[0] == document.body, 'document.body returned')
|
11
|
+
})
|
12
|
+
|
13
|
+
test("should switch active class on scroll", function () {
|
14
|
+
var sectionHTML = '<div id="masthead"></div>'
|
15
|
+
, $section = $(sectionHTML).append('#qunit-fixture')
|
16
|
+
, topbarHTML ='<div class="topbar">'
|
17
|
+
+ '<div class="topbar-inner">'
|
18
|
+
+ '<div class="container">'
|
19
|
+
+ '<h3><a href="#">Bootstrap</a></h3>'
|
20
|
+
+ '<ul class="nav">'
|
21
|
+
+ '<li><a href="#masthead">Overview</a></li>'
|
22
|
+
+ '</ul>'
|
23
|
+
+ '</div>'
|
24
|
+
+ '</div>'
|
25
|
+
+ '</div>'
|
26
|
+
, $topbar = $(topbarHTML).scrollspy()
|
27
|
+
|
28
|
+
ok($topbar.find('.active', true))
|
29
|
+
})
|
30
|
+
|
31
|
+
})
|
@@ -0,0 +1,80 @@
|
|
1
|
+
$(function () {
|
2
|
+
|
3
|
+
module("bootstrap-tabs")
|
4
|
+
|
5
|
+
test("should be defined on jquery object", function () {
|
6
|
+
ok($(document.body).tab, 'tabs method is defined')
|
7
|
+
})
|
8
|
+
|
9
|
+
test("should return element", function () {
|
10
|
+
ok($(document.body).tab()[0] == document.body, 'document.body returned')
|
11
|
+
})
|
12
|
+
|
13
|
+
test("should activate element by tab id", function () {
|
14
|
+
var tabsHTML =
|
15
|
+
'<ul class="tabs">'
|
16
|
+
+ '<li><a href="#home">Home</a></li>'
|
17
|
+
+ '<li><a href="#profile">Profile</a></li>'
|
18
|
+
+ '</ul>'
|
19
|
+
|
20
|
+
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-fixture")
|
21
|
+
|
22
|
+
$(tabsHTML).find('li:last a').tab('show')
|
23
|
+
equals($("#qunit-fixture").find('.active').attr('id'), "profile")
|
24
|
+
|
25
|
+
$(tabsHTML).find('li:first a').tab('show')
|
26
|
+
equals($("#qunit-fixture").find('.active').attr('id'), "home")
|
27
|
+
})
|
28
|
+
|
29
|
+
test("should activate element by tab id", function () {
|
30
|
+
var pillsHTML =
|
31
|
+
'<ul class="pills">'
|
32
|
+
+ '<li><a href="#home">Home</a></li>'
|
33
|
+
+ '<li><a href="#profile">Profile</a></li>'
|
34
|
+
+ '</ul>'
|
35
|
+
|
36
|
+
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-fixture")
|
37
|
+
|
38
|
+
$(pillsHTML).find('li:last a').tab('show')
|
39
|
+
equals($("#qunit-fixture").find('.active').attr('id'), "profile")
|
40
|
+
|
41
|
+
$(pillsHTML).find('li:first a').tab('show')
|
42
|
+
equals($("#qunit-fixture").find('.active').attr('id'), "home")
|
43
|
+
})
|
44
|
+
|
45
|
+
|
46
|
+
test("should not fire closed when close is prevented", function () {
|
47
|
+
$.support.transition = false
|
48
|
+
stop();
|
49
|
+
$('<div class="tab"/>')
|
50
|
+
.bind('show', function (e) {
|
51
|
+
e.preventDefault();
|
52
|
+
ok(true);
|
53
|
+
start();
|
54
|
+
})
|
55
|
+
.bind('shown', function () {
|
56
|
+
ok(false);
|
57
|
+
})
|
58
|
+
.tab('show')
|
59
|
+
})
|
60
|
+
|
61
|
+
test("show and shown events should reference correct relatedTarget", function () {
|
62
|
+
var dropHTML =
|
63
|
+
'<ul class="drop">'
|
64
|
+
+ '<li class="dropdown"><a data-toggle="dropdown" href="#">1</a>'
|
65
|
+
+ '<ul class="dropdown-menu">'
|
66
|
+
+ '<li><a href="#1-1" data-toggle="tab">1-1</a></li>'
|
67
|
+
+ '<li><a href="#1-2" data-toggle="tab">1-2</a></li>'
|
68
|
+
+ '</ul>'
|
69
|
+
+ '</li>'
|
70
|
+
+ '</ul>'
|
71
|
+
|
72
|
+
$(dropHTML).find('ul>li:first a').tab('show').end()
|
73
|
+
.find('ul>li:last a').on('show', function(event){
|
74
|
+
equals(event.relatedTarget.hash, "#1-1")
|
75
|
+
}).on('shown', function(event){
|
76
|
+
equals(event.relatedTarget.hash, "#1-1")
|
77
|
+
}).tab('show')
|
78
|
+
})
|
79
|
+
|
80
|
+
})
|
@@ -0,0 +1,153 @@
|
|
1
|
+
$(function () {
|
2
|
+
|
3
|
+
module("bootstrap-tooltip")
|
4
|
+
|
5
|
+
test("should be defined on jquery object", function () {
|
6
|
+
var div = $("<div></div>")
|
7
|
+
ok(div.tooltip, 'popover method is defined')
|
8
|
+
})
|
9
|
+
|
10
|
+
test("should return element", function () {
|
11
|
+
var div = $("<div></div>")
|
12
|
+
ok(div.tooltip() == div, 'document.body returned')
|
13
|
+
})
|
14
|
+
|
15
|
+
test("should expose default settings", function () {
|
16
|
+
ok(!!$.fn.tooltip.defaults, 'defaults is defined')
|
17
|
+
})
|
18
|
+
|
19
|
+
test("should remove title attribute", function () {
|
20
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
|
21
|
+
ok(!tooltip.attr('title'), 'title tag was removed')
|
22
|
+
})
|
23
|
+
|
24
|
+
test("should add data attribute for referencing original title", function () {
|
25
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
|
26
|
+
equals(tooltip.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute')
|
27
|
+
})
|
28
|
+
|
29
|
+
test("should place tooltips relative to placement option", function () {
|
30
|
+
$.support.transition = false
|
31
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
|
32
|
+
.appendTo('#qunit-fixture')
|
33
|
+
.tooltip({placement: 'bottom'})
|
34
|
+
.tooltip('show')
|
35
|
+
|
36
|
+
ok($(".tooltip").is('.fade.bottom.in'), 'has correct classes applied')
|
37
|
+
tooltip.tooltip('hide')
|
38
|
+
})
|
39
|
+
|
40
|
+
test("should allow html entities", function () {
|
41
|
+
$.support.transition = false
|
42
|
+
var tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"></a>')
|
43
|
+
.appendTo('#qunit-fixture')
|
44
|
+
.tooltip({html: true})
|
45
|
+
.tooltip('show')
|
46
|
+
|
47
|
+
ok($('.tooltip b').length, 'b tag was inserted')
|
48
|
+
tooltip.tooltip('hide')
|
49
|
+
ok(!$(".tooltip").length, 'tooltip removed')
|
50
|
+
})
|
51
|
+
|
52
|
+
test("should respect custom classes", function () {
|
53
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
|
54
|
+
.appendTo('#qunit-fixture')
|
55
|
+
.tooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>'})
|
56
|
+
.tooltip('show')
|
57
|
+
|
58
|
+
ok($('.tooltip').hasClass('some-class'), 'custom class is present')
|
59
|
+
tooltip.tooltip('hide')
|
60
|
+
ok(!$(".tooltip").length, 'tooltip removed')
|
61
|
+
})
|
62
|
+
|
63
|
+
test("should not show tooltip if leave event occurs before delay expires", function () {
|
64
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
|
65
|
+
.appendTo('#qunit-fixture')
|
66
|
+
.tooltip({ delay: 200 })
|
67
|
+
|
68
|
+
stop()
|
69
|
+
|
70
|
+
tooltip.trigger('mouseenter')
|
71
|
+
|
72
|
+
setTimeout(function () {
|
73
|
+
ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
|
74
|
+
tooltip.trigger('mouseout')
|
75
|
+
setTimeout(function () {
|
76
|
+
ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
|
77
|
+
start()
|
78
|
+
}, 200)
|
79
|
+
}, 100)
|
80
|
+
})
|
81
|
+
|
82
|
+
test("should not show tooltip if leave event occurs before delay expires, even if hide delay is 0", function () {
|
83
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
|
84
|
+
.appendTo('#qunit-fixture')
|
85
|
+
.tooltip({ delay: { show: 200, hide: 0} })
|
86
|
+
|
87
|
+
stop()
|
88
|
+
|
89
|
+
tooltip.trigger('mouseenter')
|
90
|
+
|
91
|
+
setTimeout(function () {
|
92
|
+
ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
|
93
|
+
tooltip.trigger('mouseout')
|
94
|
+
setTimeout(function () {
|
95
|
+
ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
|
96
|
+
start()
|
97
|
+
}, 200)
|
98
|
+
}, 100)
|
99
|
+
})
|
100
|
+
|
101
|
+
test("should not show tooltip if leave event occurs before delay expires", function () {
|
102
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
|
103
|
+
.appendTo('#qunit-fixture')
|
104
|
+
.tooltip({ delay: 100 })
|
105
|
+
stop()
|
106
|
+
tooltip.trigger('mouseenter')
|
107
|
+
setTimeout(function () {
|
108
|
+
ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
|
109
|
+
tooltip.trigger('mouseout')
|
110
|
+
setTimeout(function () {
|
111
|
+
ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
|
112
|
+
start()
|
113
|
+
}, 100)
|
114
|
+
}, 50)
|
115
|
+
})
|
116
|
+
|
117
|
+
test("should show tooltip if leave event hasn't occured before delay expires", function () {
|
118
|
+
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
|
119
|
+
.appendTo('#qunit-fixture')
|
120
|
+
.tooltip({ delay: 150 })
|
121
|
+
stop()
|
122
|
+
tooltip.trigger('mouseenter')
|
123
|
+
setTimeout(function () {
|
124
|
+
ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
|
125
|
+
}, 100)
|
126
|
+
setTimeout(function () {
|
127
|
+
ok($(".tooltip").is('.fade.in'), 'tooltip has faded in')
|
128
|
+
start()
|
129
|
+
}, 200)
|
130
|
+
})
|
131
|
+
|
132
|
+
test("should destroy tooltip", function () {
|
133
|
+
var tooltip = $('<div/>').tooltip().on('click.foo', function(){})
|
134
|
+
ok(tooltip.data('tooltip'), 'tooltip has data')
|
135
|
+
ok($._data(tooltip[0], 'events').mouseover && $._data(tooltip[0], 'events').mouseout, 'tooltip has hover event')
|
136
|
+
ok($._data(tooltip[0], 'events').click[0].namespace == 'foo', 'tooltip has extra click.foo event')
|
137
|
+
tooltip.tooltip('show')
|
138
|
+
tooltip.tooltip('destroy')
|
139
|
+
ok(!tooltip.hasClass('in'), 'tooltip is hidden')
|
140
|
+
ok(!$._data(tooltip[0], 'tooltip'), 'tooltip does not have data')
|
141
|
+
ok($._data(tooltip[0], 'events').click[0].namespace == 'foo', 'tooltip still has click.foo')
|
142
|
+
ok(!$._data(tooltip[0], 'events').mouseover && !$._data(tooltip[0], 'events').mouseout, 'tooltip does not have any events')
|
143
|
+
})
|
144
|
+
|
145
|
+
test("should show tooltip with delegate selector on click", function () {
|
146
|
+
var div = $('<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>')
|
147
|
+
var tooltip = div.appendTo('#qunit-fixture')
|
148
|
+
.tooltip({ selector: 'a[rel=tooltip]',
|
149
|
+
trigger: 'click' })
|
150
|
+
div.find('a').trigger('click')
|
151
|
+
ok($(".tooltip").is('.fade.in'), 'tooltip is faded in')
|
152
|
+
})
|
153
|
+
})
|
@@ -0,0 +1,13 @@
|
|
1
|
+
$(function () {
|
2
|
+
|
3
|
+
module("bootstrap-transition")
|
4
|
+
|
5
|
+
test("should be defined on jquery support object", function () {
|
6
|
+
ok($.support.transition !== undefined, 'transition object is defined')
|
7
|
+
})
|
8
|
+
|
9
|
+
test("should provide an end object", function () {
|
10
|
+
ok($.support.transition ? $.support.transition.end : true, 'end string is defined')
|
11
|
+
})
|
12
|
+
|
13
|
+
})
|
@@ -0,0 +1,199 @@
|
|
1
|
+
$(function () {
|
2
|
+
|
3
|
+
module("bootstrap-typeahead")
|
4
|
+
|
5
|
+
test("should be defined on jquery object", function () {
|
6
|
+
ok($(document.body).typeahead, 'alert method is defined')
|
7
|
+
})
|
8
|
+
|
9
|
+
test("should return element", function () {
|
10
|
+
ok($(document.body).typeahead()[0] == document.body, 'document.body returned')
|
11
|
+
})
|
12
|
+
|
13
|
+
test("should listen to an input", function () {
|
14
|
+
var $input = $('<input />')
|
15
|
+
$input.typeahead()
|
16
|
+
ok($._data($input[0], 'events').blur, 'has a blur event')
|
17
|
+
ok($._data($input[0], 'events').keypress, 'has a keypress event')
|
18
|
+
ok($._data($input[0], 'events').keyup, 'has a keyup event')
|
19
|
+
})
|
20
|
+
|
21
|
+
test("should create a menu", function () {
|
22
|
+
var $input = $('<input />')
|
23
|
+
ok($input.typeahead().data('typeahead').$menu, 'has a menu')
|
24
|
+
})
|
25
|
+
|
26
|
+
test("should listen to the menu", function () {
|
27
|
+
var $input = $('<input />')
|
28
|
+
, $menu = $input.typeahead().data('typeahead').$menu
|
29
|
+
|
30
|
+
ok($._data($menu[0], 'events').mouseover, 'has a mouseover(pseudo: mouseenter)')
|
31
|
+
ok($._data($menu[0], 'events').click, 'has a click')
|
32
|
+
})
|
33
|
+
|
34
|
+
test("should show menu when query entered", function () {
|
35
|
+
var $input = $('<input />').typeahead({
|
36
|
+
source: ['aa', 'ab', 'ac']
|
37
|
+
})
|
38
|
+
, typeahead = $input.data('typeahead')
|
39
|
+
|
40
|
+
$input.val('a')
|
41
|
+
typeahead.lookup()
|
42
|
+
|
43
|
+
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
|
44
|
+
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
|
45
|
+
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
|
46
|
+
|
47
|
+
typeahead.$menu.remove()
|
48
|
+
})
|
49
|
+
|
50
|
+
test("should accept data source via synchronous function", function () {
|
51
|
+
var $input = $('<input />').typeahead({
|
52
|
+
source: function () {
|
53
|
+
return ['aa', 'ab', 'ac']
|
54
|
+
}
|
55
|
+
})
|
56
|
+
, typeahead = $input.data('typeahead')
|
57
|
+
|
58
|
+
$input.val('a')
|
59
|
+
typeahead.lookup()
|
60
|
+
|
61
|
+
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
|
62
|
+
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
|
63
|
+
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
|
64
|
+
|
65
|
+
typeahead.$menu.remove()
|
66
|
+
})
|
67
|
+
|
68
|
+
test("should accept data source via asynchronous function", function () {
|
69
|
+
var $input = $('<input />').typeahead({
|
70
|
+
source: function (query, process) {
|
71
|
+
process(['aa', 'ab', 'ac'])
|
72
|
+
}
|
73
|
+
})
|
74
|
+
, typeahead = $input.data('typeahead')
|
75
|
+
|
76
|
+
$input.val('a')
|
77
|
+
typeahead.lookup()
|
78
|
+
|
79
|
+
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
|
80
|
+
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
|
81
|
+
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
|
82
|
+
|
83
|
+
typeahead.$menu.remove()
|
84
|
+
})
|
85
|
+
|
86
|
+
test("should not explode when regex chars are entered", function () {
|
87
|
+
var $input = $('<input />').typeahead({
|
88
|
+
source: ['aa', 'ab', 'ac', 'mdo*', 'fat+']
|
89
|
+
})
|
90
|
+
, typeahead = $input.data('typeahead')
|
91
|
+
|
92
|
+
$input.val('+')
|
93
|
+
typeahead.lookup()
|
94
|
+
|
95
|
+
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
|
96
|
+
equals(typeahead.$menu.find('li').length, 1, 'has 1 item in menu')
|
97
|
+
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
|
98
|
+
|
99
|
+
typeahead.$menu.remove()
|
100
|
+
})
|
101
|
+
|
102
|
+
test("should hide menu when query entered", function () {
|
103
|
+
stop()
|
104
|
+
var $input = $('<input />').typeahead({
|
105
|
+
source: ['aa', 'ab', 'ac']
|
106
|
+
})
|
107
|
+
, typeahead = $input.data('typeahead')
|
108
|
+
|
109
|
+
$input.val('a')
|
110
|
+
typeahead.lookup()
|
111
|
+
|
112
|
+
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
|
113
|
+
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
|
114
|
+
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
|
115
|
+
|
116
|
+
$input.blur()
|
117
|
+
|
118
|
+
setTimeout(function () {
|
119
|
+
ok(!typeahead.$menu.is(":visible"), "typeahead is no longer visible")
|
120
|
+
start()
|
121
|
+
}, 200)
|
122
|
+
|
123
|
+
typeahead.$menu.remove()
|
124
|
+
})
|
125
|
+
|
126
|
+
test("should set next item when down arrow is pressed", function () {
|
127
|
+
var $input = $('<input />').typeahead({
|
128
|
+
source: ['aa', 'ab', 'ac']
|
129
|
+
})
|
130
|
+
, typeahead = $input.data('typeahead')
|
131
|
+
|
132
|
+
$input.val('a')
|
133
|
+
typeahead.lookup()
|
134
|
+
|
135
|
+
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
|
136
|
+
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
|
137
|
+
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
|
138
|
+
ok(typeahead.$menu.find('li').first().hasClass('active'), "first item is active")
|
139
|
+
|
140
|
+
$input.trigger({
|
141
|
+
type: 'keydown'
|
142
|
+
, keyCode: 40
|
143
|
+
})
|
144
|
+
|
145
|
+
ok(typeahead.$menu.find('li').first().next().hasClass('active'), "second item is active")
|
146
|
+
|
147
|
+
|
148
|
+
$input.trigger({
|
149
|
+
type: 'keydown'
|
150
|
+
, keyCode: 38
|
151
|
+
})
|
152
|
+
|
153
|
+
ok(typeahead.$menu.find('li').first().hasClass('active'), "first item is active")
|
154
|
+
|
155
|
+
typeahead.$menu.remove()
|
156
|
+
})
|
157
|
+
|
158
|
+
|
159
|
+
test("should set input value to selected item", function () {
|
160
|
+
var $input = $('<input />').typeahead({
|
161
|
+
source: ['aa', 'ab', 'ac']
|
162
|
+
})
|
163
|
+
, typeahead = $input.data('typeahead')
|
164
|
+
, changed = false
|
165
|
+
|
166
|
+
$input.val('a')
|
167
|
+
typeahead.lookup()
|
168
|
+
|
169
|
+
$input.change(function() { changed = true });
|
170
|
+
|
171
|
+
$(typeahead.$menu.find('li')[2]).mouseover().click()
|
172
|
+
|
173
|
+
equals($input.val(), 'ac', 'input value was correctly set')
|
174
|
+
ok(!typeahead.$menu.is(':visible'), 'the menu was hidden')
|
175
|
+
ok(changed, 'a change event was fired')
|
176
|
+
|
177
|
+
typeahead.$menu.remove()
|
178
|
+
})
|
179
|
+
|
180
|
+
test("should start querying when minLength is met", function () {
|
181
|
+
var $input = $('<input />').typeahead({
|
182
|
+
source: ['aaaa', 'aaab', 'aaac'],
|
183
|
+
minLength: 3
|
184
|
+
})
|
185
|
+
, typeahead = $input.data('typeahead')
|
186
|
+
|
187
|
+
$input.val('aa')
|
188
|
+
typeahead.lookup()
|
189
|
+
|
190
|
+
equals(typeahead.$menu.find('li').length, 0, 'has 0 items in menu')
|
191
|
+
|
192
|
+
$input.val('aaa')
|
193
|
+
typeahead.lookup()
|
194
|
+
|
195
|
+
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
|
196
|
+
|
197
|
+
typeahead.$menu.remove()
|
198
|
+
})
|
199
|
+
})
|