ns-styleguide 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (205) hide show
  1. checksums.yaml +7 -0
  2. data/style-guide/_style-guide.scss +4 -0
  3. data/style-guide/global/_base.scss +33 -0
  4. data/style-guide/global/_colors.scss +24 -0
  5. data/style-guide/global/_extendables.scss +16 -0
  6. data/style-guide/global/_functions.scss +5 -0
  7. data/style-guide/global/_mixins.scss +5 -0
  8. data/style-guide/global/_variables.scss +15 -0
  9. data/templates/project/assets/6.jpg +0 -0
  10. data/templates/project/assets/_nsfont/_comment.svg +8 -0
  11. data/templates/project/assets/_nsfont/_default-user.svg +12 -0
  12. data/templates/project/assets/_nsfont/_home.svg +12 -0
  13. data/templates/project/assets/_nsfont/_notify.svg +13 -0
  14. data/templates/project/assets/_nsfont/_pillbox.svg +27 -0
  15. data/templates/project/assets/_nsfont/_search.svg +12 -0
  16. data/templates/project/assets/_nsfont/bs-circulatory.svg +26 -0
  17. data/templates/project/assets/_nsfont/bs-digestive.svg +28 -0
  18. data/templates/project/assets/_nsfont/bs-endocrine.svg +33 -0
  19. data/templates/project/assets/_nsfont/bs-immune.svg +31 -0
  20. data/templates/project/assets/_nsfont/bs-muscular-skeletal.svg +119 -0
  21. data/templates/project/assets/_nsfont/bs-nervous.svg +31 -0
  22. data/templates/project/assets/_nsfont/bs-reprodutive.svg +29 -0
  23. data/templates/project/assets/_nsfont/bs-respiratory.svg +17 -0
  24. data/templates/project/assets/_nsfont/ls-athletic.svg +17 -0
  25. data/templates/project/assets/_nsfont/ls-diet.svg +21 -0
  26. data/templates/project/assets/_nsfont/ls-energyvitality.svg +14 -0
  27. data/templates/project/assets/_nsfont/ls-mentalacuity.svg +34 -0
  28. data/templates/project/assets/_nsfont/ls-sexual.svg +42 -0
  29. data/templates/project/assets/_nsfont/ls-weightcontrol.svg +17 -0
  30. data/templates/project/assets/_nsfont/nsa-check.svg +7 -0
  31. data/templates/project/assets/_nsfont/nsa-questionmark.svg +15 -0
  32. data/templates/project/assets/_nsfont/nsa-xmark.svg +10 -0
  33. data/templates/project/assets/_nsfont/st-botanical.svg +18 -0
  34. data/templates/project/assets/_nsfont/st-food.svg +24 -0
  35. data/templates/project/assets/_nsfont/st-mineral.svg +15 -0
  36. data/templates/project/assets/_nsfont/st-other.svg +9 -0
  37. data/templates/project/assets/_nsfont/st-vitamin.svg +25 -0
  38. data/templates/project/assets/_nsfont/vote-down.svg +10 -0
  39. data/templates/project/assets/_nsfont/vote-up.svg +10 -0
  40. data/templates/project/assets/_nsfont/yp-age.svg +22 -0
  41. data/templates/project/assets/_nsfont/yp-gender.svg +16 -0
  42. data/templates/project/assets/_nsfont/yp-preventiontherapy.svg +109 -0
  43. data/templates/project/assets/aloe-vera.jpg +0 -0
  44. data/templates/project/assets/alzheimers-brainpuzzle-512.jpg +0 -0
  45. data/templates/project/assets/blurred1.jpg +0 -0
  46. data/templates/project/assets/blurred5.jpg +0 -0
  47. data/templates/project/assets/blurred6.jpg +0 -0
  48. data/templates/project/assets/botanical.svg +18 -0
  49. data/templates/project/assets/capsule.jpg +0 -0
  50. data/templates/project/assets/clouds.jpg +0 -0
  51. data/templates/project/assets/clouds.png +0 -0
  52. data/templates/project/assets/factorfiction-s3d0b80354a.png +0 -0
  53. data/templates/project/assets/factorfiction/factorfiction.png +0 -0
  54. data/templates/project/assets/factorfiction/factorfiction.svg +420 -0
  55. data/templates/project/assets/fff.png +0 -0
  56. data/templates/project/assets/food.svg +24 -0
  57. data/templates/project/assets/foundation/orbit/bullets.jpg +0 -0
  58. data/templates/project/assets/foundation/orbit/left-arrow-small.png +0 -0
  59. data/templates/project/assets/foundation/orbit/left-arrow.png +0 -0
  60. data/templates/project/assets/foundation/orbit/loading.gif +0 -0
  61. data/templates/project/assets/foundation/orbit/mask-black.png +0 -0
  62. data/templates/project/assets/foundation/orbit/pause-black.png +0 -0
  63. data/templates/project/assets/foundation/orbit/right-arrow-small.png +0 -0
  64. data/templates/project/assets/foundation/orbit/right-arrow.png +0 -0
  65. data/templates/project/assets/foundation/orbit/rotator-black.png +0 -0
  66. data/templates/project/assets/foundation/orbit/timer-black.png +0 -0
  67. data/templates/project/assets/glyphicons-halflings-white.png +0 -0
  68. data/templates/project/assets/glyphicons-halflings.png +0 -0
  69. data/templates/project/assets/hero.jpg +0 -0
  70. data/templates/project/assets/hero2.jpg +0 -0
  71. data/templates/project/assets/hero3.jpg +0 -0
  72. data/templates/project/assets/ice.jpg +0 -0
  73. data/templates/project/assets/iceberg.jpg +0 -0
  74. data/templates/project/assets/landing.jpg +0 -0
  75. data/templates/project/assets/mineral.svg +15 -0
  76. data/templates/project/assets/moon.jpg +0 -0
  77. data/templates/project/assets/ns-logo.svg +177 -0
  78. data/templates/project/assets/nslogo-s56b550b473.png +0 -0
  79. data/templates/project/assets/nslogo/nslogo.png +0 -0
  80. data/templates/project/assets/nslogo/nslogo.svg +177 -0
  81. data/templates/project/assets/other.svg +9 -0
  82. data/templates/project/assets/pillbox-hover.svg +33 -0
  83. data/templates/project/assets/pillbox-image.png +0 -0
  84. data/templates/project/assets/pillbox-image.svg +7880 -0
  85. data/templates/project/assets/pillbox.svg +27 -0
  86. data/templates/project/assets/rocket.jpg +0 -0
  87. data/templates/project/assets/shuttle.jpeg +0 -0
  88. data/templates/project/assets/svg/community-clear.svg +82 -0
  89. data/templates/project/assets/svg/community.svg +64 -0
  90. data/templates/project/assets/svg/conditions.svg +18 -0
  91. data/templates/project/assets/svg/experts.svg +32 -0
  92. data/templates/project/assets/svg/fact-or-fiction.svg +420 -0
  93. data/templates/project/assets/svg/lifestyle.svg +22 -0
  94. data/templates/project/assets/svg/perspective.svg +22 -0
  95. data/templates/project/assets/svg/supplements.svg +19 -0
  96. data/templates/project/assets/svgicons-s95620826ea.png +0 -0
  97. data/templates/project/assets/svgicons/community.png +0 -0
  98. data/templates/project/assets/svgicons/community.svg +55 -0
  99. data/templates/project/assets/svgicons/conditions.png +0 -0
  100. data/templates/project/assets/svgicons/conditions.svg +16 -0
  101. data/templates/project/assets/svgicons/experts.png +0 -0
  102. data/templates/project/assets/svgicons/experts.svg +30 -0
  103. data/templates/project/assets/svgicons/lifestyle.png +0 -0
  104. data/templates/project/assets/svgicons/lifestyle.svg +20 -0
  105. data/templates/project/assets/svgicons/supplements.png +0 -0
  106. data/templates/project/assets/svgicons/supplements.svg +17 -0
  107. data/templates/project/assets/svgicons/your-perspective.png +0 -0
  108. data/templates/project/assets/svgicons/your-perspective.svg +20 -0
  109. data/templates/project/assets/users/kp.jpg +0 -0
  110. data/templates/project/assets/video_placeholder.jpg +0 -0
  111. data/templates/project/assets/vitamin.svg +25 -0
  112. data/templates/project/component.json +9 -0
  113. data/templates/project/libs/bootstrap-modal.js +374 -0
  114. data/templates/project/libs/bootstrap/README.md +106 -0
  115. data/templates/project/libs/bootstrap/application.js +156 -0
  116. data/templates/project/libs/bootstrap/bootstrap-affix.js +117 -0
  117. data/templates/project/libs/bootstrap/bootstrap-alert.js +99 -0
  118. data/templates/project/libs/bootstrap/bootstrap-button.js +105 -0
  119. data/templates/project/libs/bootstrap/bootstrap-carousel.js +207 -0
  120. data/templates/project/libs/bootstrap/bootstrap-collapse.js +167 -0
  121. data/templates/project/libs/bootstrap/bootstrap-dropdown.js +165 -0
  122. data/templates/project/libs/bootstrap/bootstrap-modal.js +251 -0
  123. data/templates/project/libs/bootstrap/bootstrap-popover.js +114 -0
  124. data/templates/project/libs/bootstrap/bootstrap-scrollspy.js +162 -0
  125. data/templates/project/libs/bootstrap/bootstrap-tab.js +144 -0
  126. data/templates/project/libs/bootstrap/bootstrap-tooltip.js +361 -0
  127. data/templates/project/libs/bootstrap/bootstrap-transition.js +60 -0
  128. data/templates/project/libs/bootstrap/bootstrap-typeahead.js +335 -0
  129. data/templates/project/libs/bootstrap/bootstrap.js +2280 -0
  130. data/templates/project/libs/bootstrap/bootstrap.min.js +6 -0
  131. data/templates/project/libs/bootstrap/holder/holder.js +401 -0
  132. data/templates/project/libs/bootstrap/html5shiv.js +8 -0
  133. data/templates/project/libs/bootstrap/jquery.js +5 -0
  134. data/templates/project/libs/bootstrap/respond/respond.min.js +6 -0
  135. data/templates/project/libs/equalheights.js +46 -0
  136. data/templates/project/libs/foundation/foundation.alerts.js +50 -0
  137. data/templates/project/libs/foundation/foundation.clearing.js +516 -0
  138. data/templates/project/libs/foundation/foundation.cookie.js +74 -0
  139. data/templates/project/libs/foundation/foundation.dropdown.js +175 -0
  140. data/templates/project/libs/foundation/foundation.forms.js +513 -0
  141. data/templates/project/libs/foundation/foundation.joyride.js +831 -0
  142. data/templates/project/libs/foundation/foundation.js +401 -0
  143. data/templates/project/libs/foundation/foundation.magellan.js +130 -0
  144. data/templates/project/libs/foundation/foundation.orbit.js +373 -0
  145. data/templates/project/libs/foundation/foundation.placeholder.js +159 -0
  146. data/templates/project/libs/foundation/foundation.reveal.js +277 -0
  147. data/templates/project/libs/foundation/foundation.section.js +407 -0
  148. data/templates/project/libs/foundation/foundation.tooltips.js +200 -0
  149. data/templates/project/libs/foundation/foundation.topbar.js +245 -0
  150. data/templates/project/libs/hello.coffee +1 -0
  151. data/templates/project/libs/helper.js +385 -0
  152. data/templates/project/libs/jquery.magnific-popup.js +1783 -0
  153. data/templates/project/libs/jquery.magnific-popup.min.js +4 -0
  154. data/templates/project/libs/jquery.mixitup.min.js +43 -0
  155. data/templates/project/libs/main.js +1 -0
  156. data/templates/project/libs/ns.js +128 -0
  157. data/templates/project/libs/select2-3.4.0/README.md +83 -0
  158. data/templates/project/libs/select2-3.4.0/component.json +8 -0
  159. data/templates/project/libs/select2-3.4.0/release.sh +69 -0
  160. data/templates/project/libs/select2-3.4.0/select2-spinner.gif +0 -0
  161. data/templates/project/libs/select2-3.4.0/select2.css +652 -0
  162. data/templates/project/libs/select2-3.4.0/select2.jquery.json +36 -0
  163. data/templates/project/libs/select2-3.4.0/select2.js +3054 -0
  164. data/templates/project/libs/select2-3.4.0/select2.min.js +22 -0
  165. data/templates/project/libs/select2-3.4.0/select2.png +0 -0
  166. data/templates/project/libs/select2-3.4.0/select2_locale_ca.js +17 -0
  167. data/templates/project/libs/select2-3.4.0/select2_locale_cs.js +49 -0
  168. data/templates/project/libs/select2-3.4.0/select2_locale_da.js +17 -0
  169. data/templates/project/libs/select2-3.4.0/select2_locale_de.js +15 -0
  170. data/templates/project/libs/select2-3.4.0/select2_locale_en.js.template +17 -0
  171. data/templates/project/libs/select2-3.4.0/select2_locale_es.js +15 -0
  172. data/templates/project/libs/select2-3.4.0/select2_locale_et.js +17 -0
  173. data/templates/project/libs/select2-3.4.0/select2_locale_eu.js +43 -0
  174. data/templates/project/libs/select2-3.4.0/select2_locale_fr.js +15 -0
  175. data/templates/project/libs/select2-3.4.0/select2_locale_gl.js +43 -0
  176. data/templates/project/libs/select2-3.4.0/select2_locale_he.js +17 -0
  177. data/templates/project/libs/select2-3.4.0/select2_locale_hr.js +42 -0
  178. data/templates/project/libs/select2-3.4.0/select2_locale_hu.js +15 -0
  179. data/templates/project/libs/select2-3.4.0/select2_locale_is.js +16 -0
  180. data/templates/project/libs/select2-3.4.0/select2_locale_it.js +15 -0
  181. data/templates/project/libs/select2-3.4.0/select2_locale_ja.js +15 -0
  182. data/templates/project/libs/select2-3.4.0/select2_locale_lt.js +29 -0
  183. data/templates/project/libs/select2-3.4.0/select2_locale_lv.js +16 -0
  184. data/templates/project/libs/select2-3.4.0/select2_locale_mk.js +17 -0
  185. data/templates/project/libs/select2-3.4.0/select2_locale_nl.js +15 -0
  186. data/templates/project/libs/select2-3.4.0/select2_locale_no.js +18 -0
  187. data/templates/project/libs/select2-3.4.0/select2_locale_pl.js +37 -0
  188. data/templates/project/libs/select2-3.4.0/select2_locale_pt-BR.js +15 -0
  189. data/templates/project/libs/select2-3.4.0/select2_locale_pt-PT.js +15 -0
  190. data/templates/project/libs/select2-3.4.0/select2_locale_ro.js +15 -0
  191. data/templates/project/libs/select2-3.4.0/select2_locale_ru.js +15 -0
  192. data/templates/project/libs/select2-3.4.0/select2_locale_sk.js +48 -0
  193. data/templates/project/libs/select2-3.4.0/select2_locale_sv.js +17 -0
  194. data/templates/project/libs/select2-3.4.0/select2_locale_tr.js +17 -0
  195. data/templates/project/libs/select2-3.4.0/select2_locale_ua.js +17 -0
  196. data/templates/project/libs/select2-3.4.0/select2_locale_vi.js +18 -0
  197. data/templates/project/libs/select2-3.4.0/select2_locale_zh-CN.js +14 -0
  198. data/templates/project/libs/select2-3.4.0/select2_locale_zh-TW.js +14 -0
  199. data/templates/project/libs/select2-3.4.0/select2x2.png +0 -0
  200. data/templates/project/libs/vendor/modernizr-2.6.2.min.js +4 -0
  201. data/templates/project/libs/vendor/zepto.js +1884 -0
  202. data/templates/project/libs/vendor/zepto.min.js +2 -0
  203. data/templates/project/manifest.rb +9 -0
  204. data/templates/project/style.scss.erb +2 -0
  205. metadata +288 -0
@@ -0,0 +1,373 @@
1
+ ;(function ($, window, document, undefined) {
2
+ 'use strict';
3
+
4
+ Foundation.libs = Foundation.libs || {};
5
+
6
+ Foundation.libs.orbit = {
7
+ name: 'orbit',
8
+
9
+ version: '4.1.0',
10
+
11
+ settings: {
12
+ timer_speed: 10000,
13
+ animation_speed: 500,
14
+ bullets: true,
15
+ stack_on_small: true,
16
+ navigation_arrows: true,
17
+ slide_number: true,
18
+ container_class: 'orbit-container',
19
+ stack_on_small_class: 'orbit-stack-on-small',
20
+ next_class: 'orbit-next',
21
+ prev_class: 'orbit-prev',
22
+ timer_container_class: 'orbit-timer',
23
+ timer_paused_class: 'paused',
24
+ timer_progress_class: 'orbit-progress',
25
+ slides_container_class: 'orbit-slides-container',
26
+ bullets_container_class: 'orbit-bullets',
27
+ bullets_active_class: 'active',
28
+ slide_number_class: 'orbit-slide-number',
29
+ caption_class: 'orbit-caption',
30
+ active_slide_class: 'active',
31
+ orbit_transition_class: 'orbit-transitioning'
32
+ },
33
+
34
+ init: function (scope, method, options) {
35
+ var self = this;
36
+ Foundation.inherit(self, 'data_options');
37
+
38
+ if (typeof method === 'object') {
39
+ $.extend(true, self.settings, method);
40
+ }
41
+
42
+ $('[data-orbit]', scope).each(function(idx, el) {
43
+ var scoped_self = $.extend(true, {}, self);
44
+ scoped_self._init(idx, el);
45
+ });
46
+ },
47
+
48
+ _container_html: function() {
49
+ var self = this;
50
+ return '<div class="' + self.settings.container_class + '"></div>';
51
+ },
52
+
53
+ _bullets_container_html: function($slides) {
54
+ var self = this,
55
+ $list = $('<ol class="' + self.settings.bullets_container_class + '"></ol>');
56
+ $slides.each(function(idx, slide) {
57
+ var $item = $('<li data-orbit-slide-number="' + (idx+1) + '" class=""></li>');
58
+ if (idx === 0) {
59
+ $item.addClass(self.settings.bullets_active_class);
60
+ }
61
+ $list.append($item);
62
+ });
63
+ return $list;
64
+ },
65
+
66
+ _slide_number_html: function(slide_number, total_slides) {
67
+ var self = this,
68
+ $container = $('<div class="' + self.settings.slide_number_class + '"></div>');
69
+ $container.append('<span>' + slide_number + '</span> of <span>' + total_slides + '</span>');
70
+ return $container;
71
+ },
72
+
73
+ _timer_html: function() {
74
+ var self = this;
75
+ if (typeof self.settings.timer_speed === 'number' && self.settings.timer_speed > 0) {
76
+ return '<div class="' + self.settings.timer_container_class
77
+ + '"><span></span><div class="' + self.settings.timer_progress_class
78
+ + '"></div></div>';
79
+ } else {
80
+ return '';
81
+ }
82
+ },
83
+
84
+ _next_html: function() {
85
+ var self = this;
86
+ return '<a href="#" class="' + self.settings.next_class + '">Next <span></span></a>';
87
+ },
88
+
89
+ _prev_html: function() {
90
+ var self = this;
91
+ return '<a href="#" class="' + self.settings.prev_class + '">Prev <span></span></a>';
92
+ },
93
+
94
+ _init: function (idx, slider) {
95
+ var self = this,
96
+ $slides_container = $(slider),
97
+ $container = $slides_container.wrap(self._container_html()).parent(),
98
+ $slides = $slides_container.children();
99
+
100
+ $.extend(true, self.settings, self.data_options($slides_container));
101
+
102
+ if (self.settings.navigation_arrows) {
103
+ $container.append(self._prev_html());
104
+ $container.append(self._next_html());
105
+ }
106
+ $slides_container.addClass(self.settings.slides_container_class);
107
+ if (self.settings.stack_on_small) {
108
+ $container.addClass(self.settings.stack_on_small_class);
109
+ }
110
+ if (self.settings.slide_number) {
111
+ $container.append(self._slide_number_html(1, $slides.length));
112
+ }
113
+ $container.append(self._timer_html());
114
+ if (self.settings.bullets) {
115
+ $container.after(self._bullets_container_html($slides));
116
+ }
117
+ // To better support the "sliding" effect it's easier
118
+ // if we just clone the first and last slides
119
+ $slides_container.append($slides.first().clone().attr('data-orbit-slide',''));
120
+ $slides_container.prepend($slides.last().clone().attr('data-orbit-slide',''));
121
+ // Make the first "real" slide active
122
+ $slides_container.css('marginLeft', '-100%');
123
+ $slides.first().addClass(self.settings.active_slide_class);
124
+
125
+ self._init_events($slides_container);
126
+ self._init_dimensions($slides_container);
127
+ self._start_timer($slides_container);
128
+ },
129
+
130
+ _init_events: function ($slides_container) {
131
+ var self = this,
132
+ $container = $slides_container.parent();
133
+
134
+ $(window)
135
+ .on('load.fndtn.orbit', function() {
136
+ $slides_container.height('');
137
+ $slides_container.height($slides_container.height($container.height()));
138
+ $slides_container.trigger('orbit:ready');
139
+ })
140
+ .on('resize.fndtn.orbit', function() {
141
+ $slides_container.height('');
142
+ $slides_container.height($slides_container.height($container.height()));
143
+ });
144
+
145
+ $(document).on('click.fndtn.orbit', '[data-orbit-link]', function(e) {
146
+ e.preventDefault();
147
+ var id = $(e.currentTarget).attr('data-orbit-link'),
148
+ $slide = $slides_container.find('[data-orbit-slide=' + id + ']').first();
149
+
150
+ if ($slide.length === 1) {
151
+ self._reset_timer($slides_container, true);
152
+ self._goto($slides_container, $slide.index(), function() {});
153
+ }
154
+ });
155
+
156
+ $container.siblings('.' + self.settings.bullets_container_class)
157
+ .on('click.fndtn.orbit', '[data-orbit-slide-number]', function(e) {
158
+ e.preventDefault();
159
+ self._reset_timer($slides_container, true);
160
+ self._goto($slides_container, $(e.currentTarget).data('orbit-slide-number'),function() {});
161
+ });
162
+
163
+ $container
164
+ .on('orbit:after-slide-change.fndtn.orbit', function(e, orbit) {
165
+ var $slide_number = $container.find('.' + self.settings.slide_number_class);
166
+
167
+ if ($slide_number.length === 1) {
168
+ $slide_number.replaceWith(self._slide_number_html(orbit.slide_number, orbit.total_slides));
169
+ }
170
+ })
171
+ .on('orbit:next-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.next_class, function(e) {
172
+ e.preventDefault();
173
+ self._reset_timer($slides_container, true);
174
+ self._goto($slides_container, 'next', function() {});
175
+ })
176
+ .on('orbit:prev-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.prev_class, function(e) {
177
+ e.preventDefault();
178
+ self._reset_timer($slides_container, true);
179
+ self._goto($slides_container, 'prev', function() {});
180
+ })
181
+ .on('orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit', '.' + self.settings.timer_container_class, function(e) {
182
+ e.preventDefault();
183
+ var $timer = $(e.currentTarget).toggleClass(self.settings.timer_paused_class),
184
+ $slides_container = $timer.closest('.' + self.settings.container_class)
185
+ .find('.' + self.settings.slides_container_class);
186
+
187
+ if ($timer.hasClass(self.settings.timer_paused_class)) {
188
+ self._stop_timer($slides_container);
189
+ } else {
190
+ self._start_timer($slides_container);
191
+ }
192
+ })
193
+ .on('touchstart.fndtn.orbit', function(e) {
194
+ if (!e.touches) { e = e.originalEvent; }
195
+ var data = {
196
+ start_page_x: e.touches[0].pageX,
197
+ start_page_y: e.touches[0].pageY,
198
+ start_time: (new Date()).getTime(),
199
+ delta_x: 0,
200
+ is_scrolling: undefined
201
+ };
202
+ $container.data('swipe-transition', data);
203
+ e.stopPropagation();
204
+ })
205
+ .on('touchmove.fndtn.orbit', function(e) {
206
+ if (!e.touches) { e = e.originalEvent; }
207
+ // Ignore pinch/zoom events
208
+ if(e.touches.length > 1 || e.scale && e.scale !== 1) return;
209
+
210
+ var data = $container.data('swipe-transition');
211
+ if (typeof data === 'undefined') {
212
+ data = {};
213
+ }
214
+
215
+ data.delta_x = e.touches[0].pageX - data.start_page_x;
216
+
217
+ if ( typeof data.is_scrolling === 'undefined') {
218
+ data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
219
+ }
220
+
221
+ if (!data.is_scrolling && !data.active) {
222
+ e.preventDefault();
223
+ self._stop_timer($slides_container);
224
+ var direction = (data.delta_x < 0) ? 'next' : 'prev';
225
+ data.active = true;
226
+ self._goto($slides_container, direction, function() {});
227
+ }
228
+ })
229
+ .on('touchend.fndtn.orbit', function(e) {
230
+ $container.data('swipe-transition', {});
231
+ e.stopPropagation();
232
+ });
233
+ },
234
+
235
+ _init_dimensions: function ($slides_container) {
236
+ var $container = $slides_container.parent(),
237
+ $slides = $slides_container.children();
238
+
239
+ $slides_container.css('width', $slides.length * 100 + '%');
240
+ $slides.css('width', 100 / $slides.length + '%');
241
+ $slides_container.height($container.height());
242
+ $slides_container.css('width', $slides.length * 100 + '%');
243
+ },
244
+
245
+ _start_timer: function ($slides_container) {
246
+ var self = this,
247
+ $container = $slides_container.parent();
248
+
249
+ var callback = function() {
250
+ self._reset_timer($slides_container, false);
251
+ self._goto($slides_container, 'next', function() {
252
+ self._start_timer($slides_container);
253
+ });
254
+ };
255
+
256
+ var $timer = $container.find('.' + self.settings.timer_container_class),
257
+ $progress = $timer.find('.' + self.settings.timer_progress_class),
258
+ progress_pct = ($progress.width() / $timer.width()),
259
+ delay = self.settings.timer_speed - (progress_pct * self.settings.timer_speed);
260
+
261
+ $progress.animate({'width': '100%'}, delay, 'linear', callback);
262
+ $slides_container.trigger('orbit:timer-started');
263
+ },
264
+
265
+ _stop_timer: function ($slides_container) {
266
+ var self = this,
267
+ $container = $slides_container.parent(),
268
+ $timer = $container.find('.' + self.settings.timer_container_class),
269
+ $progress = $timer.find('.' + self.settings.timer_progress_class),
270
+ progress_pct = $progress.width() / $timer.width();
271
+ self._rebuild_timer($container, progress_pct * 100 + '%');
272
+ // $progress.stop();
273
+ $slides_container.trigger('orbit:timer-stopped');
274
+ $timer = $container.find('.' + self.settings.timer_container_class);
275
+ $timer.addClass(self.settings.timer_paused_class);
276
+ },
277
+
278
+ _reset_timer: function($slides_container, is_paused) {
279
+ var self = this,
280
+ $container = $slides_container.parent();
281
+ self._rebuild_timer($container, '0%');
282
+ if (typeof is_paused === 'boolean' && is_paused) {
283
+ var $timer = $container.find('.' + self.settings.timer_container_class);
284
+ $timer.addClass(self.settings.timer_paused_class);
285
+ }
286
+ },
287
+
288
+ _rebuild_timer: function ($container, width_pct) {
289
+ // Zepto is unable to stop animations since they
290
+ // are css-based. This is a workaround for that
291
+ // limitation, which rebuilds the dom element
292
+ // thus stopping the animation
293
+ var self = this,
294
+ $timer = $container.find('.' + self.settings.timer_container_class),
295
+ $new_timer = $(self._timer_html()),
296
+ $new_timer_progress = $new_timer.find('.' + self.settings.timer_progress_class);
297
+
298
+ if (typeof Zepto === 'function') {
299
+ $timer.remove();
300
+ $container.append($new_timer);
301
+ $new_timer_progress.css('width', width_pct);
302
+ } else if (typeof jQuery === 'function') {
303
+ var $progress = $timer.find('.' + self.settings.timer_progress_class);
304
+ $progress.css('width', width_pct);
305
+ $progress.stop();
306
+ }
307
+ },
308
+
309
+ _goto: function($slides_container, index_or_direction, callback) {
310
+ var self = this,
311
+ $container = $slides_container.parent(),
312
+ $slides = $slides_container.children(),
313
+ $active_slide = $slides_container.find('.' + self.settings.active_slide_class),
314
+ active_index = $active_slide.index(),
315
+ margin_position = Foundation.rtl ? 'marginRight' : 'marginLeft';
316
+
317
+ if ($container.hasClass(self.settings.orbit_transition_class)) {
318
+ return false;
319
+ }
320
+
321
+ if (index_or_direction === 'prev') {
322
+ if (active_index === 0) {
323
+ active_index = $slides.length - 1;
324
+ }
325
+ else {
326
+ active_index--;
327
+ }
328
+ }
329
+ else if (index_or_direction === 'next') {
330
+ active_index = (active_index+1) % $slides.length;
331
+ }
332
+ else if (typeof index_or_direction === 'number') {
333
+ active_index = (index_or_direction % $slides.length);
334
+ }
335
+ if (active_index === ($slides.length - 1) && index_or_direction === 'next') {
336
+ $slides_container.css(margin_position, '0%');
337
+ active_index = 1;
338
+ }
339
+ else if (active_index === 0 && index_or_direction === 'prev') {
340
+ $slides_container.css(margin_position, '-' + ($slides.length - 1) * 100 + '%');
341
+ active_index = $slides.length - 2;
342
+ }
343
+ // Start transition, make next slide active
344
+ $container.addClass(self.settings.orbit_transition_class);
345
+ $active_slide.removeClass(self.settings.active_slide_class);
346
+ $($slides[active_index]).addClass(self.settings.active_slide_class);
347
+ // Make next bullet active
348
+ var $bullets = $container.siblings('.' + self.settings.bullets_container_class);
349
+ if ($bullets.length === 1) {
350
+ $bullets.children().removeClass(self.settings.bullets_active_class);
351
+ $($bullets.children()[active_index-1]).addClass(self.settings.bullets_active_class);
352
+ }
353
+ var new_margin_left = '-' + (active_index * 100) + '%';
354
+ // Check to see if animation will occur, otherwise perform
355
+ // callbacks manually
356
+ $slides_container.trigger('orbit:before-slide-change');
357
+ if ($slides_container.css(margin_position) === new_margin_left) {
358
+ $container.removeClass(self.settings.orbit_transition_class);
359
+ $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]);
360
+ callback();
361
+ } else {
362
+ var properties = {};
363
+ properties[margin_position] = new_margin_left;
364
+
365
+ $slides_container.animate(properties, self.settings.animation_speed, 'linear', function() {
366
+ $container.removeClass(self.settings.orbit_transition_class);
367
+ $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]);
368
+ callback();
369
+ });
370
+ }
371
+ }
372
+ };
373
+ }(Foundation.zj, this, this.document));
@@ -0,0 +1,159 @@
1
+ /*! http://mths.be/placeholder v2.0.7 by @mathias
2
+ Modified to work with Zepto.js by ZURB
3
+ */
4
+ ;(function(window, document, $) {
5
+
6
+ var isInputSupported = 'placeholder' in document.createElement('input'),
7
+ isTextareaSupported = 'placeholder' in document.createElement('textarea'),
8
+ prototype = $.fn,
9
+ valHooks = $.valHooks,
10
+ hooks,
11
+ placeholder;
12
+
13
+ if (isInputSupported && isTextareaSupported) {
14
+
15
+ placeholder = prototype.placeholder = function() {
16
+ return this;
17
+ };
18
+
19
+ placeholder.input = placeholder.textarea = true;
20
+
21
+ } else {
22
+
23
+ placeholder = prototype.placeholder = function() {
24
+ var $this = this;
25
+ $this
26
+ .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
27
+ .not('.placeholder')
28
+ .bind({
29
+ 'focus.placeholder': clearPlaceholder,
30
+ 'blur.placeholder': setPlaceholder
31
+ })
32
+ .data('placeholder-enabled', true)
33
+ .trigger('blur.placeholder');
34
+ return $this;
35
+ };
36
+
37
+ placeholder.input = isInputSupported;
38
+ placeholder.textarea = isTextareaSupported;
39
+
40
+ hooks = {
41
+ 'get': function(element) {
42
+ var $element = $(element);
43
+ return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
44
+ },
45
+ 'set': function(element, value) {
46
+ var $element = $(element);
47
+ if (!$element.data('placeholder-enabled')) {
48
+ return element.value = value;
49
+ }
50
+ if (value == '') {
51
+ element.value = value;
52
+ // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
53
+ if (element != document.activeElement) {
54
+ // We can't use `triggerHandler` here because of dummy text/password inputs :(
55
+ setPlaceholder.call(element);
56
+ }
57
+ } else if ($element.hasClass('placeholder')) {
58
+ clearPlaceholder.call(element, true, value) || (element.value = value);
59
+ } else {
60
+ element.value = value;
61
+ }
62
+ // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
63
+ return $element;
64
+ }
65
+ };
66
+
67
+ isInputSupported || (valHooks.input = hooks);
68
+ isTextareaSupported || (valHooks.textarea = hooks);
69
+
70
+ $(function() {
71
+ // Look for forms
72
+ $(document).delegate('form', 'submit.placeholder', function() {
73
+ // Clear the placeholder values so they don't get submitted
74
+ var $inputs = $('.placeholder', this).each(clearPlaceholder);
75
+ setTimeout(function() {
76
+ $inputs.each(setPlaceholder);
77
+ }, 10);
78
+ });
79
+ });
80
+
81
+ // Clear placeholder values upon page reload
82
+ $(window).bind('beforeunload.placeholder', function() {
83
+ $('.placeholder').each(function() {
84
+ this.value = '';
85
+ });
86
+ });
87
+
88
+ }
89
+
90
+ function args(elem) {
91
+ // Return an object of element attributes
92
+ var newAttrs = {},
93
+ rinlinejQuery = /^jQuery\d+$/;
94
+ $.each(elem.attributes, function(i, attr) {
95
+ if (attr.specified && !rinlinejQuery.test(attr.name)) {
96
+ newAttrs[attr.name] = attr.value;
97
+ }
98
+ });
99
+ return newAttrs;
100
+ }
101
+
102
+ function clearPlaceholder(event, value) {
103
+ var input = this,
104
+ $input = $(input);
105
+ if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
106
+ if ($input.data('placeholder-password')) {
107
+ $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
108
+ // If `clearPlaceholder` was called from `$.valHooks.input.set`
109
+ if (event === true) {
110
+ return $input[0].value = value;
111
+ }
112
+ $input.focus();
113
+ } else {
114
+ input.value = '';
115
+ $input.removeClass('placeholder');
116
+ input == document.activeElement && input.select();
117
+ }
118
+ }
119
+ }
120
+
121
+ function setPlaceholder() {
122
+ var $replacement,
123
+ input = this,
124
+ $input = $(input),
125
+ $origInput = $input,
126
+ id = this.id;
127
+ if (input.value == '') {
128
+ if (input.type == 'password') {
129
+ if (!$input.data('placeholder-textinput')) {
130
+ try {
131
+ $replacement = $input.clone().attr({ 'type': 'text' });
132
+ } catch(e) {
133
+ $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
134
+ }
135
+ $replacement
136
+ .removeAttr('name')
137
+ .data({
138
+ 'placeholder-password': true,
139
+ 'placeholder-id': id
140
+ })
141
+ .bind('focus.placeholder', clearPlaceholder);
142
+ $input
143
+ .data({
144
+ 'placeholder-textinput': $replacement,
145
+ 'placeholder-id': id
146
+ })
147
+ .before($replacement);
148
+ }
149
+ $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
150
+ // Note: `$input[0] != input` now!
151
+ }
152
+ $input.addClass('placeholder');
153
+ $input[0].value = $input.attr('placeholder');
154
+ } else {
155
+ $input.removeClass('placeholder');
156
+ }
157
+ }
158
+
159
+ }(this, document, Foundation.zj));