speedo 0.3.4 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/assets/javascripts/speedo.js +1 -1
- data/app/assets/javascripts/swim.js.coffee +17 -6
- data/app/assets/stylesheets/speedo/base.css.scss +6 -3
- data/app/assets/stylesheets/speedo/plugins.css.scss +2 -1
- data/app/assets/stylesheets/speedo/speedo.css.scss +1 -2
- data/app/assets/stylesheets/speedo/theme.css.scss +8 -50
- data/app/views/layouts/speedo/_navbar.html.haml +23 -0
- data/app/views/layouts/speedo/application.html.haml +13 -48
- data/app/views/speedo/home/examples.html.haml +98 -98
- data/lib/generators/speedo/install_generator.rb +11 -1
- data/lib/speedo/version.rb +1 -1
- data/lib/speedo.rb +1 -0
- metadata +34 -28
- data/app/assets/stylesheets/speedo/layout.css.scss +0 -220
- data/vendor/assets/javascripts/speedo/bootstrap.js +0 -1825
- data/vendor/assets/stylesheets/speedo/bootstrap/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/stylesheets/speedo/bootstrap/glyphicons-halflings.png +0 -0
- data/vendor/assets/stylesheets/speedo/bootstrap-responsive.css +0 -815
- data/vendor/assets/stylesheets/speedo/bootstrap.css +0 -4983
@@ -1,9 +1,4 @@
|
|
1
1
|
$ ->
|
2
|
-
# For Web-app mode, uncomment this (and the CSS in speedo/layout.css.scss) to make the cols fill the browser
|
3
|
-
# $('.col1, .col2, .col3').css('height',$(window).height() - $('.main_nav').outerHeight() - $('.branding').outerHeight() - 60 + 'px')
|
4
|
-
# $(window).resize ->
|
5
|
-
# $('.col1, .col2, .col3').css('height',$(window).height() - $('.main_nav').outerHeight() - $('.branding').outerHeight() - 60 + 'px')
|
6
|
-
|
7
2
|
$('.tip').livequery ->
|
8
3
|
$(@).tooltip()
|
9
4
|
|
@@ -17,11 +12,14 @@ $ ->
|
|
17
12
|
$(@).chosen()
|
18
13
|
|
19
14
|
$('input, textarea').livequery ->
|
20
|
-
$(@).placeholder()
|
15
|
+
$(@).not('input[type=password]').placeholder()
|
21
16
|
|
22
17
|
$("select, input:checkbox, input:radio, input:file").livequery ->
|
23
18
|
$(@).not('.hidden').not('.chzn').not('.bare').uniform()
|
24
19
|
|
20
|
+
$("form").livequery ->
|
21
|
+
$(@).preventDoubleSubmission()
|
22
|
+
|
25
23
|
$('input[type=date]').livequery ->
|
26
24
|
$(@).not('.bare').datepicker
|
27
25
|
numberOfMonths: 2
|
@@ -51,3 +49,16 @@ $ ->
|
|
51
49
|
{ "bSortable": false, "aTargets": [ -1 ] }
|
52
50
|
]
|
53
51
|
# "bJQueryUI": true # Use jQueryUI styling
|
52
|
+
|
53
|
+
|
54
|
+
jQuery.fn.preventDoubleSubmission = ->
|
55
|
+
$form = $(this)
|
56
|
+
$form.bind "submit", (e) ->
|
57
|
+
if $form.data("submitted") is true
|
58
|
+
e.preventDefault()
|
59
|
+
else
|
60
|
+
$form.data "submitted", true
|
61
|
+
$form.find('input[type=submit], button').attr('disabled', 'disabled')
|
62
|
+
$form.ajaxComplete ->
|
63
|
+
$form.data "submitted", false
|
64
|
+
$form.find('input[type=submit], button').removeAttr('disabled')
|
@@ -2,11 +2,14 @@
|
|
2
2
|
* {
|
3
3
|
@include box-sizing(border-box);
|
4
4
|
}
|
5
|
-
|
6
|
-
color: $text;
|
5
|
+
html {
|
7
6
|
background: $bg;
|
7
|
+
}
|
8
|
+
body {
|
8
9
|
font-size:12px;
|
9
10
|
line-height:1.231;
|
11
|
+
color: $text;
|
12
|
+
background: $bg;
|
10
13
|
}
|
11
14
|
a, a:visited:not(.btn), .link {
|
12
15
|
color: $link;
|
@@ -44,7 +47,7 @@ input:not(.btn), textarea {
|
|
44
47
|
}
|
45
48
|
footer {
|
46
49
|
position:relative;
|
47
|
-
margin:-
|
50
|
+
margin:-1em 10px 0 0; /* So it appears within #main */
|
48
51
|
float: right;
|
49
52
|
font-size: 0.8em;
|
50
53
|
opacity:0.5;
|
@@ -1,8 +1,9 @@
|
|
1
1
|
/* Error messages */
|
2
2
|
.flash {
|
3
3
|
position:relative;
|
4
|
+
border:1px solid rgba(0,0,0,0.1);
|
5
|
+
border-width:1px 0;
|
4
6
|
padding:0.5em 2em;
|
5
|
-
box-shadow:0 2px 2px #999;
|
6
7
|
font-size:1.5em;
|
7
8
|
text-align:center;
|
8
9
|
text-shadow:-1px -1px 1px #FFFFFF, 1px 1px 1px rgba(0, 0, 0, 0.3);
|
@@ -1,14 +1,13 @@
|
|
1
1
|
@import 'bootstrap';
|
2
|
+
@import 'bootstrap-responsive';
|
2
3
|
@import 'autoSuggest';
|
3
4
|
@import 'chosen';
|
4
5
|
@import 'jquery.dataTables';
|
5
6
|
@import 'jquery-ui-1.8.18.custom';
|
6
7
|
@import 'uniform.default';
|
7
|
-
@import 'bourbon';
|
8
8
|
|
9
9
|
@import 'speedo/theme';
|
10
10
|
@import 'speedo/base';
|
11
|
-
@import 'speedo/layout';
|
12
11
|
@import 'speedo/plugins';
|
13
12
|
@import 'speedo/helpers';
|
14
13
|
|
@@ -8,55 +8,13 @@ $bggreen: #e3fde4;
|
|
8
8
|
$bgblue: #bcf;
|
9
9
|
$bgyellow: #ffc;
|
10
10
|
$bgred: #f99;
|
11
|
-
/*
|
12
|
-
$
|
13
|
-
$leftcolbg: #f6f6f6;
|
14
|
-
$rightcolbg: #fafafa;
|
11
|
+
/* Main column background color, below */
|
12
|
+
$mainbg: #fff;
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
margin-left:2%;
|
23
|
-
img {
|
24
|
-
display:block;
|
25
|
-
height: 40px;
|
26
|
-
}
|
27
|
-
}
|
28
|
-
.user {
|
29
|
-
float:right;
|
30
|
-
margin:10px 2% 0;
|
31
|
-
a {
|
32
|
-
}
|
33
|
-
.user-name {
|
34
|
-
}
|
35
|
-
.user-logout {
|
36
|
-
}
|
37
|
-
}
|
38
|
-
}
|
39
|
-
|
40
|
-
|
41
|
-
.main_nav {
|
42
|
-
padding:5px 0;
|
43
|
-
background:#eee;
|
44
|
-
.search {
|
45
|
-
margin-right:10px;
|
46
|
-
}
|
47
|
-
.home {
|
48
|
-
margin-left:10px;
|
49
|
-
}
|
50
|
-
a {
|
51
|
-
display:inline-block; zoom:1;*display:inline;
|
52
|
-
padding:0.2em 0.5em;
|
53
|
-
background:#ccc;
|
54
|
-
@include border-radius(0.3em);
|
55
|
-
&:hover {
|
56
|
-
background:#ddd;
|
57
|
-
}
|
58
|
-
&.active {
|
59
|
-
@include box-shadow(inset 0 1px 2px rgba(0,0,0,0.5));
|
60
|
-
}
|
61
|
-
}
|
14
|
+
#main {
|
15
|
+
margin:0 -20px 20px;
|
16
|
+
border-radius:1em;
|
17
|
+
padding:20px;
|
18
|
+
box-shadow:0 0px 5px 1px #999;
|
19
|
+
background: $mainbg;
|
62
20
|
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.navbar
|
2
|
+
.navbar-inner
|
3
|
+
.container
|
4
|
+
= link_to image_tag('speedo/logo.png'), root_url, class: 'brand'
|
5
|
+
%a.btn.btn-navbar{data: {toggle:"collapse", target:".nav-collapse"} }
|
6
|
+
- 3.times do
|
7
|
+
%span.icon-bar
|
8
|
+
%form.navbar-search.pull-right
|
9
|
+
%input{type: 'search', name: 'search[name]', placeholder: 'Search', results: 5, autosave: 'site_search', class: 'search-query'}
|
10
|
+
.nav-collapse.collapse
|
11
|
+
%ul.nav
|
12
|
+
%li.active= link_to 'Home', root_url, {class: 'active home'}
|
13
|
+
%li= link_to 'Section1', root_url
|
14
|
+
%li= link_to 'Section2', root_url
|
15
|
+
%li= link_to 'Section3', root_url
|
16
|
+
%li= link_to 'Section4', root_url
|
17
|
+
%ul.nav.pull-right
|
18
|
+
- if @user_signed_in
|
19
|
+
%li= link_to 'current_user.name', 'account_url', class: 'user_name'
|
20
|
+
%li= link_to 'Logout', 'destroy_user_session_url', class: 'user_logout'
|
21
|
+
- else
|
22
|
+
%li= link_to 'Sign in', 'new_user_session_path', rel: 'sign_in'
|
23
|
+
%li= link_to 'Sign up', 'new_user_registration_path', rel: 'sign_up'
|
@@ -24,52 +24,17 @@
|
|
24
24
|
%body
|
25
25
|
%noscript
|
26
26
|
#noscript_warning This site works best with JavaScript enabled. Some features may not be available
|
27
|
-
#wrapper
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
= link_to '
|
40
|
-
|
41
|
-
%nav.main_nav.clearfix
|
42
|
-
%form.right.search
|
43
|
-
%input{type: 'search', name: 'search[name]', placeholder: 'Search', results: 5, autosave: 'site_search'}
|
44
|
-
|
45
|
-
= link_to 'Home', root_url, {class: 'active home'}
|
46
|
-
= link_to 'Section1', root_url
|
47
|
-
= link_to 'Section2', root_url
|
48
|
-
= link_to 'Section3', root_url
|
49
|
-
= link_to 'Section4', root_url
|
50
|
-
|
51
|
-
|
52
|
-
- if flash[:success]
|
53
|
-
.flash.success= flash[:success]
|
54
|
-
- if flash[:notice]
|
55
|
-
.flash.notice= flash[:notice]
|
56
|
-
- if flash[:alert]
|
57
|
-
.flash.alert= flash[:alert]
|
58
|
-
- if flash[:error]
|
59
|
-
.flash.error= flash[:error]
|
60
|
-
.colmask{class: @col_layout || @col_layout = 'leftcol'}
|
61
|
-
-# options: leftcol, rightcol, threecol, onecol
|
62
|
-
.colmid
|
63
|
-
.colleft
|
64
|
-
.col1
|
65
|
-
= yield
|
66
|
-
.col2
|
67
|
-
= yield :left_col
|
68
|
-
.col3
|
69
|
-
= yield :right_col
|
70
|
-
= yield :popups
|
71
|
-
%footer
|
72
|
-
Copyright ©
|
73
|
-
= Time.now.year
|
74
|
-
= link_to 'CrankApps', 'http://www.crankapps.com', target: '_blank'
|
27
|
+
#wrapper
|
28
|
+
= render 'layouts/speedo/navbar'
|
29
|
+
.container
|
30
|
+
#main
|
31
|
+
- [:success, :notice, :alert, :error].each do |f|
|
32
|
+
- if flash[f]
|
33
|
+
.flash{class: f}= flash[f]
|
34
|
+
= yield
|
35
|
+
= yield :popups
|
36
|
+
%footer
|
37
|
+
Copyright ©
|
38
|
+
= Time.now.year
|
39
|
+
= link_to 'CrankApps', 'http://www.crankapps.com', target: '_blank'
|
75
40
|
|
@@ -1,102 +1,102 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
%
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
=
|
15
|
-
|
1
|
+
.row
|
2
|
+
.span3
|
3
|
+
%h2 Left Col
|
4
|
+
%button.btn.spin_me Start spinner
|
5
|
+
%script
|
6
|
+
$('.spin_me').toggle(function() {
|
7
|
+
$(this).spin('large','#0090D5');
|
8
|
+
}, function() {
|
9
|
+
$(this).spin(false);
|
10
|
+
});
|
11
|
+
|
12
|
+
.span6
|
13
|
+
%h1 Forms with Uniform, AutoGrowing, AutoSuggesting - h1
|
14
|
+
= semantic_form_for 'speedo' do |f|
|
15
|
+
/ = f.semantic_errors
|
16
|
+
= f.inputs do
|
17
|
+
.row-fluid
|
18
|
+
= f.input 'Title', placeholder: 'Type your title', wrapper_html: {class: 'span6'}
|
19
|
+
= f.input 'Name', wrapper_html: {class: 'span6'}
|
20
|
+
= f.input 'Singer', input_html: { class: 'autoSuggest' }
|
21
|
+
= f.input 'Description', as: :text, input_html: { placeholder: 'AutoGrowing', class: 'autogrow tip', :rows => 2, title: 'Tip: you can type what you like, and this will get bigger to fit!', data: {placement: 'bottom'} }
|
22
|
+
= f.input 'Attachment', as: :file, required: false
|
23
|
+
= f.input 'Select', as: :select, include_blank: false, hint: 'Just select one!'
|
24
|
+
= f.input 'Are you real?', as: :radio, wrapper_html: { class: 'inline_choices' }
|
25
|
+
= f.input 'Which do you own?', as: :check_boxes, collection: ['Speedo','Swim Short','Bikini']
|
16
26
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
%hr
|
35
|
-
%h3 Sortable dataTable - h3
|
36
|
-
%table.dataTable
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
%hr
|
53
|
-
%h4 Inputs with bonuses - h4
|
54
|
-
%select.chzn{style: 'width:200px'}
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
%br
|
60
|
-
%input{type: :date, placeholder: 'yy-mm-dd'}
|
61
|
-
|
62
|
-
%hr
|
63
|
-
%h5 Lists - h5
|
64
|
-
%ul
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
%hr
|
72
|
-
%h6 Time - h6
|
73
|
-
%pre.ib %time.ago{datetime: Time.now.iso8601}
|
74
|
-
results in telling us when this page was loaded:
|
75
|
-
%time.ago.notice.flash.tip{datetime: Time.now.iso8601, title: Time.now.to_s(:long)}
|
76
|
-
%p Note: make sure you use iso8601 or you'll get errors!
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
$(this).spin(false);
|
91
|
-
});
|
92
|
-
|
93
|
-
= content_for :right_col do
|
94
|
-
%h3 Right Col
|
95
|
-
%a.btn{href: '#modal', data: {toggle: 'modal', backdrop: 'static'}} Modal
|
96
|
-
%br
|
97
|
-
%button.btn{data: {toggle: 'modal', target: '#popup'}} Popup Help!
|
98
|
-
%br
|
99
|
-
= link_to 'External Popup', '/', class: 'btn', data: {toggle: 'modal', target: '#external'}
|
27
|
+
%hr
|
28
|
+
%h2 Buttons - h2
|
29
|
+
= f.actions do
|
30
|
+
= f.action :submit, label: 'Submit', as: :button, button_html: { class: 'btn left' }
|
31
|
+
= f.action :cancel, label: 'Cancel', as: :link, button_html: { class: 'btn btn-danger left' }
|
32
|
+
.btn-group
|
33
|
+
%button.btn.btn-success
|
34
|
+
%i.icon-plus.icon-white
|
35
|
+
Plus icon
|
36
|
+
%button.btn
|
37
|
+
%i.icon-cog
|
38
|
+
Cog icon
|
39
|
+
%button.btn.btn-danger
|
40
|
+
%i.icon-remove.icon-white
|
41
|
+
Remove icon
|
42
|
+
= link_to 'Bootstrap buttons docs', 'http://twitter.github.com/bootstrap/base-css.html#buttons', target: '_blank'
|
43
|
+
|
44
|
+
%hr
|
45
|
+
%h3 Sortable dataTable - h3
|
46
|
+
%table.dataTable
|
47
|
+
%thead
|
48
|
+
%tr
|
49
|
+
%th Name
|
50
|
+
%th Username
|
51
|
+
%tbody
|
52
|
+
%tr
|
53
|
+
%td Sally
|
54
|
+
%td gurlsally
|
55
|
+
%tr
|
56
|
+
%td Dave
|
57
|
+
%td davieboy
|
58
|
+
%tr
|
59
|
+
%td Hilary
|
60
|
+
%td hermahili
|
61
|
+
|
62
|
+
%hr
|
63
|
+
%h4 Inputs with bonuses - h4
|
64
|
+
%select.chzn{style: 'width:200px'}
|
65
|
+
%option Canada
|
66
|
+
%option UK
|
67
|
+
%option USA
|
68
|
+
|
69
|
+
%br
|
70
|
+
%input{type: :date, placeholder: 'yy-mm-dd'}
|
71
|
+
|
72
|
+
%hr
|
73
|
+
%h5 Lists - h5
|
74
|
+
%ul
|
75
|
+
%li This is a list:
|
76
|
+
%li no margin
|
77
|
+
%li or padding
|
78
|
+
%li or bullets
|
79
|
+
%li (you'll need to add them back when you need 'em)
|
80
|
+
|
81
|
+
%hr
|
82
|
+
%h6 Time - h6
|
83
|
+
%pre.ib %time.ago{datetime: Time.now.iso8601}
|
84
|
+
results in telling us when this page was loaded:
|
85
|
+
%time.ago.notice.flash.tip{datetime: Time.now.iso8601, title: Time.now.to_s(:long)}
|
86
|
+
%p Note: make sure you use iso8601 or you'll get errors!
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
.span3
|
94
|
+
%h3 Right Col
|
95
|
+
%a.btn{href: '#modal', data: {toggle: 'modal', backdrop: 'static'}} Modal
|
96
|
+
%br
|
97
|
+
%button.btn{data: {toggle: 'modal', target: '#popup'}} Popup Help!
|
98
|
+
%br
|
99
|
+
= link_to 'External Popup', '/', class: 'btn', data: {toggle: 'modal', target: '#external'}
|
100
100
|
|
101
101
|
|
102
102
|
= content_for :popups do
|
@@ -23,10 +23,20 @@ module Speedo
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
27
|
+
def navbar
|
28
|
+
template 'app/views/layouts/speedo/_navbar.html.haml',
|
29
|
+
'app/views/layouts/_navbar.html.haml'
|
30
|
+
if_file 'app/views/layouts/application.html.haml' do |path|
|
31
|
+
if File.read(path).match /render 'layouts\/speedo\/navbar'/
|
32
|
+
gsub_file path, /render 'layouts\/speedo\/navbar'/, "render 'layouts/navbar'"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
26
36
|
|
27
37
|
# app/assets/stylesheets/speedo.css.scss
|
28
38
|
def copy_stylesheets
|
29
|
-
css = ['speedo','base','
|
39
|
+
css = ['speedo','base','plugins','theme','helpers']
|
30
40
|
css.each do |file|
|
31
41
|
copy_file "app/assets/stylesheets/speedo/#{file}.css.scss",
|
32
42
|
"app/assets/stylesheets/speedo/#{file}.css.scss"
|
data/lib/speedo/version.rb
CHANGED