active_frontend 13.3.0 → 14.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.fasterer.yml +19 -0
  4. data/.reek +27 -0
  5. data/.rubocop.yml +38 -0
  6. data/.scss-lint.yml +27 -0
  7. data/Rakefile +1 -1
  8. data/active_frontend.gemspec +21 -18
  9. data/app/.DS_Store +0 -0
  10. data/app/assets/.DS_Store +0 -0
  11. data/app/assets/fonts/.DS_Store +0 -0
  12. data/app/assets/fonts/dripicons/.DS_Store +0 -0
  13. data/app/assets/fonts/dripicons/dripicons.woff +0 -0
  14. data/app/assets/fonts/fakt-pro/.DS_Store +0 -0
  15. data/app/assets/fonts/fakt-pro/fakt-pro-bold.woff +0 -0
  16. data/app/assets/fonts/fakt-pro/fakt-pro-normal.woff +0 -0
  17. data/app/assets/fonts/fakt-pro/fakt-pro-semibold.woff +0 -0
  18. data/app/assets/fonts/fakt-pro/fakt-pro-semilight.woff +0 -0
  19. data/app/assets/fonts/fakt-soft-pro/.DS_Store +0 -0
  20. data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-bold.woff +0 -0
  21. data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-normal.woff +0 -0
  22. data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-semibold.woff +0 -0
  23. data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-semilight.woff +0 -0
  24. data/app/assets/images/.DS_Store +0 -0
  25. data/app/assets/images/.keep +0 -0
  26. data/app/assets/images/placeholders/.DS_Store +0 -0
  27. data/app/assets/images/placeholders/camera-large.png +0 -0
  28. data/app/assets/images/placeholders/camera-small.png +0 -0
  29. data/app/assets/images/placeholders/camera.png +0 -0
  30. data/app/assets/images/placeholders/document-large.png +0 -0
  31. data/app/assets/images/placeholders/document-small.png +0 -0
  32. data/app/assets/images/placeholders/document.png +0 -0
  33. data/app/assets/images/placeholders/photo-large.png +0 -0
  34. data/app/assets/images/placeholders/{picture-small.png → photo-small.png} +0 -0
  35. data/app/assets/images/placeholders/photo.png +0 -0
  36. data/app/assets/images/placeholders/store-large.png +0 -0
  37. data/app/assets/images/placeholders/store-small.png +0 -0
  38. data/app/assets/images/placeholders/store.png +0 -0
  39. data/app/assets/images/placeholders/user-large.png +0 -0
  40. data/app/assets/images/placeholders/user-small.png +0 -0
  41. data/app/assets/images/placeholders/user.png +0 -0
  42. data/app/helpers/active_frontend_helper.rb +22 -37
  43. data/lib/.DS_Store +0 -0
  44. data/lib/active_frontend.rb +3 -4
  45. data/lib/active_frontend/.DS_Store +0 -0
  46. data/lib/active_frontend/version.rb +1 -1
  47. data/lib/generators/active_frontend/install_generator.rb +3 -3
  48. data/lib/generators/active_frontend/templates/install.js +35 -30
  49. data/lib/generators/active_frontend/templates/install.scss +55 -58
  50. data/vendor/.DS_Store +0 -0
  51. data/vendor/assets/.DS_Store +0 -0
  52. data/vendor/assets/javascripts/.DS_Store +0 -0
  53. data/vendor/assets/javascripts/active_frontend.js +35 -30
  54. data/vendor/assets/javascripts/base/_affix.js +170 -0
  55. data/vendor/assets/javascripts/base/_alert.js +80 -0
  56. data/vendor/assets/javascripts/base/_animation.js +106 -0
  57. data/vendor/assets/javascripts/base/_button.js +123 -0
  58. data/vendor/assets/javascripts/base/_carousel.js +237 -0
  59. data/vendor/assets/javascripts/base/_collapse.js +200 -0
  60. data/vendor/assets/javascripts/base/_colorpicker.js +147 -0
  61. data/vendor/assets/javascripts/base/_datepicker.js +1411 -0
  62. data/vendor/assets/javascripts/base/_dropdown.js +154 -0
  63. data/vendor/assets/javascripts/base/_filepicker.js +235 -0
  64. data/vendor/assets/javascripts/base/_hoverdown.js +116 -0
  65. data/vendor/assets/javascripts/base/_layout.js +126 -0
  66. data/vendor/assets/javascripts/base/_list.js +103 -0
  67. data/vendor/assets/javascripts/{_modal.js → base/_modal.js} +170 -167
  68. data/vendor/assets/javascripts/base/_popover.js +101 -0
  69. data/vendor/assets/javascripts/base/_scrollspy.js +161 -0
  70. data/vendor/assets/javascripts/base/_switch.js +160 -0
  71. data/vendor/assets/javascripts/base/_tab.js +139 -0
  72. data/vendor/assets/javascripts/base/_table.js +224 -0
  73. data/vendor/assets/javascripts/base/_timeago.js +270 -0
  74. data/vendor/assets/javascripts/base/_timepicker.js +541 -0
  75. data/vendor/assets/javascripts/base/_tooltip.js +525 -0
  76. data/vendor/assets/javascripts/base/_tour.js +268 -0
  77. data/vendor/assets/javascripts/base/_transition.js +52 -0
  78. data/vendor/assets/javascripts/base/_typeahead.js +362 -0
  79. data/vendor/assets/javascripts/extensions/_calendar.js +4709 -0
  80. data/vendor/assets/javascripts/extensions/_chart.js +9371 -0
  81. data/vendor/assets/javascripts/extensions/_map.js +2153 -0
  82. data/vendor/assets/stylesheets/.DS_Store +0 -0
  83. data/vendor/assets/stylesheets/{_mixin.scss → _utility.scss} +96 -10
  84. data/vendor/assets/stylesheets/_variable.scss +201 -19
  85. data/vendor/assets/stylesheets/active_frontend.scss +55 -58
  86. data/vendor/assets/stylesheets/blocks/_anchor.scss +15 -0
  87. data/vendor/assets/stylesheets/blocks/_button.scss +278 -0
  88. data/vendor/assets/stylesheets/blocks/_code.scss +144 -0
  89. data/vendor/assets/stylesheets/blocks/_common.scss +127 -0
  90. data/vendor/assets/stylesheets/blocks/_form.scss +508 -0
  91. data/vendor/assets/stylesheets/blocks/_icon.scss +359 -0
  92. data/vendor/assets/stylesheets/blocks/_list.scss +76 -0
  93. data/vendor/assets/stylesheets/blocks/_multimedia.scss +62 -0
  94. data/vendor/assets/stylesheets/blocks/_reset.scss +179 -0
  95. data/vendor/assets/stylesheets/blocks/_table.scss +211 -0
  96. data/vendor/assets/stylesheets/blocks/_typography.scss +204 -0
  97. data/vendor/assets/stylesheets/components/_ad.scss +78 -0
  98. data/vendor/assets/stylesheets/components/_affix.scss +14 -0
  99. data/vendor/assets/stylesheets/components/_alert.scss +50 -0
  100. data/vendor/assets/stylesheets/components/_animation.scss +1670 -0
  101. data/vendor/assets/stylesheets/components/_breadcrumb.scss +17 -0
  102. data/vendor/assets/stylesheets/components/_calendar.scss +213 -0
  103. data/vendor/assets/stylesheets/components/_card.scss +30 -0
  104. data/vendor/assets/stylesheets/components/_carousel.scss +135 -0
  105. data/vendor/assets/stylesheets/components/_chart.scss +10 -0
  106. data/vendor/assets/stylesheets/components/_collapse.scss +17 -0
  107. data/vendor/assets/stylesheets/components/_colorpicker.scss +38 -0
  108. data/vendor/assets/stylesheets/components/_datepicker.scss +80 -0
  109. data/vendor/assets/stylesheets/components/_dropmenu.scss +151 -0
  110. data/vendor/assets/stylesheets/components/_footer.scss +11 -0
  111. data/vendor/assets/stylesheets/components/_grid.scss +144 -0
  112. data/vendor/assets/stylesheets/components/_header.scss +99 -0
  113. data/vendor/assets/stylesheets/components/_label_and_badge.scss +57 -0
  114. data/vendor/assets/stylesheets/components/_layout.scss +63 -0
  115. data/vendor/assets/stylesheets/components/_map.scss +14 -0
  116. data/vendor/assets/stylesheets/components/_milestone.scss +49 -0
  117. data/vendor/assets/stylesheets/components/_missive.scss +40 -0
  118. data/vendor/assets/stylesheets/components/_modal.scss +126 -0
  119. data/vendor/assets/stylesheets/components/_nav_and_tab.scss +202 -0
  120. data/vendor/assets/stylesheets/components/_navbar.scss +66 -0
  121. data/vendor/assets/stylesheets/components/_pagination.scss +79 -0
  122. data/vendor/assets/stylesheets/components/_placeholder.scss +23 -0
  123. data/vendor/assets/stylesheets/components/_popover.scss +167 -0
  124. data/vendor/assets/stylesheets/components/_progress.scss +62 -0
  125. data/vendor/assets/stylesheets/components/_sidebar.scss +74 -0
  126. data/vendor/assets/stylesheets/components/_spinner.scss +83 -0
  127. data/vendor/assets/stylesheets/components/_switch.scss +150 -0
  128. data/vendor/assets/stylesheets/components/_timepicker.scss +30 -0
  129. data/vendor/assets/stylesheets/components/_tooltip.scss +93 -0
  130. data/vendor/assets/stylesheets/components/_transition.scss +12 -0
  131. data/vendor/assets/stylesheets/components/_typeahead.scss +18 -0
  132. metadata +150 -94
  133. data/app/assets/fonts/gotham/gotham-bold.woff +0 -0
  134. data/app/assets/fonts/gotham/gotham-book.woff +0 -0
  135. data/app/assets/fonts/gotham/gotham-light.woff +0 -0
  136. data/app/assets/fonts/gotham/gotham-medium.woff +0 -0
  137. data/app/assets/fonts/gotham/gotham-rounded-bold.woff +0 -0
  138. data/app/assets/fonts/gotham/gotham-rounded-book.woff +0 -0
  139. data/app/assets/fonts/gotham/gotham-rounded-light.woff +0 -0
  140. data/app/assets/fonts/gotham/gotham-rounded-medium.woff +0 -0
  141. data/app/assets/images/placeholders/archive-large.png +0 -0
  142. data/app/assets/images/placeholders/archive-small.png +0 -0
  143. data/app/assets/images/placeholders/archive.png +0 -0
  144. data/app/assets/images/placeholders/picture-large.png +0 -0
  145. data/app/assets/images/placeholders/picture.png +0 -0
  146. data/vendor/assets/javascripts/_affix.js +0 -153
  147. data/vendor/assets/javascripts/_alert.js +0 -85
  148. data/vendor/assets/javascripts/_animation.js +0 -103
  149. data/vendor/assets/javascripts/_button.js +0 -107
  150. data/vendor/assets/javascripts/_carousel.js +0 -228
  151. data/vendor/assets/javascripts/_chart.js +0 -3742
  152. data/vendor/assets/javascripts/_collapse.js +0 -202
  153. data/vendor/assets/javascripts/_color_picker.js +0 -108
  154. data/vendor/assets/javascripts/_date_picker.js +0 -1650
  155. data/vendor/assets/javascripts/_dropdown.js +0 -156
  156. data/vendor/assets/javascripts/_file_input.js +0 -71
  157. data/vendor/assets/javascripts/_hoverdown.js +0 -109
  158. data/vendor/assets/javascripts/_inputmask.js +0 -341
  159. data/vendor/assets/javascripts/_loader.js +0 -361
  160. data/vendor/assets/javascripts/_map.js +0 -2401
  161. data/vendor/assets/javascripts/_popover.js +0 -99
  162. data/vendor/assets/javascripts/_scrollspy.js +0 -163
  163. data/vendor/assets/javascripts/_slider.js +0 -1572
  164. data/vendor/assets/javascripts/_sort.js +0 -1432
  165. data/vendor/assets/javascripts/_swoggle.js +0 -415
  166. data/vendor/assets/javascripts/_tab.js +0 -146
  167. data/vendor/assets/javascripts/_tablespy.js +0 -1883
  168. data/vendor/assets/javascripts/_time_ago.js +0 -206
  169. data/vendor/assets/javascripts/_time_picker.js +0 -1088
  170. data/vendor/assets/javascripts/_tooltip.js +0 -504
  171. data/vendor/assets/javascripts/_transition.js +0 -50
  172. data/vendor/assets/javascripts/_typeahead.js +0 -366
  173. data/vendor/assets/stylesheets/_ad.scss +0 -63
  174. data/vendor/assets/stylesheets/_affix.scss +0 -14
  175. data/vendor/assets/stylesheets/_alert.scss +0 -114
  176. data/vendor/assets/stylesheets/_animation.scss +0 -1370
  177. data/vendor/assets/stylesheets/_breadcrumb.scss +0 -100
  178. data/vendor/assets/stylesheets/_button.scss +0 -386
  179. data/vendor/assets/stylesheets/_canvas.scss +0 -182
  180. data/vendor/assets/stylesheets/_carousel.scss +0 -158
  181. data/vendor/assets/stylesheets/_chart.scss +0 -15
  182. data/vendor/assets/stylesheets/_code.scss +0 -150
  183. data/vendor/assets/stylesheets/_collapse.scss +0 -14
  184. data/vendor/assets/stylesheets/_color.scss +0 -55
  185. data/vendor/assets/stylesheets/_colorpicker.scss +0 -63
  186. data/vendor/assets/stylesheets/_datepicker.scss +0 -122
  187. data/vendor/assets/stylesheets/_dropdown.scss +0 -248
  188. data/vendor/assets/stylesheets/_footer.scss +0 -71
  189. data/vendor/assets/stylesheets/_form.scss +0 -661
  190. data/vendor/assets/stylesheets/_grid.scss +0 -184
  191. data/vendor/assets/stylesheets/_header.scss +0 -156
  192. data/vendor/assets/stylesheets/_icon.scss +0 -362
  193. data/vendor/assets/stylesheets/_image.scss +0 -33
  194. data/vendor/assets/stylesheets/_label_and_badge.scss +0 -104
  195. data/vendor/assets/stylesheets/_link.scss +0 -55
  196. data/vendor/assets/stylesheets/_list.scss +0 -122
  197. data/vendor/assets/stylesheets/_loader.scss +0 -71
  198. data/vendor/assets/stylesheets/_map.scss +0 -44
  199. data/vendor/assets/stylesheets/_missive.scss +0 -74
  200. data/vendor/assets/stylesheets/_modal.scss +0 -204
  201. data/vendor/assets/stylesheets/_nav_and_tab.scss +0 -230
  202. data/vendor/assets/stylesheets/_navbar.scss +0 -73
  203. data/vendor/assets/stylesheets/_pagination.scss +0 -79
  204. data/vendor/assets/stylesheets/_panel.scss +0 -80
  205. data/vendor/assets/stylesheets/_placeholder.scss +0 -63
  206. data/vendor/assets/stylesheets/_popover.scss +0 -128
  207. data/vendor/assets/stylesheets/_progress.scss +0 -86
  208. data/vendor/assets/stylesheets/_reset.scss +0 -140
  209. data/vendor/assets/stylesheets/_sidebar.scss +0 -148
  210. data/vendor/assets/stylesheets/_slider.scss +0 -151
  211. data/vendor/assets/stylesheets/_spinner.scss +0 -572
  212. data/vendor/assets/stylesheets/_subheader.scss +0 -112
  213. data/vendor/assets/stylesheets/_swoggle.scss +0 -120
  214. data/vendor/assets/stylesheets/_table.scss +0 -210
  215. data/vendor/assets/stylesheets/_timepicker.scss +0 -77
  216. data/vendor/assets/stylesheets/_toolbar.scss +0 -130
  217. data/vendor/assets/stylesheets/_tooltip.scss +0 -105
  218. data/vendor/assets/stylesheets/_transition.scss +0 -11
  219. data/vendor/assets/stylesheets/_trunk.scss +0 -147
  220. data/vendor/assets/stylesheets/_typeahead.scss +0 -18
  221. data/vendor/assets/stylesheets/_typography.scss +0 -233
Binary file
Binary file
@@ -1,34 +1,39 @@
1
1
  // Table of Contents
2
2
  // ==================================================
3
- // # Optional Imports
3
+ // Base Imports
4
+ // Extension Imports
4
5
  //
5
- // # Optional Imports
6
+ // Base Imports
6
7
  // ==================================================
7
- //= require _affix
8
- //= require _alert
9
- //= require _animation
10
- //= require _button
11
- //= require _carousel
12
- //= require _chart
13
- //= require _collapse
14
- //= require _color_picker
15
- //= require _date_picker
16
- //= require _dropdown
17
- //= require _file_input
18
- //= require _hoverdown
19
- //= require _inputmask
20
- //= require _loader
21
- //= require _map
22
- //= require _modal
23
- //= require _scrollspy
24
- //= require _slider
25
- //= require _sort
26
- //= require _swoggle
27
- //= require _tab
28
- //= require _tablespy
29
- //= require _time_ago
30
- //= require _time_picker
31
- //= require _tooltip
32
- //= require _popover
33
- //= require _transition
34
- //= require _typeahead
8
+ //= require base/_animation
9
+ //= require base/_transition
10
+ //= require base/_layout
11
+ //= require base/_affix
12
+ //= require base/_modal
13
+ //= require base/_alert
14
+ //= require base/_tab
15
+ //= require base/_scrollspy
16
+ //= require base/_list
17
+ //= require base/_table
18
+ //= require base/_collapse
19
+ //= require base/_tooltip
20
+ //= require base/_popover
21
+ //= require base/_carousel
22
+ //= require base/_button
23
+ //= require base/_dropdown
24
+ //= require base/_hoverdown
25
+ //= require base/_colorpicker
26
+ //= require base/_datepicker
27
+ //= require base/_filepicker
28
+ //= require base/_timepicker
29
+ //= require base/_typeahead
30
+ //= require base/_timeago
31
+ //= require base/_switch
32
+ //= require base/_tour
33
+ //
34
+ // Extensions Imports
35
+ // ==================================================
36
+ //= require extensions/_calendar
37
+ //= require extensions/_chart
38
+ //= require extensions/_map
39
+ //
@@ -0,0 +1,170 @@
1
+ +function ($) {
2
+ 'use strict';
3
+
4
+ // AFFIX CLASS DEFINITION
5
+ // ======================
6
+
7
+ var Affix = function (element, options) {
8
+ this.options = $.extend({}, Affix.DEFAULTS, options);
9
+
10
+ this.$target = $(this.options.target)
11
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
12
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this));
13
+
14
+ this.$element = $(element);
15
+ this.affixed = null;
16
+ this.unpin = null;
17
+ this.pinnedOffset = null;
18
+
19
+ this.checkPosition();
20
+ };
21
+
22
+ Affix.VERSION = '1.0.0';
23
+ Affix.RESET = 'affix affix-top affix-bottom';
24
+ Affix.DEFAULTS = {
25
+ offset: 0,
26
+ target: window
27
+ };
28
+
29
+ Affix.prototype.constructor = Affix;
30
+
31
+ Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
32
+ var scrollTop = this.$target.scrollTop();
33
+ var position = this.$element.offset();
34
+ var targetHeight = this.$target.height();
35
+
36
+ if (offsetTop !== null && this.affixed === 'top') {
37
+ return scrollTop < offsetTop ? 'top' : false;
38
+ }
39
+
40
+ if (this.affixed === 'bottom') {
41
+ if (offsetTop !== null) {
42
+ return (scrollTop + this.unpin <= position.top) ? false : 'bottom';
43
+ }
44
+
45
+ return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom';
46
+ }
47
+
48
+ var initializing = this.affixed === null;
49
+ var colliderTop = initializing ? scrollTop : position.top;
50
+ var colliderHeight = initializing ? targetHeight : height;
51
+
52
+ if (offsetTop !== null && scrollTop <= offsetTop) return 'top';
53
+ if (offsetBottom !== null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom';
54
+
55
+ return false;
56
+ };
57
+
58
+ Affix.prototype.getPinnedOffset = function () {
59
+ if (this.pinnedOffset) return this.pinnedOffset;
60
+
61
+ this.$element
62
+ .removeClass(Affix.RESET)
63
+ .addClass('affix');
64
+
65
+ var scrollTop = this.$target.scrollTop();
66
+ var position = this.$element.offset();
67
+
68
+ return (this.pinnedOffset = position.top - scrollTop);
69
+ };
70
+
71
+ Affix.prototype.checkPositionWithEventLoop = function () {
72
+ setTimeout($.proxy(this.checkPosition, this), 1);
73
+ };
74
+
75
+ Affix.prototype.checkPosition = function () {
76
+ if (!this.$element.is(':visible')) return;
77
+
78
+ var height = this.$element.height();
79
+ var offset = this.options.offset;
80
+ var offsetTop = offset.top;
81
+ var offsetBottom = offset.bottom;
82
+ var scrollHeight = Math.max($(document).height(), $(document.body).height());
83
+
84
+ if (typeof offset != 'object') {
85
+ offsetBottom = offsetTop = offset;
86
+ }
87
+ if (typeof offsetTop === 'function') {
88
+ offsetTop = offset.top(this.$element);
89
+ }
90
+ if (typeof offsetBottom === 'function') {
91
+ offsetBottom = offset.bottom(this.$element);
92
+ }
93
+
94
+ var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom);
95
+
96
+ if (this.affixed != affix) {
97
+ if (this.unpin !== null) this.$element.css('top', '');
98
+
99
+ var affixType = 'affix' + (affix ? '-' + affix : '');
100
+ var e = $.Event(affixType + '.bs.affix');
101
+
102
+ this.$element.trigger(e);
103
+
104
+ if (e.isDefaultPrevented()) return;
105
+
106
+ this.affixed = affix;
107
+ this.unpin = affix === 'bottom' ? this.getPinnedOffset() : null;
108
+
109
+ this.$element
110
+ .removeClass(Affix.RESET)
111
+ .addClass(affixType)
112
+ .trigger(affixType.replace('affix', 'affixed') + '.bs.affix');
113
+ }
114
+
115
+ if (affix === 'bottom') {
116
+ this.$element.offset({
117
+ top: scrollHeight - height - offsetBottom
118
+ });
119
+ }
120
+ };
121
+
122
+ // AFFIX PLUGIN DEFINITION
123
+ // =======================
124
+
125
+ function Plugin(option) {
126
+ return this.each(function () {
127
+ var $this = $(this);
128
+ var data = $this.data('bs.affix');
129
+ var options = typeof option === 'object' && option;
130
+
131
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)));
132
+ if (typeof option === 'string') data[option]();
133
+ });
134
+ }
135
+
136
+ var old = $.fn.affix;
137
+
138
+ $.fn.affix = Plugin;
139
+ $.fn.affix.Constructor = Affix;
140
+
141
+ // AFFIX NO CONFLICT
142
+ // =================
143
+
144
+ $.fn.affix.noConflict = function () {
145
+ $.fn.affix = old;
146
+ return this;
147
+ };
148
+
149
+ // AFFIX DATA-API
150
+ // ==============
151
+
152
+ $(document).on('ready.bs.affix.data-api', function () {
153
+ $('[data-spy="affix"]').each(function () {
154
+ var $this = $(this);
155
+ var data = $this.data();
156
+
157
+ data.offset = data.offset || {};
158
+
159
+ if (data.offsetBottom !== null) {
160
+ data.offset.bottom = data.offsetBottom;
161
+ }
162
+ if (data.offsetTop !== null) {
163
+ data.offset.top = data.offsetTop;
164
+ }
165
+
166
+ Plugin.call($this, data);
167
+ });
168
+ });
169
+
170
+ }(jQuery);
@@ -0,0 +1,80 @@
1
+ +function ($) {
2
+ 'use strict';
3
+
4
+ // ALERT CLASS DEFINITION
5
+ // ======================
6
+
7
+ var dismiss = '[data-dismiss="alert"]';
8
+ var Alert = function (el) {
9
+ $(el).on('click', dismiss, this.close);
10
+ };
11
+
12
+ Alert.VERSION = '1.0.0';
13
+ Alert.TRANSITION_DURATION = 150;
14
+
15
+ Alert.prototype.constructor = Alert;
16
+
17
+ Alert.prototype.close = function (e) {
18
+ var $this = $(this);
19
+ var selector = $this.attr('data-target');
20
+
21
+ if (!selector) {
22
+ selector = $this.attr('href');
23
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '');
24
+ }
25
+
26
+ var $parent = $(selector);
27
+
28
+ if (e) e.preventDefault();
29
+ if (!$parent.length) {
30
+ $parent = $this.closest('.alert');
31
+ }
32
+
33
+ $parent.trigger(e = $.Event('close.bs.alert'));
34
+
35
+ if (e.isDefaultPrevented()) return;
36
+
37
+ $parent.removeClass('in');
38
+
39
+ function removeElement() {
40
+ $parent.detach().trigger('closed.bs.alert').remove();
41
+ }
42
+
43
+ $.support.transition && $parent.hasClass('fade') ?
44
+ $parent.one('bsTransitionEnd', removeElement)
45
+ .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
46
+ removeElement();
47
+ };
48
+
49
+ // ALERT PLUGIN DEFINITION
50
+ // =======================
51
+
52
+ function Plugin(option) {
53
+ return this.each(function () {
54
+ var $this = $(this);
55
+ var data = $this.data('bs.alert');
56
+
57
+ if (!data) $this.data('bs.alert', (data = new Alert(this)));
58
+ if (typeof option === 'string') data[option]();
59
+ });
60
+ }
61
+
62
+ var old = $.fn.alert;
63
+
64
+ $.fn.alert = Plugin;
65
+ $.fn.alert.Constructor = Alert;
66
+
67
+ // ALERT NO CONFLICT
68
+ // =================
69
+
70
+ $.fn.alert.noConflict = function () {
71
+ $.fn.alert = old;
72
+ return this;
73
+ };
74
+
75
+ // ALERT DATA-API
76
+ // ==============
77
+
78
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close);
79
+
80
+ }(jQuery);
@@ -0,0 +1,106 @@
1
+ +function ($) {
2
+ 'use strict';
3
+
4
+ // ANIMATION PUBLIC CLASS DEFINITION
5
+ // =================================
6
+
7
+ var Animation = function (element, options) {
8
+ this.$element = $(element);
9
+
10
+ this.settings = {
11
+ delay: this.$element.data('delay'),
12
+ duration: this.$element.data('duration'),
13
+ effect: this.$element.data('effect'),
14
+ hide: this.$element.data('hide'),
15
+ infinite: this.$element.data('infinite')
16
+ };
17
+ this.options = $.extend({}, Animation.DEFAULTS, this.settings, options);
18
+
19
+ this.init(this.$element);
20
+ };
21
+
22
+ Animation.VERSION = '1.0.0';
23
+ Animation.TRANSITION_END = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
24
+ Animation.DEFAULTS = {
25
+ delay: 'n',
26
+ duration: 'b',
27
+ effect: 'bounce',
28
+ hide: false,
29
+ infinite: false
30
+ };
31
+
32
+ Animation.prototype.constructor = Animation;
33
+
34
+ Animation.prototype.init = function () {
35
+ var element = this.reset();
36
+ var hide = this.options.hide;
37
+ var infinite = this.options.infinite;
38
+ var animation = 'animation' +
39
+ ' animation-effect-' + this.options.effect +
40
+ ' animation-delay-' + this.options.delay +
41
+ ' animation-duration-' + this.options.duration +
42
+ (infinite === true ? ' infinite' : '');
43
+
44
+ if (element.hasClass('hidden') || element.is(':hidden')) {
45
+ element.removeClass('hidden');
46
+ element.show();
47
+ }
48
+ if (element.css('visibility') === 'hidden') element.css('visibility', 'visible');
49
+
50
+ element.removeClass(animation)
51
+ .addClass(animation)
52
+ .on(Animation.TRANSITION_END, function (event) {
53
+ event.stopPropagation();
54
+ event.preventDefault();
55
+
56
+ if (infinite !== true) element.removeClass(animation);
57
+ if (hide === true) element.addClass('hidden');
58
+ });
59
+ };
60
+
61
+ Animation.prototype.reset = function () {
62
+ this.$element.before(this.$element.clone(true));
63
+
64
+ var clone = this.$element.prev();
65
+ this.$element.remove();
66
+
67
+ return clone;
68
+ };
69
+
70
+ // ANIMATION PLUGIN DEFINITION
71
+ // ===========================
72
+
73
+ function Plugin(option) {
74
+ return this.each(function () {
75
+ var $this = $(this);
76
+ var data = $this.data('bs.animation');
77
+ var options = typeof option === 'object' && option;
78
+
79
+ if (!data) $this.data('bs.animation', (data = new Animation(this, options)));
80
+ if (typeof option === 'string') data[option]();
81
+ });
82
+ }
83
+
84
+ var old = $.fn.animation;
85
+
86
+ $.fn.animation = Plugin;
87
+ $.fn.animation.Constructor = Animation;
88
+
89
+ // ANIMATION NO CONFLICT
90
+ // =====================
91
+
92
+ $.fn.animation.noConflict = function () {
93
+ $.fn.animation = old;
94
+ return this;
95
+ };
96
+
97
+ // ANIMATION DATA-API
98
+ // ==================
99
+
100
+ $(document).on('[data-toggle="animation"]', function (e) {
101
+ var $this = $(this);
102
+ if ($this.data('animation')) return;
103
+ Plugin.call($this, $this.data());
104
+ });
105
+
106
+ }(jQuery);
@@ -0,0 +1,123 @@
1
+ +function ($) {
2
+ 'use strict';
3
+
4
+ // BUTTON PUBLIC CLASS DEFINITION
5
+ // ==============================
6
+
7
+ var Button = function (element, options) {
8
+ this.$element = $(element);
9
+ this.options = $.extend({}, Button.DEFAULTS, options);
10
+
11
+ this.$isLoading = false;
12
+ };
13
+
14
+ Button.VERSION = '1.0.0';
15
+ Button.DEFAULTS = {
16
+ loadingText: 'Loading...'
17
+ };
18
+
19
+ Button.prototype.constructor = Button;
20
+
21
+ Button.prototype.setState = function (state) {
22
+ var d = 'disabled';
23
+ var $el = this.$element;
24
+ var val = $el.is('input') ? 'val' : 'html';
25
+ var data = $el.data();
26
+
27
+ state = state + 'Text';
28
+
29
+ if (data.resetText === null) $el.data('resetText', $el[val]());
30
+
31
+ setTimeout($.proxy(function () {
32
+ $el[val](data[state] === null ? this.options[state] : data[state]);
33
+
34
+ if (state === 'loadingText') {
35
+ this.$isLoading = true;
36
+ $el.addClass(d)
37
+ .attr(d, d);
38
+ } else if (this.$isLoading) {
39
+ this.$isLoading = false;
40
+ $el.removeClass(d)
41
+ .removeAttr(d);
42
+ }
43
+ }, this), 0);
44
+ };
45
+
46
+ Button.prototype.toggle = function () {
47
+ var changed = true;
48
+ var $parent = this.$element.closest('[data-toggle="buttons"]');
49
+
50
+ if ($parent.length) {
51
+ var $input = this.$element.find('input');
52
+
53
+ if ($input.prop('type') === 'radio') {
54
+ if ($input.prop('checked') && this.$element.hasClass('active')) {
55
+ changed = false;
56
+ } else {
57
+ $parent.find('.active').removeClass('active');
58
+ }
59
+ }
60
+
61
+ if (changed) {
62
+ $input.prop('checked', !this.$element.hasClass('active'))
63
+ .trigger('change');
64
+ }
65
+ } else {
66
+ this.$element.attr('aria-pressed', !this.$element.hasClass('active'));
67
+ }
68
+
69
+ if (changed) this.$element.toggleClass('active');
70
+ };
71
+
72
+ // BUTTON PLUGIN DEFINITION
73
+ // ========================
74
+
75
+ function Plugin(option) {
76
+ return this.each(function () {
77
+ var $this = $(this);
78
+ var data = $this.data('bs.button');
79
+ var options = typeof option === 'object' && option;
80
+
81
+ if (!data) $this.data('bs.button', (data = new Button(this, options)));
82
+
83
+ if (option === 'toggle') {
84
+ data.toggle();
85
+ } else if (option) {
86
+ data.setState(option);
87
+ }
88
+ });
89
+ }
90
+
91
+ var old = $.fn.button;
92
+
93
+ $.fn.button = Plugin;
94
+ $.fn.button.Constructor = Button;
95
+
96
+ // BUTTON NO CONFLICT
97
+ // ==================
98
+
99
+ $.fn.button.noConflict = function () {
100
+ $.fn.button = old;
101
+ return this;
102
+ };
103
+
104
+ // BUTTON DATA-API
105
+ // ===============
106
+
107
+ $(document)
108
+ .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
109
+ var $btn = $(e.target);
110
+
111
+ if (!$btn.hasClass('btn')) {
112
+ $btn = $btn.closest('.btn');
113
+ }
114
+
115
+ Plugin.call($btn, 'toggle');
116
+ e.preventDefault();
117
+ })
118
+ .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
119
+ $(e.target).closest('.btn')
120
+ .toggleClass('focus', /^focus(in)?$/.test(e.type));
121
+ });
122
+
123
+ }(jQuery);