moovui 0.1.2 → 0.1.3

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/chosen.jquery.js +111 -66
  3. data/app/assets/javascripts/foundation.tooltips.custom.js +10 -3
  4. data/app/assets/javascripts/jquery.placeholder.js +185 -0
  5. data/app/assets/javascripts/shBrushSass.js +4 -3
  6. data/app/assets/javascripts/shCore.custom.js +6 -0
  7. data/app/assets/stylesheets/bourbon/_bourbon-deprecated-upcoming.scss +1 -1
  8. data/app/assets/stylesheets/globals/_base.scss +4 -3
  9. data/app/assets/stylesheets/globals/_entypo.scss +4 -6
  10. data/app/assets/stylesheets/globals/_header.scss +8 -14
  11. data/app/assets/stylesheets/globals/_mixins.scss +7 -4
  12. data/app/assets/stylesheets/globals/_vars.scss +9 -9
  13. data/app/assets/stylesheets/modules/_accordion.scss +5 -6
  14. data/app/assets/stylesheets/modules/_actions.scss +3 -0
  15. data/app/assets/stylesheets/modules/{_notice.scss → _alert.scss} +32 -22
  16. data/app/assets/stylesheets/modules/_btn.scss +147 -37
  17. data/app/assets/stylesheets/modules/_btnbar.scss +16 -12
  18. data/app/assets/stylesheets/modules/_code.scss +15 -1
  19. data/app/assets/stylesheets/modules/_copy.scss +4 -1
  20. data/app/assets/stylesheets/modules/_definition.scss +15 -6
  21. data/app/assets/stylesheets/modules/_disabled.scss +12 -0
  22. data/app/assets/stylesheets/modules/_docs.scss +3 -79
  23. data/app/assets/stylesheets/modules/_dropdown.scss +2 -2
  24. data/app/assets/stylesheets/modules/_flex.scss +26 -18
  25. data/app/assets/stylesheets/modules/_grid.scss +14 -15
  26. data/app/assets/stylesheets/modules/_input.scss +21 -7
  27. data/app/assets/stylesheets/modules/_label.scss +29 -1
  28. data/app/assets/stylesheets/modules/_list.scss +2 -3
  29. data/app/assets/stylesheets/modules/_modal.scss +15 -11
  30. data/app/assets/stylesheets/modules/_pane.scss +58 -5
  31. data/app/assets/stylesheets/modules/_select.scss +96 -28
  32. data/app/assets/stylesheets/modules/_sidebar.scss +10 -10
  33. data/app/assets/stylesheets/modules/_syntax-highlighter.scss +12 -2
  34. data/app/assets/stylesheets/modules/_table.scss +117 -44
  35. data/app/assets/stylesheets/modules/_tabs.scss +56 -0
  36. data/app/assets/stylesheets/modules/_toggle.scss +121 -0
  37. data/app/assets/stylesheets/modules/_tooltip.scss +34 -17
  38. data/app/assets/stylesheets/moovui.scss +12 -3
  39. data/lib/moovui/version.rb +1 -1
  40. metadata +14 -11
  41. data/app/assets/stylesheets/fonts/TSTARPRO-BoldWeb.eot +0 -0
  42. data/app/assets/stylesheets/fonts/TSTARPRO-BoldWeb.woff +0 -0
@@ -0,0 +1,185 @@
1
+ /*! http://mths.be/placeholder v2.0.8 by @mathias */
2
+ ;(function(window, document, $) {
3
+
4
+ // Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so
5
+ var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
6
+ var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
7
+ var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
8
+ var prototype = $.fn;
9
+ var valHooks = $.valHooks;
10
+ var propHooks = $.propHooks;
11
+ var hooks;
12
+ var placeholder;
13
+
14
+ if (isInputSupported && isTextareaSupported) {
15
+
16
+ placeholder = prototype.placeholder = function() {
17
+ return this;
18
+ };
19
+
20
+ placeholder.input = placeholder.textarea = true;
21
+
22
+ } else {
23
+
24
+ placeholder = prototype.placeholder = function() {
25
+ var $this = this;
26
+ $this
27
+ .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
28
+ .not('.placeholder')
29
+ .bind({
30
+ 'focus.placeholder': clearPlaceholder,
31
+ 'blur.placeholder': setPlaceholder
32
+ })
33
+ .data('placeholder-enabled', true)
34
+ .trigger('blur.placeholder');
35
+ return $this;
36
+ };
37
+
38
+ placeholder.input = isInputSupported;
39
+ placeholder.textarea = isTextareaSupported;
40
+
41
+ hooks = {
42
+ 'get': function(element) {
43
+ var $element = $(element);
44
+
45
+ var $passwordInput = $element.data('placeholder-password');
46
+ if ($passwordInput) {
47
+ return $passwordInput[0].value;
48
+ }
49
+
50
+ return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
51
+ },
52
+ 'set': function(element, value) {
53
+ var $element = $(element);
54
+
55
+ var $passwordInput = $element.data('placeholder-password');
56
+ if ($passwordInput) {
57
+ return $passwordInput[0].value = value;
58
+ }
59
+
60
+ if (!$element.data('placeholder-enabled')) {
61
+ return element.value = value;
62
+ }
63
+ if (value == '') {
64
+ element.value = value;
65
+ // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
66
+ if (element != safeActiveElement()) {
67
+ // We can't use `triggerHandler` here because of dummy text/password inputs :(
68
+ setPlaceholder.call(element);
69
+ }
70
+ } else if ($element.hasClass('placeholder')) {
71
+ clearPlaceholder.call(element, true, value) || (element.value = value);
72
+ } else {
73
+ element.value = value;
74
+ }
75
+ // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
76
+ return $element;
77
+ }
78
+ };
79
+
80
+ if (!isInputSupported) {
81
+ valHooks.input = hooks;
82
+ propHooks.value = hooks;
83
+ }
84
+ if (!isTextareaSupported) {
85
+ valHooks.textarea = hooks;
86
+ propHooks.value = hooks;
87
+ }
88
+
89
+ $(function() {
90
+ // Look for forms
91
+ $(document).delegate('form', 'submit.placeholder', function() {
92
+ // Clear the placeholder values so they don't get submitted
93
+ var $inputs = $('.placeholder', this).each(clearPlaceholder);
94
+ setTimeout(function() {
95
+ $inputs.each(setPlaceholder);
96
+ }, 10);
97
+ });
98
+ });
99
+
100
+ // Clear placeholder values upon page reload
101
+ $(window).bind('beforeunload.placeholder', function() {
102
+ $('.placeholder').each(function() {
103
+ this.value = '';
104
+ });
105
+ });
106
+
107
+ }
108
+
109
+ function args(elem) {
110
+ // Return an object of element attributes
111
+ var newAttrs = {};
112
+ var rinlinejQuery = /^jQuery\d+$/;
113
+ $.each(elem.attributes, function(i, attr) {
114
+ if (attr.specified && !rinlinejQuery.test(attr.name)) {
115
+ newAttrs[attr.name] = attr.value;
116
+ }
117
+ });
118
+ return newAttrs;
119
+ }
120
+
121
+ function clearPlaceholder(event, value) {
122
+ var input = this;
123
+ var $input = $(input);
124
+ if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
125
+ if ($input.data('placeholder-password')) {
126
+ $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
127
+ // If `clearPlaceholder` was called from `$.valHooks.input.set`
128
+ if (event === true) {
129
+ return $input[0].value = value;
130
+ }
131
+ $input.focus();
132
+ } else {
133
+ input.value = '';
134
+ $input.removeClass('placeholder');
135
+ input == safeActiveElement() && input.select();
136
+ }
137
+ }
138
+ }
139
+
140
+ function setPlaceholder() {
141
+ var $replacement;
142
+ var input = this;
143
+ var $input = $(input);
144
+ var id = this.id;
145
+ if (input.value == '') {
146
+ if (input.type == 'password') {
147
+ if (!$input.data('placeholder-textinput')) {
148
+ try {
149
+ $replacement = $input.clone().attr({ 'type': 'text' });
150
+ } catch(e) {
151
+ $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
152
+ }
153
+ $replacement
154
+ .removeAttr('name')
155
+ .data({
156
+ 'placeholder-password': $input,
157
+ 'placeholder-id': id
158
+ })
159
+ .bind('focus.placeholder', clearPlaceholder);
160
+ $input
161
+ .data({
162
+ 'placeholder-textinput': $replacement,
163
+ 'placeholder-id': id
164
+ })
165
+ .before($replacement);
166
+ }
167
+ $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
168
+ // Note: `$input[0] != input` now!
169
+ }
170
+ $input.addClass('placeholder');
171
+ $input[0].value = $input.attr('placeholder');
172
+ } else {
173
+ $input.removeClass('placeholder');
174
+ }
175
+ }
176
+
177
+ function safeActiveElement() {
178
+ // Avoid IE9 `document.activeElement` of death
179
+ // https://github.com/mathiasbynens/jquery-placeholder/pull/99
180
+ try {
181
+ return document.activeElement;
182
+ } catch (exception) {}
183
+ }
184
+
185
+ }(this, document, jQuery));
@@ -32,14 +32,14 @@
32
32
  };
33
33
 
34
34
  var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' +
35
- 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
35
+ 'background-repeat background baseline bbox border-collapse border-color border-radius border-spacing border-style border-top ' +
36
36
  'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
37
37
  'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
38
- 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
38
+ 'border-bottom-width border-left-width border-width border bottom box-sizing cap-height caption-side centerline clear clip color ' +
39
39
  'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
40
40
  'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
41
41
  'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
42
- 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
42
+ 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width opacity orphans ' +
43
43
  'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
44
44
  'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
45
45
  'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
@@ -66,6 +66,7 @@
66
66
  var r = SyntaxHighlighter.regexLib;
67
67
 
68
68
  this.regexList = [
69
+ { regex: /\(data:[-\/;=\w]*?;base64,[+\/\w]+?=?=?\)/g, css: 'plain' }, // PATCH to prevent base64 data parsed as comment
69
70
  { regex: r.multiLineCComments, css: 'comments' }, // multiline comments
70
71
  { regex: r.singleLineCComments, css: 'comments' }, // singleline comments
71
72
  { regex: r.doubleQuotedString, css: 'string' }, // double quoted strings
@@ -2261,6 +2261,12 @@ sh.Highlighter.prototype = {
2261
2261
 
2262
2262
  // PATCH to allow embedded html
2263
2263
  var tags = [], c = 0;
2264
+
2265
+ // entity fix for Chrome
2266
+ code = code.replace(/(<[^>]*\w+=)(["'])(.*?)\2/g, function(match, p1, p2, p3) {
2267
+ return p1 + p2 + p3.replace(/</g, "&lt;").replace(/>/g, "&gt;") + p2;
2268
+ });
2269
+
2264
2270
  code = code.replace(/<(.*?)>/mg, function(m, p1) {
2265
2271
  tags[c] = p1;
2266
2272
  return String.fromCharCode(c++ + 5000);
@@ -9,5 +9,5 @@
9
9
 
10
10
  @mixin background-size ($lengths...) {
11
11
  @include prefixer(background-size, $lengths, spec);
12
- @warn "background-size is deprecated and will be removed in the next major version release";
12
+ //@warn "background-size is deprecated and will be removed in the next major version release";
13
13
  }
@@ -9,7 +9,7 @@ html {
9
9
 
10
10
  body {
11
11
  -webkit-text-size-adjust: 100%;
12
- background: #ced3d8;
12
+ background: #fff;
13
13
  color: $text-color;
14
14
  font: $font-size/#{$line-height} $font;
15
15
  margin: 0;
@@ -35,7 +35,8 @@ img {
35
35
  padding: $sp $page-margin;
36
36
  }
37
37
 
38
- .section + .section {
39
- margin: $sp2 0 0;
40
38
  }
39
+
40
+ .#{$moovui-prefix}section + .#{$moovui-prefix}section {
41
+ margin: $sp2 0 0;
41
42
  }
@@ -3,23 +3,21 @@
3
3
  @if $moovui-init {
4
4
  @font-face {
5
5
  font-family: "Entypo";
6
- src: url("fonts/entypo.eot");
7
- src: url("fonts/entypo.eot?#iefix") format("embedded-opentype"),
8
- url("fonts/entypo.woff") format("woff"),
9
- url("fonts/entypo.ttf") format("truetype"),
10
- url("fonts/entypo.svg#entypo") format("svg");
6
+ src: $entypo-ie-src;
7
+ src: $entypo-src;
11
8
  font-weight: normal;
12
9
  font-style: normal;
13
10
  }
14
11
  }
15
12
 
16
13
  @mixin entypo-icon($icon: null) {
17
- -webkit-font-smoothing: antialiased;
14
+ @include antialiased;
18
15
  display: inline-block;
19
16
  font-family: "Entypo";
20
17
  font-size: 15px;
21
18
  font-style: normal;
22
19
  font-weight: normal;
20
+ line-height: $line-height;
23
21
  vertical-align: bottom; // use bottom so negative margin-bottom can be used
24
22
  @if $icon {
25
23
  content: $icon;
@@ -7,10 +7,7 @@
7
7
  min-width: $min-page-width;
8
8
  width: 100%;
9
9
  height: $nav-height;
10
- z-index: 2;
11
- &.affix {
12
- position: fixed;
13
- }
10
+ z-index: 101;
14
11
  > .content {
15
12
  position: relative;
16
13
  }
@@ -27,18 +24,11 @@
27
24
  }
28
25
  }
29
26
  [data-dropdown]:before {
30
- @include entypo-icon;
31
- @extend .icon-triangle-down:before;
32
- color: #fff;
27
+ @include icon-triangle-down;
33
28
  margin: 13px 0 0 36px;
34
29
  position: absolute;
35
- }
36
- [data-dropdown-content].right {
37
- margin: 0 0 0 $sp;
38
- &:before {
39
- left: auto;
40
- right: 19px;
41
- }
30
+ top: 0;
31
+ right: 0;
42
32
  }
43
33
  }
44
34
 
@@ -62,3 +52,7 @@
62
52
  }
63
53
  }
64
54
  }
55
+
56
+ #header.#{$moovui-prefix}affix {
57
+ position: fixed;
58
+ }
@@ -32,9 +32,6 @@
32
32
  }
33
33
  .#{$moovui-prefix}pull-right {
34
34
  float: right;
35
- .#{$moovui-prefix}btn {
36
- margin-left: $sp;
37
- }
38
35
  }
39
36
 
40
37
  .#{$moovui-prefix}text-left {
@@ -51,12 +48,18 @@
51
48
  width: 100%;
52
49
  }
53
50
 
51
+ @mixin antialiased {
52
+ -webkit-font-smoothing: antialiased;
53
+ -moz-osx-font-smoothing: grayscale;
54
+ }
55
+
54
56
  @mixin hide-text {
55
57
  // trying out Bootstrap's method over older HTML5 Boilerplate { text-indent: 100%; white-space: nowrap; overflow: hidden; }
56
58
  background-color: transparent;
57
59
  border: 0;
58
- color: transparent;
60
+ // color: transparent;
59
61
  font: 0/0 a;
62
+ letter-spacing: 0;
60
63
  text-shadow: none;
61
64
  }
62
65
 
@@ -1,5 +1,5 @@
1
1
  $font: Lato, Helvetica, Arial, sans-serif !default;
2
- $code-font: "Source Code Pro", Consolas, Monaco, Courier, monospace !default;
2
+ $code-font: "Source Code Pro", Consolas, Menlo, Courier, monospace !default;
3
3
 
4
4
  $text-color: #444;
5
5
 
@@ -38,18 +38,18 @@ $sp8: 8 * $sp;
38
38
 
39
39
  $radius: 4px;
40
40
 
41
- $font-size: 15px;
41
+ $font-size: 14px;
42
42
  $h1-size: 24px;
43
43
  $h2-size: 18px;
44
44
  $h3-size: 16px;
45
- $h4-size: 15px;
46
- $h5-size: 11px;
45
+ $h4-size: 14px;
46
+ $h5-size: 12px;
47
47
 
48
- $h1-copy-size: 35px;
49
- $h2-copy-size: 25px;
50
- $h3-copy-size: 21px;
51
- $h4-copy-size: 15px;
52
- $h5-copy-size: 15px;
48
+ $h1-copy-size: 36px;
49
+ $h2-copy-size: 26px;
50
+ $h3-copy-size: 20px;
51
+ $h4-copy-size: 16px;
52
+ $h5-copy-size: 16px;
53
53
 
54
54
 
55
55
  $page-margin: 10px; // shown when window is at $page-width
@@ -1,5 +1,5 @@
1
1
  @if $moovui-init {
2
- [data-section="accordion"] > :not(.active) [data-section-content] {
2
+ [data-section="accordion"] > :not(.active) > [data-section-content] {
3
3
  display: none;
4
4
  }
5
5
  }
@@ -11,13 +11,12 @@
11
11
  font-weight: 300;
12
12
  margin: 0 0 $sp2;
13
13
  [data-section-title] {
14
- cursor: pointer;
14
+ color: inherit;
15
+ display: block;
15
16
  font-weight: bold;
16
- margin: 0;
17
17
  padding: $sp $sp $sp 25px;
18
18
  &:before {
19
- @include entypo-icon;
20
- @extend .icon-triangle-right:before;
19
+ @include icon-triangle-right;
21
20
  margin: 0 0 0 -13px;
22
21
  position: absolute;
23
22
  width: 13px;
@@ -29,7 +28,7 @@
29
28
  }
30
29
  }
31
30
  .active [data-section-title]:before {
32
- @extend .icon-triangle-down:before;
31
+ content: $icon-triangle-down;
33
32
  margin: 0 0 0 -14px;
34
33
  width: 14px;
35
34
  }
@@ -0,0 +1,3 @@
1
+ .#{$moovui-prefix}actions {
2
+ padding-top: $sp3;
3
+ }
@@ -1,15 +1,14 @@
1
- @mixin notice {
1
+ @mixin alert {
2
2
  @include radius;
3
3
  background: #98c17b;
4
4
  color: #fff;
5
5
  margin: 0 auto $sp;
6
- padding: $sp 14px $sp 68px;
6
+ padding: $sp 40px $sp 68px;
7
7
  position: relative;
8
8
  max-width: $page-width - $sp2;
9
9
  min-height: 60px;
10
10
  &:before {
11
- @include entypo-icon;
12
- @extend .icon-circled-info:before;
11
+ @include icon-circled-info;
13
12
  color: #fff;
14
13
  font-size: 40px;
15
14
  margin: -12px 0 0;
@@ -18,18 +17,18 @@
18
17
  left: 15px;
19
18
  }
20
19
  &.success:before {
21
- @extend .icon-thumbs-up:before;
20
+ content: $icon-thumbs-up;
22
21
  }
23
22
  &.error {
24
23
  background: #e46c67;
25
24
  &:before {
26
- @extend .icon-warning:before;
25
+ content: $icon-warning;
27
26
  }
28
27
  }
29
28
  &.warning {
30
29
  background: #e4cb5d;
31
30
  &:before {
32
- @extend .icon-warning:before;
31
+ content: $icon-warning;
33
32
  }
34
33
  }
35
34
  .close {
@@ -38,6 +37,7 @@
38
37
  font-size: 20px;
39
38
  font-weight: bold;
40
39
  line-height: 22px;
40
+ margin: 0 -26px 0 0;
41
41
  opacity: 0.2;
42
42
  text-decoration: none;
43
43
  &:hover, &:focus {
@@ -60,28 +60,38 @@
60
60
  @mixin callout {
61
61
  @include radius;
62
62
  background: #eff2f3;
63
- border: 1px solid #bdc4cb;
64
- border-left-width: 50px;
63
+ border: solid #bdc4cb;
64
+ border-width: 1px 1px 1px 0;
65
65
  font-weight: normal;
66
66
  margin: 0 0 $sp2;
67
- padding: $sp;
67
+ padding: ($sp - 1px) ($sp - 1px) ($sp - 1px) $sp6;
68
68
  position: relative;
69
69
  &:before {
70
- @include entypo-icon;
71
- @extend .icon-info:before;
70
+ @include border-radius(4px 0 0 4px);
71
+ background: #bdc4cb;
72
+ content: "";
73
+ position: absolute;
74
+ top: 0;
75
+ left: 0;
76
+ width: 50px;
77
+ height: 100%;
78
+ }
79
+ &:after {
80
+ @include icon-circled-info;
72
81
  color: #fff;
73
82
  font-size: 20px;
74
- margin: -13px 0 0 -60px;
83
+ margin: -13px 0 0;
75
84
  position: absolute;
76
85
  top: 50%;
86
+ left: 0;
77
87
  text-align: center;
78
88
  width: 50px;
79
89
  }
80
- &.warning:before {
81
- @extend .icon-warning:before;
90
+ &.warning:after {
91
+ content: $icon-warning;
82
92
  }
83
93
  p, ol {
84
- font: inherit;
94
+ font: inherit !important;
85
95
  }
86
96
  > p:last-child {
87
97
  margin: 0;
@@ -90,22 +100,22 @@
90
100
 
91
101
  @if $moovui-init {
92
102
  [data-alert] {
93
- @include notice;
103
+ @include alert;
104
+ }
94
105
  }
95
106
 
96
- .callout {
107
+ .#{$moovui-prefix}callout {
97
108
  @include callout;
98
109
  }
99
110
 
100
- .text-success {
111
+ .#{$moovui-prefix}text-success {
101
112
  color: $green;
102
113
  }
103
114
 
104
- .text-error {
115
+ .#{$moovui-prefix}text-error {
105
116
  color: $red;
106
117
  }
107
118
 
108
- .text-warning {
119
+ .#{$moovui-prefix}text-warning {
109
120
  color: mix($orange, $yellow);
110
121
  }
111
- }