fomantic-ui 2.9.1-beta.2 → 2.9.1-beta.20

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 (339) hide show
  1. package/.eslintrc.js +110 -0
  2. package/.github/workflows/ci.yml +14 -4
  3. package/.stylelintrc.js +46 -0
  4. package/dist/components/accordion.css +19 -26
  5. package/dist/components/accordion.js +568 -595
  6. package/dist/components/accordion.min.css +1 -1
  7. package/dist/components/accordion.min.js +2 -2
  8. package/dist/components/ad.css +31 -41
  9. package/dist/components/ad.min.css +1 -1
  10. package/dist/components/api.js +1161 -1179
  11. package/dist/components/api.min.js +2 -2
  12. package/dist/components/breadcrumb.css +1 -1
  13. package/dist/components/breadcrumb.min.css +1 -1
  14. package/dist/components/button.css +71 -106
  15. package/dist/components/button.min.css +1 -1
  16. package/dist/components/calendar.css +18 -16
  17. package/dist/components/calendar.js +1895 -1809
  18. package/dist/components/calendar.min.css +2 -2
  19. package/dist/components/calendar.min.js +2 -2
  20. package/dist/components/card.css +83 -115
  21. package/dist/components/card.min.css +1 -1
  22. package/dist/components/checkbox.css +47 -64
  23. package/dist/components/checkbox.js +842 -841
  24. package/dist/components/checkbox.min.css +1 -1
  25. package/dist/components/checkbox.min.js +2 -2
  26. package/dist/components/comment.css +37 -51
  27. package/dist/components/comment.min.css +1 -1
  28. package/dist/components/container.css +6 -5
  29. package/dist/components/container.min.css +2 -2
  30. package/dist/components/dimmer.css +31 -41
  31. package/dist/components/dimmer.js +708 -737
  32. package/dist/components/dimmer.min.css +1 -1
  33. package/dist/components/dimmer.min.js +2 -2
  34. package/dist/components/divider.css +32 -44
  35. package/dist/components/divider.min.css +1 -1
  36. package/dist/components/dropdown.css +129 -166
  37. package/dist/components/dropdown.js +4161 -4234
  38. package/dist/components/dropdown.min.css +2 -2
  39. package/dist/components/dropdown.min.js +2 -2
  40. package/dist/components/embed.css +13 -19
  41. package/dist/components/embed.js +651 -675
  42. package/dist/components/embed.min.css +1 -1
  43. package/dist/components/embed.min.js +2 -2
  44. package/dist/components/emoji.css +7 -6
  45. package/dist/components/feed.css +24 -32
  46. package/dist/components/feed.min.css +1 -1
  47. package/dist/components/flag.css +5 -3
  48. package/dist/components/flag.min.css +1 -1
  49. package/dist/components/flyout.css +44 -58
  50. package/dist/components/flyout.js +1464 -1465
  51. package/dist/components/flyout.min.css +2 -2
  52. package/dist/components/flyout.min.js +2 -2
  53. package/dist/components/form.css +85 -111
  54. package/dist/components/form.js +1979 -2004
  55. package/dist/components/form.min.css +1 -1
  56. package/dist/components/form.min.js +2 -2
  57. package/dist/components/grid.css +70 -96
  58. package/dist/components/grid.min.css +1 -1
  59. package/dist/components/header.css +47 -65
  60. package/dist/components/header.min.css +1 -1
  61. package/dist/components/icon.css +45 -66
  62. package/dist/components/icon.min.css +2 -2
  63. package/dist/components/image.css +32 -42
  64. package/dist/components/image.min.css +1 -1
  65. package/dist/components/input.css +182 -65
  66. package/dist/components/input.min.css +2 -2
  67. package/dist/components/item.css +55 -77
  68. package/dist/components/item.min.css +1 -1
  69. package/dist/components/label.css +68 -91
  70. package/dist/components/label.min.css +2 -2
  71. package/dist/components/list.css +44 -59
  72. package/dist/components/list.min.css +1 -1
  73. package/dist/components/loader.css +16 -22
  74. package/dist/components/loader.min.css +1 -1
  75. package/dist/components/menu.css +126 -186
  76. package/dist/components/message.css +25 -35
  77. package/dist/components/message.min.css +1 -1
  78. package/dist/components/modal.css +39 -40
  79. package/dist/components/modal.js +1491 -1485
  80. package/dist/components/modal.min.css +2 -2
  81. package/dist/components/modal.min.js +2 -2
  82. package/dist/components/nag.css +21 -28
  83. package/dist/components/nag.js +518 -526
  84. package/dist/components/nag.min.css +2 -2
  85. package/dist/components/nag.min.js +2 -2
  86. package/dist/components/placeholder.css +10 -12
  87. package/dist/components/placeholder.min.css +1 -1
  88. package/dist/components/popup.css +352 -59
  89. package/dist/components/popup.js +1437 -1456
  90. package/dist/components/popup.min.css +2 -2
  91. package/dist/components/popup.min.js +2 -2
  92. package/dist/components/progress.css +29 -39
  93. package/dist/components/progress.js +969 -997
  94. package/dist/components/progress.min.css +1 -1
  95. package/dist/components/progress.min.js +2 -2
  96. package/dist/components/rail.css +15 -20
  97. package/dist/components/rail.min.css +1 -1
  98. package/dist/components/rating.css +9 -13
  99. package/dist/components/rating.js +505 -523
  100. package/dist/components/rating.min.css +1 -1
  101. package/dist/components/rating.min.js +2 -2
  102. package/dist/components/reset.css +1 -1
  103. package/dist/components/reset.min.css +1 -1
  104. package/dist/components/reveal.css +19 -26
  105. package/dist/components/reveal.min.css +1 -1
  106. package/dist/components/search.css +43 -58
  107. package/dist/components/search.js +1498 -1534
  108. package/dist/components/search.min.css +2 -2
  109. package/dist/components/search.min.js +2 -2
  110. package/dist/components/segment.css +64 -83
  111. package/dist/components/segment.min.css +2 -2
  112. package/dist/components/shape.css +10 -14
  113. package/dist/components/shape.js +792 -809
  114. package/dist/components/shape.min.css +1 -1
  115. package/dist/components/shape.min.js +2 -2
  116. package/dist/components/sidebar.css +43 -58
  117. package/dist/components/sidebar.js +1071 -1098
  118. package/dist/components/sidebar.min.css +2 -2
  119. package/dist/components/sidebar.min.js +2 -2
  120. package/dist/components/site.css +5 -5
  121. package/dist/components/site.js +462 -476
  122. package/dist/components/site.min.css +1 -1
  123. package/dist/components/site.min.js +2 -2
  124. package/dist/components/slider.css +27 -37
  125. package/dist/components/slider.js +1287 -1306
  126. package/dist/components/slider.min.js +2 -2
  127. package/dist/components/state.js +639 -657
  128. package/dist/components/state.min.js +2 -2
  129. package/dist/components/statistic.css +32 -41
  130. package/dist/components/statistic.min.css +2 -2
  131. package/dist/components/step.css +26 -35
  132. package/dist/components/step.min.css +1 -1
  133. package/dist/components/sticky.css +1 -1
  134. package/dist/components/sticky.js +857 -902
  135. package/dist/components/sticky.min.css +1 -1
  136. package/dist/components/sticky.min.js +2 -2
  137. package/dist/components/tab.css +6 -8
  138. package/dist/components/tab.js +922 -963
  139. package/dist/components/tab.min.css +1 -1
  140. package/dist/components/tab.min.js +2 -2
  141. package/dist/components/table.css +93 -119
  142. package/dist/components/table.min.css +2 -2
  143. package/dist/components/text.css +1 -1
  144. package/dist/components/text.min.css +1 -1
  145. package/dist/components/toast.css +4 -6
  146. package/dist/components/toast.js +886 -887
  147. package/dist/components/toast.min.css +1 -1
  148. package/dist/components/toast.min.js +2 -2
  149. package/dist/components/transition.css +150 -3
  150. package/dist/components/transition.js +1041 -1077
  151. package/dist/components/transition.min.css +2 -2
  152. package/dist/components/transition.min.js +2 -2
  153. package/dist/components/visibility.js +1220 -1244
  154. package/dist/components/visibility.min.js +2 -2
  155. package/dist/semantic.css +2529 -1778
  156. package/dist/semantic.js +28928 -29383
  157. package/dist/semantic.min.css +2 -2
  158. package/dist/semantic.min.js +2 -2
  159. package/dist/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  160. package/dist/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  161. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  162. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  163. package/dist/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  164. package/dist/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  165. package/dist/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  166. package/dist/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  167. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  168. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  169. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  170. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  171. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  172. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  173. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  174. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  175. package/examples/assets/show-examples.js +13 -13
  176. package/gulpfile.js +9 -10
  177. package/package.json +13 -8
  178. package/scripts/nightly-version.js +81 -75
  179. package/src/definitions/behaviors/api.js +1162 -1180
  180. package/src/definitions/behaviors/form.js +1978 -2003
  181. package/src/definitions/behaviors/state.js +645 -663
  182. package/src/definitions/behaviors/visibility.js +1219 -1243
  183. package/src/definitions/collections/breadcrumb.less +41 -44
  184. package/src/definitions/collections/form.less +869 -879
  185. package/src/definitions/collections/grid.less +1690 -1695
  186. package/src/definitions/collections/menu.less +1493 -1503
  187. package/src/definitions/collections/message.less +292 -295
  188. package/src/definitions/collections/table.less +1616 -1620
  189. package/src/definitions/elements/button.less +1721 -1743
  190. package/src/definitions/elements/container.less +209 -209
  191. package/src/definitions/elements/divider.less +205 -206
  192. package/src/definitions/elements/emoji.less +38 -44
  193. package/src/definitions/elements/flag.less +44 -46
  194. package/src/definitions/elements/header.less +337 -345
  195. package/src/definitions/elements/icon.less +516 -443
  196. package/src/definitions/elements/image.less +221 -225
  197. package/src/definitions/elements/input.less +663 -659
  198. package/src/definitions/elements/label.less +803 -793
  199. package/src/definitions/elements/list.less +809 -809
  200. package/src/definitions/elements/loader.less +272 -266
  201. package/src/definitions/elements/placeholder.less +171 -168
  202. package/src/definitions/elements/rail.less +91 -91
  203. package/src/definitions/elements/reveal.less +192 -196
  204. package/src/definitions/elements/segment.less +743 -746
  205. package/src/definitions/elements/step.less +425 -433
  206. package/src/definitions/elements/text.less +32 -34
  207. package/src/definitions/globals/reset.less +9 -6
  208. package/src/definitions/globals/site.js +461 -475
  209. package/src/definitions/globals/site.less +106 -108
  210. package/src/definitions/modules/accordion.js +567 -594
  211. package/src/definitions/modules/accordion.less +242 -246
  212. package/src/definitions/modules/calendar.js +1894 -1808
  213. package/src/definitions/modules/calendar.less +98 -95
  214. package/src/definitions/modules/checkbox.js +841 -840
  215. package/src/definitions/modules/checkbox.less +536 -542
  216. package/src/definitions/modules/dimmer.js +707 -736
  217. package/src/definitions/modules/dimmer.less +300 -297
  218. package/src/definitions/modules/dropdown.js +4160 -4233
  219. package/src/definitions/modules/dropdown.less +1577 -1589
  220. package/src/definitions/modules/embed.js +650 -674
  221. package/src/definitions/modules/embed.less +81 -82
  222. package/src/definitions/modules/flyout.js +1463 -1464
  223. package/src/definitions/modules/flyout.less +445 -451
  224. package/src/definitions/modules/modal.js +1490 -1484
  225. package/src/definitions/modules/modal.less +459 -459
  226. package/src/definitions/modules/nag.js +517 -525
  227. package/src/definitions/modules/nag.less +134 -138
  228. package/src/definitions/modules/popup.js +1436 -1455
  229. package/src/definitions/modules/popup.less +742 -687
  230. package/src/definitions/modules/progress.js +968 -996
  231. package/src/definitions/modules/progress.less +521 -494
  232. package/src/definitions/modules/rating.js +504 -522
  233. package/src/definitions/modules/rating.less +94 -101
  234. package/src/definitions/modules/search.js +1497 -1533
  235. package/src/definitions/modules/search.less +375 -382
  236. package/src/definitions/modules/shape.js +791 -808
  237. package/src/definitions/modules/shape.less +71 -76
  238. package/src/definitions/modules/sidebar.js +1070 -1097
  239. package/src/definitions/modules/sidebar.less +463 -472
  240. package/src/definitions/modules/slider.js +1286 -1305
  241. package/src/definitions/modules/slider.less +307 -308
  242. package/src/definitions/modules/sticky.js +873 -918
  243. package/src/definitions/modules/sticky.less +21 -23
  244. package/src/definitions/modules/tab.js +921 -962
  245. package/src/definitions/modules/tab.less +51 -52
  246. package/src/definitions/modules/toast.js +885 -886
  247. package/src/definitions/modules/toast.less +584 -586
  248. package/src/definitions/modules/transition.js +1040 -1076
  249. package/src/definitions/modules/transition.less +62 -28
  250. package/src/definitions/views/ad.less +206 -206
  251. package/src/definitions/views/card.less +968 -970
  252. package/src/definitions/views/comment.less +190 -198
  253. package/src/definitions/views/feed.less +220 -224
  254. package/src/definitions/views/item.less +436 -446
  255. package/src/definitions/views/statistic.less +271 -277
  256. package/src/theme.less +29 -32
  257. package/src/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  258. package/src/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  259. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  260. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  261. package/src/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  262. package/src/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  263. package/src/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  264. package/src/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  265. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  266. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  267. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  268. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  269. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  270. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  271. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  272. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  273. package/src/themes/default/elements/container.variables +0 -7
  274. package/src/themes/default/elements/icon.variables +18 -0
  275. package/src/themes/default/elements/segment.variables +0 -7
  276. package/src/themes/default/globals/colors.less +589 -589
  277. package/src/themes/default/globals/site.variables +8 -0
  278. package/src/themes/default/globals/variation.variables +13 -1
  279. package/src/themes/default/modules/calendar.variables +2 -0
  280. package/src/themes/default/modules/nag.variables +1 -1
  281. package/src/themes/default/modules/popup.variables +2 -0
  282. package/src/themes/default/modules/transition.variables +8 -1
  283. package/tasks/admin/components/create.js +274 -276
  284. package/tasks/admin/components/init.js +123 -130
  285. package/tasks/admin/components/update.js +149 -157
  286. package/tasks/admin/distributions/create.js +184 -187
  287. package/tasks/admin/distributions/init.js +123 -130
  288. package/tasks/admin/distributions/update.js +145 -152
  289. package/tasks/admin/publish.js +5 -7
  290. package/tasks/admin/register.js +36 -38
  291. package/tasks/admin/release.js +8 -10
  292. package/tasks/build/assets.js +42 -39
  293. package/tasks/build/css.js +225 -216
  294. package/tasks/build/javascript.js +118 -113
  295. package/tasks/build.js +10 -10
  296. package/tasks/check-install.js +14 -16
  297. package/tasks/clean.js +5 -5
  298. package/tasks/collections/admin.js +34 -36
  299. package/tasks/collections/build.js +18 -20
  300. package/tasks/collections/docs.js +9 -11
  301. package/tasks/collections/install.js +9 -11
  302. package/tasks/collections/rtl.js +9 -11
  303. package/tasks/collections/various.js +8 -10
  304. package/tasks/config/admin/github.js +17 -17
  305. package/tasks/config/admin/oauth.example.js +4 -4
  306. package/tasks/config/admin/release.js +98 -98
  307. package/tasks/config/admin/templates/component-package.js +9 -10
  308. package/tasks/config/admin/templates/css-package.js +18 -20
  309. package/tasks/config/admin/templates/less-package.js +11 -13
  310. package/tasks/config/defaults.js +116 -114
  311. package/tasks/config/docs.js +23 -23
  312. package/tasks/config/npm/gulpfile.js +8 -9
  313. package/tasks/config/project/config.js +127 -134
  314. package/tasks/config/project/install.js +715 -713
  315. package/tasks/config/project/release.js +32 -38
  316. package/tasks/config/tasks.js +165 -156
  317. package/tasks/config/user.js +23 -26
  318. package/tasks/docs/build.js +97 -95
  319. package/tasks/docs/metadata.js +90 -96
  320. package/tasks/docs/serve.js +80 -81
  321. package/tasks/install.js +370 -378
  322. package/tasks/rtl/build.js +2 -2
  323. package/tasks/rtl/watch.js +2 -2
  324. package/tasks/version.js +4 -4
  325. package/tasks/watch.js +28 -30
  326. package/test/meteor/assets.js +10 -13
  327. package/test/meteor/fonts.js +12 -13
  328. package/test/modules/accordion.spec.js +6 -8
  329. package/test/modules/checkbox.spec.js +5 -7
  330. package/test/modules/dropdown.spec.js +5 -7
  331. package/test/modules/modal.spec.js +6 -8
  332. package/test/modules/module.spec.js +158 -178
  333. package/test/modules/popup.spec.js +5 -7
  334. package/test/modules/search.spec.js +5 -7
  335. package/test/modules/shape.spec.js +5 -7
  336. package/test/modules/sidebar.spec.js +5 -7
  337. package/test/modules/tab.spec.js +6 -8
  338. package/test/modules/transition.spec.js +5 -7
  339. package/test/modules/video.spec.js +5 -7
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.1-beta.2+f5a64f3 - Accordion
2
+ * # Fomantic-UI 2.9.1-beta.20+d4987bf - Accordion
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -8,617 +8,590 @@
8
8
  *
9
9
  */
10
10
 
11
- ;(function ($, window, document, undefined) {
12
-
13
- 'use strict';
14
-
15
- $.isFunction = $.isFunction || function(obj) {
16
- return typeof obj === "function" && typeof obj.nodeType !== "number";
17
- };
18
-
19
- window = (typeof window != 'undefined' && window.Math == Math)
20
- ? window
21
- : (typeof self != 'undefined' && self.Math == Math)
22
- ? self
23
- : Function('return this')()
24
- ;
25
-
26
- $.fn.accordion = function(parameters) {
27
- var
28
- $allModules = $(this),
29
-
30
- time = new Date().getTime(),
31
- performance = [],
32
-
33
- query = arguments[0],
34
- methodInvoked = (typeof query == 'string'),
35
- queryArguments = [].slice.call(arguments, 1),
36
-
37
- returnedValue
38
- ;
39
- $allModules
40
- .each(function() {
41
- var
42
- settings = ( $.isPlainObject(parameters) )
43
- ? $.extend(true, {}, $.fn.accordion.settings, parameters)
44
- : $.extend({}, $.fn.accordion.settings),
45
-
46
- className = settings.className,
47
- namespace = settings.namespace,
48
- selector = settings.selector,
49
- error = settings.error,
50
-
51
- eventNamespace = '.' + namespace,
52
- moduleNamespace = 'module-' + namespace,
53
- moduleSelector = $allModules.selector || '',
54
-
55
- $module = $(this),
56
- $title = $module.find(selector.title),
57
- $content = $module.find(selector.content),
58
-
59
- element = this,
60
- instance = $module.data(moduleNamespace),
61
- observer,
62
- module
63
- ;
64
-
65
- module = {
66
-
67
- initialize: function() {
68
- module.debug('Initializing', $module);
69
- module.bind.events();
70
- if(settings.observeChanges) {
71
- module.observeChanges();
72
- }
73
- module.instantiate();
74
- },
11
+ (function ($, window, document, undefined) {
12
+ 'use strict';
75
13
 
76
- instantiate: function() {
77
- instance = module;
78
- $module
79
- .data(moduleNamespace, module)
80
- ;
81
- },
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
82
17
 
83
- destroy: function() {
84
- module.debug('Destroying previous instance', $module);
85
- $module
86
- .off(eventNamespace)
87
- .removeData(moduleNamespace)
88
- ;
89
- },
18
+ window = (typeof window != 'undefined' && window.Math == Math)
19
+ ? window
20
+ : globalThis;
90
21
 
91
- refresh: function() {
92
- $title = $module.find(selector.title);
93
- $content = $module.find(selector.content);
94
- },
22
+ $.fn.accordion = function (parameters) {
23
+ var
24
+ $allModules = $(this),
95
25
 
96
- observeChanges: function() {
97
- if('MutationObserver' in window) {
98
- observer = new MutationObserver(function(mutations) {
99
- module.debug('DOM tree modified, updating selector cache');
100
- module.refresh();
101
- });
102
- observer.observe(element, {
103
- childList : true,
104
- subtree : true
105
- });
106
- module.debug('Setting up mutation observer', observer);
107
- }
108
- },
26
+ time = new Date().getTime(),
27
+ performance = [],
109
28
 
110
- bind: {
111
- events: function() {
112
- module.debug('Binding delegated events');
113
- $module
114
- .on(settings.on + eventNamespace, selector.trigger, module.event.click)
115
- ;
116
- }
117
- },
29
+ query = arguments[0],
30
+ methodInvoked = (typeof query == 'string'),
31
+ queryArguments = [].slice.call(arguments, 1),
118
32
 
119
- event: {
120
- click: function(event) {
121
- if($(event.target).closest(selector.ignore).length === 0) {
122
- module.toggle.call(this);
123
- }
124
- }
125
- },
33
+ returnedValue
34
+ ;
35
+ $allModules.each(function () {
36
+ var
37
+ settings = ($.isPlainObject(parameters))
38
+ ? $.extend(true, {}, $.fn.accordion.settings, parameters)
39
+ : $.extend({}, $.fn.accordion.settings),
40
+
41
+ className = settings.className,
42
+ namespace = settings.namespace,
43
+ selector = settings.selector,
44
+ error = settings.error,
45
+
46
+ eventNamespace = '.' + namespace,
47
+ moduleNamespace = 'module-' + namespace,
48
+ moduleSelector = $allModules.selector || '',
49
+
50
+ $module = $(this),
51
+ $title = $module.find(selector.title),
52
+ $content = $module.find(selector.content),
53
+
54
+ element = this,
55
+ instance = $module.data(moduleNamespace),
56
+ observer,
57
+ module
58
+ ;
126
59
 
127
- toggle: function(query) {
128
- var
129
- $activeTitle = (query !== undefined)
130
- ? (typeof query === 'number')
131
- ? $title.eq(query)
132
- : $(query).closest(selector.title)
133
- : $(this).closest(selector.title),
134
- $activeContent = $activeTitle.next($content),
135
- isAnimating = $activeContent.hasClass(className.animating),
136
- isActive = $activeContent.hasClass(className.active),
137
- isOpen = (isActive && !isAnimating),
138
- isOpening = (!isActive && isAnimating)
139
- ;
140
- module.debug('Toggling visibility of content', $activeTitle);
141
- if(isOpen || isOpening) {
142
- if(settings.collapsible) {
143
- module.close.call($activeTitle);
144
- }
145
- else {
146
- module.debug('Cannot close accordion content collapsing is disabled');
147
- }
148
- }
149
- else {
150
- module.open.call($activeTitle);
151
- }
152
- },
60
+ module = {
153
61
 
154
- open: function(query) {
155
- var
156
- $activeTitle = (query !== undefined)
157
- ? (typeof query === 'number')
158
- ? $title.eq(query)
159
- : $(query).closest(selector.title)
160
- : $(this).closest(selector.title),
161
- $activeContent = $activeTitle.next($content),
162
- isAnimating = $activeContent.hasClass(className.animating),
163
- isActive = $activeContent.hasClass(className.active),
164
- isOpen = (isActive || isAnimating)
165
- ;
166
- if(isOpen) {
167
- module.debug('Accordion already open, skipping', $activeContent);
168
- return;
169
- }
170
- module.debug('Opening accordion content', $activeTitle);
171
- settings.onOpening.call($activeContent);
172
- settings.onChanging.call($activeContent);
173
- if(settings.exclusive) {
174
- module.closeOthers.call($activeTitle);
175
- }
176
- $activeTitle
177
- .addClass(className.active)
178
- ;
179
- $activeContent
180
- .stop(true, true)
181
- .addClass(className.animating)
182
- ;
183
- if(settings.animateChildren) {
184
- if($.fn.transition !== undefined && $module.transition('is supported')) {
185
- $activeContent
186
- .children()
187
- .transition({
188
- animation : 'fade in',
189
- queue : false,
190
- useFailSafe : true,
191
- debug : settings.debug,
192
- verbose : settings.verbose,
193
- silent : settings.silent,
194
- duration : settings.duration,
195
- skipInlineHidden : true,
196
- onComplete: function() {
197
- $activeContent.children().removeClass(className.transition);
62
+ initialize: function () {
63
+ module.debug('Initializing', $module);
64
+ module.bind.events();
65
+ if (settings.observeChanges) {
66
+ module.observeChanges();
67
+ }
68
+ module.instantiate();
69
+ },
70
+
71
+ instantiate: function () {
72
+ instance = module;
73
+ $module
74
+ .data(moduleNamespace, module)
75
+ ;
76
+ },
77
+
78
+ destroy: function () {
79
+ module.debug('Destroying previous instance', $module);
80
+ $module
81
+ .off(eventNamespace)
82
+ .removeData(moduleNamespace)
83
+ ;
84
+ },
85
+
86
+ refresh: function () {
87
+ $title = $module.find(selector.title);
88
+ $content = $module.find(selector.content);
89
+ },
90
+
91
+ observeChanges: function () {
92
+ if ('MutationObserver' in window) {
93
+ observer = new MutationObserver(function (mutations) {
94
+ module.debug('DOM tree modified, updating selector cache');
95
+ module.refresh();
96
+ });
97
+ observer.observe(element, {
98
+ childList: true,
99
+ subtree: true,
100
+ });
101
+ module.debug('Setting up mutation observer', observer);
102
+ }
103
+ },
104
+
105
+ bind: {
106
+ events: function () {
107
+ module.debug('Binding delegated events');
108
+ $module
109
+ .on(settings.on + eventNamespace, selector.trigger, module.event.click)
110
+ ;
111
+ },
112
+ },
113
+
114
+ event: {
115
+ click: function (event) {
116
+ if ($(event.target).closest(selector.ignore).length === 0) {
117
+ module.toggle.call(this);
118
+ }
119
+ },
120
+ },
121
+
122
+ toggle: function (query) {
123
+ var
124
+ $activeTitle = (query !== undefined)
125
+ ? (typeof query === 'number')
126
+ ? $title.eq(query)
127
+ : $(query).closest(selector.title)
128
+ : $(this).closest(selector.title),
129
+ $activeContent = $activeTitle.next($content),
130
+ isAnimating = $activeContent.hasClass(className.animating),
131
+ isActive = $activeContent.hasClass(className.active),
132
+ isOpen = (isActive && !isAnimating),
133
+ isOpening = (!isActive && isAnimating)
134
+ ;
135
+ module.debug('Toggling visibility of content', $activeTitle);
136
+ if (isOpen || isOpening) {
137
+ if (settings.collapsible) {
138
+ module.close.call($activeTitle);
139
+ } else {
140
+ module.debug('Cannot close accordion content collapsing is disabled');
141
+ }
142
+ } else {
143
+ module.open.call($activeTitle);
144
+ }
145
+ },
146
+
147
+ open: function (query) {
148
+ var
149
+ $activeTitle = (query !== undefined)
150
+ ? (typeof query === 'number')
151
+ ? $title.eq(query)
152
+ : $(query).closest(selector.title)
153
+ : $(this).closest(selector.title),
154
+ $activeContent = $activeTitle.next($content),
155
+ isAnimating = $activeContent.hasClass(className.animating),
156
+ isActive = $activeContent.hasClass(className.active),
157
+ isOpen = (isActive || isAnimating)
158
+ ;
159
+ if (isOpen) {
160
+ module.debug('Accordion already open, skipping', $activeContent);
161
+
162
+ return;
163
+ }
164
+ module.debug('Opening accordion content', $activeTitle);
165
+ settings.onOpening.call($activeContent);
166
+ settings.onChanging.call($activeContent);
167
+ if (settings.exclusive) {
168
+ module.closeOthers.call($activeTitle);
169
+ }
170
+ $activeTitle
171
+ .addClass(className.active)
172
+ ;
173
+ $activeContent
174
+ .stop(true, true)
175
+ .addClass(className.animating)
176
+ ;
177
+ if (settings.animateChildren) {
178
+ if ($.fn.transition !== undefined && $module.transition('is supported')) {
179
+ $activeContent
180
+ .children()
181
+ .transition({
182
+ animation: 'fade in',
183
+ queue: false,
184
+ useFailSafe: true,
185
+ debug: settings.debug,
186
+ verbose: settings.verbose,
187
+ silent: settings.silent,
188
+ duration: settings.duration,
189
+ skipInlineHidden: true,
190
+ onComplete: function () {
191
+ $activeContent.children().removeClass(className.transition);
192
+ },
193
+ })
194
+ ;
195
+ } else {
196
+ $activeContent
197
+ .children()
198
+ .stop(true, true)
199
+ .animate({
200
+ opacity: 1,
201
+ }, settings.duration, module.resetOpacity);
202
+ }
203
+ }
204
+ $activeContent
205
+ .slideDown(settings.duration, settings.easing, function () {
206
+ $activeContent
207
+ .removeClass(className.animating)
208
+ .addClass(className.active)
209
+ ;
210
+ module.reset.display.call(this);
211
+ settings.onOpen.call(this);
212
+ settings.onChange.call(this);
213
+ })
214
+ ;
215
+ },
216
+
217
+ close: function (query) {
218
+ var
219
+ $activeTitle = (query !== undefined)
220
+ ? (typeof query === 'number')
221
+ ? $title.eq(query)
222
+ : $(query).closest(selector.title)
223
+ : $(this).closest(selector.title),
224
+ $activeContent = $activeTitle.next($content),
225
+ isAnimating = $activeContent.hasClass(className.animating),
226
+ isActive = $activeContent.hasClass(className.active),
227
+ isOpening = (!isActive && isAnimating),
228
+ isClosing = (isActive && isAnimating)
229
+ ;
230
+ if ((isActive || isOpening) && !isClosing) {
231
+ module.debug('Closing accordion content', $activeContent);
232
+ settings.onClosing.call($activeContent);
233
+ settings.onChanging.call($activeContent);
234
+ $activeTitle
235
+ .removeClass(className.active)
236
+ ;
237
+ $activeContent
238
+ .stop(true, true)
239
+ .addClass(className.animating)
240
+ ;
241
+ if (settings.animateChildren) {
242
+ if ($.fn.transition !== undefined && $module.transition('is supported')) {
243
+ $activeContent
244
+ .children()
245
+ .transition({
246
+ animation: 'fade out',
247
+ queue: false,
248
+ useFailSafe: true,
249
+ debug: settings.debug,
250
+ verbose: settings.verbose,
251
+ silent: settings.silent,
252
+ duration: settings.duration,
253
+ skipInlineHidden: true,
254
+ })
255
+ ;
256
+ } else {
257
+ $activeContent
258
+ .children()
259
+ .stop(true, true)
260
+ .animate({
261
+ opacity: 0,
262
+ }, settings.duration, module.resetOpacity);
263
+ }
264
+ }
265
+ $activeContent
266
+ .slideUp(settings.duration, settings.easing, function () {
267
+ $activeContent
268
+ .removeClass(className.animating)
269
+ .removeClass(className.active)
270
+ ;
271
+ module.reset.display.call(this);
272
+ settings.onClose.call(this);
273
+ settings.onChange.call(this);
274
+ })
275
+ ;
276
+ }
277
+ },
278
+
279
+ closeOthers: function (index) {
280
+ var
281
+ $activeTitle = (index !== undefined)
282
+ ? $title.eq(index)
283
+ : $(this).closest(selector.title),
284
+ $parentTitles = $activeTitle.parents(selector.content).prev(selector.title),
285
+ $activeAccordion = $activeTitle.closest(selector.accordion),
286
+ activeSelector = selector.title + '.' + className.active + ':visible',
287
+ activeContent = selector.content + '.' + className.active + ':visible',
288
+ $openTitles,
289
+ $nestedTitles,
290
+ $openContents
291
+ ;
292
+ if (settings.closeNested) {
293
+ $openTitles = $activeAccordion.find(activeSelector).not($parentTitles);
294
+ $openContents = $openTitles.next($content);
295
+ } else {
296
+ $openTitles = $activeAccordion.find(activeSelector).not($parentTitles);
297
+ $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles);
298
+ $openTitles = $openTitles.not($nestedTitles);
299
+ $openContents = $openTitles.next($content);
300
+ }
301
+ if (($openTitles.length > 0)) {
302
+ module.debug('Exclusive enabled, closing other content', $openTitles);
303
+ $openTitles
304
+ .removeClass(className.active)
305
+ ;
306
+ $openContents
307
+ .removeClass(className.animating)
308
+ .stop(true, true)
309
+ ;
310
+ if (settings.animateChildren) {
311
+ if ($.fn.transition !== undefined && $module.transition('is supported')) {
312
+ $openContents
313
+ .children()
314
+ .transition({
315
+ animation: 'fade out',
316
+ useFailSafe: true,
317
+ debug: settings.debug,
318
+ verbose: settings.verbose,
319
+ silent: settings.silent,
320
+ duration: settings.duration,
321
+ skipInlineHidden: true,
322
+ })
323
+ ;
324
+ } else {
325
+ $openContents
326
+ .children()
327
+ .stop(true, true)
328
+ .animate({
329
+ opacity: 0,
330
+ }, settings.duration, module.resetOpacity);
331
+ }
332
+ }
333
+ $openContents
334
+ .slideUp(settings.duration, settings.easing, function () {
335
+ $(this).removeClass(className.active);
336
+ module.reset.display.call(this);
337
+ })
338
+ ;
339
+ }
340
+ },
341
+
342
+ reset: {
343
+
344
+ display: function () {
345
+ module.verbose('Removing inline display from element', this);
346
+ var $element = $(this);
347
+ $element.css('display', '');
348
+ if ($element.attr('style') === '') {
349
+ $element
350
+ .attr('style', '')
351
+ .removeAttr('style')
352
+ ;
353
+ }
354
+ },
355
+
356
+ opacity: function () {
357
+ module.verbose('Removing inline opacity from element', this);
358
+ var $element = $(this);
359
+ $element.css('opacity', '');
360
+ if ($element.attr('style') === '') {
361
+ $element
362
+ .attr('style', '')
363
+ .removeAttr('style')
364
+ ;
365
+ }
366
+ },
367
+
368
+ },
369
+
370
+ setting: function (name, value) {
371
+ module.debug('Changing setting', name, value);
372
+ if ($.isPlainObject(name)) {
373
+ $.extend(true, settings, name);
374
+ } else if (value !== undefined) {
375
+ if ($.isPlainObject(settings[name])) {
376
+ $.extend(true, settings[name], value);
377
+ } else {
378
+ settings[name] = value;
379
+ }
380
+ } else {
381
+ return settings[name];
382
+ }
383
+ },
384
+ internal: function (name, value) {
385
+ module.debug('Changing internal', name, value);
386
+ if (value !== undefined) {
387
+ if ($.isPlainObject(name)) {
388
+ $.extend(true, module, name);
389
+ } else {
390
+ module[name] = value;
391
+ }
392
+ } else {
393
+ return module[name];
394
+ }
395
+ },
396
+ debug: function () {
397
+ if (!settings.silent && settings.debug) {
398
+ if (settings.performance) {
399
+ module.performance.log(arguments);
400
+ } else {
401
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
402
+ module.debug.apply(console, arguments);
403
+ }
404
+ }
405
+ },
406
+ verbose: function () {
407
+ if (!settings.silent && settings.verbose && settings.debug) {
408
+ if (settings.performance) {
409
+ module.performance.log(arguments);
410
+ } else {
411
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
412
+ module.verbose.apply(console, arguments);
413
+ }
414
+ }
415
+ },
416
+ error: function () {
417
+ if (!settings.silent) {
418
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
419
+ module.error.apply(console, arguments);
420
+ }
421
+ },
422
+ performance: {
423
+ log: function (message) {
424
+ var
425
+ currentTime,
426
+ executionTime,
427
+ previousTime
428
+ ;
429
+ if (settings.performance) {
430
+ currentTime = new Date().getTime();
431
+ previousTime = time || currentTime;
432
+ executionTime = currentTime - previousTime;
433
+ time = currentTime;
434
+ performance.push({
435
+ Name: message[0],
436
+ Arguments: [].slice.call(message, 1) || '',
437
+ Element: element,
438
+ 'Execution Time': executionTime,
439
+ });
440
+ }
441
+ clearTimeout(module.performance.timer);
442
+ module.performance.timer = setTimeout(module.performance.display, 500);
443
+ },
444
+ display: function () {
445
+ var
446
+ title = settings.name + ':',
447
+ totalTime = 0
448
+ ;
449
+ time = false;
450
+ clearTimeout(module.performance.timer);
451
+ $.each(performance, function (index, data) {
452
+ totalTime += data['Execution Time'];
453
+ });
454
+ title += ' ' + totalTime + 'ms';
455
+ if (moduleSelector) {
456
+ title += ' \'' + moduleSelector + '\'';
457
+ }
458
+ if ((console.group !== undefined || console.table !== undefined) && performance.length > 0) {
459
+ console.groupCollapsed(title);
460
+ if (console.table) {
461
+ console.table(performance);
462
+ } else {
463
+ $.each(performance, function (index, data) {
464
+ console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
465
+ });
466
+ }
467
+ console.groupEnd();
468
+ }
469
+ performance = [];
470
+ },
471
+ },
472
+ invoke: function (query, passedArguments, context) {
473
+ var
474
+ object = instance,
475
+ maxDepth,
476
+ found,
477
+ response
478
+ ;
479
+ passedArguments = passedArguments || queryArguments;
480
+ context = context || element;
481
+ if (typeof query == 'string' && object !== undefined) {
482
+ query = query.split(/[\. ]/);
483
+ maxDepth = query.length - 1;
484
+ $.each(query, function (depth, value) {
485
+ var camelCaseValue = (depth != maxDepth)
486
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
487
+ : query;
488
+ if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {
489
+ object = object[camelCaseValue];
490
+ } else if (object[camelCaseValue] !== undefined) {
491
+ found = object[camelCaseValue];
492
+
493
+ return false;
494
+ } else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {
495
+ object = object[value];
496
+ } else if (object[value] !== undefined) {
497
+ found = object[value];
498
+
499
+ return false;
500
+ } else {
501
+ module.error(error.method, query);
502
+
503
+ return false;
504
+ }
505
+ });
506
+ }
507
+ if (isFunction(found)) {
508
+ response = found.apply(context, passedArguments);
509
+ } else if (found !== undefined) {
510
+ response = found;
511
+ }
512
+ if (Array.isArray(returnedValue)) {
513
+ returnedValue.push(response);
514
+ } else if (returnedValue !== undefined) {
515
+ returnedValue = [returnedValue, response];
516
+ } else if (response !== undefined) {
517
+ returnedValue = response;
198
518
  }
199
- })
200
- ;
201
- }
202
- else {
203
- $activeContent
204
- .children()
205
- .stop(true, true)
206
- .animate({
207
- opacity: 1
208
- }, settings.duration, module.resetOpacity)
209
- ;
210
- }
211
- }
212
- $activeContent
213
- .slideDown(settings.duration, settings.easing, function() {
214
- $activeContent
215
- .removeClass(className.animating)
216
- .addClass(className.active)
217
- ;
218
- module.reset.display.call(this);
219
- settings.onOpen.call(this);
220
- settings.onChange.call(this);
221
- })
222
- ;
223
- },
224
519
 
225
- close: function(query) {
226
- var
227
- $activeTitle = (query !== undefined)
228
- ? (typeof query === 'number')
229
- ? $title.eq(query)
230
- : $(query).closest(selector.title)
231
- : $(this).closest(selector.title),
232
- $activeContent = $activeTitle.next($content),
233
- isAnimating = $activeContent.hasClass(className.animating),
234
- isActive = $activeContent.hasClass(className.active),
235
- isOpening = (!isActive && isAnimating),
236
- isClosing = (isActive && isAnimating)
237
- ;
238
- if((isActive || isOpening) && !isClosing) {
239
- module.debug('Closing accordion content', $activeContent);
240
- settings.onClosing.call($activeContent);
241
- settings.onChanging.call($activeContent);
242
- $activeTitle
243
- .removeClass(className.active)
244
- ;
245
- $activeContent
246
- .stop(true, true)
247
- .addClass(className.animating)
248
- ;
249
- if(settings.animateChildren) {
250
- if($.fn.transition !== undefined && $module.transition('is supported')) {
251
- $activeContent
252
- .children()
253
- .transition({
254
- animation : 'fade out',
255
- queue : false,
256
- useFailSafe : true,
257
- debug : settings.debug,
258
- verbose : settings.verbose,
259
- silent : settings.silent,
260
- duration : settings.duration,
261
- skipInlineHidden : true
262
- })
263
- ;
264
- }
265
- else {
266
- $activeContent
267
- .children()
268
- .stop(true, true)
269
- .animate({
270
- opacity: 0
271
- }, settings.duration, module.resetOpacity)
272
- ;
273
- }
520
+ return found;
521
+ },
522
+ };
523
+ if (methodInvoked) {
524
+ if (instance === undefined) {
525
+ module.initialize();
526
+ }
527
+ module.invoke(query);
528
+ } else {
529
+ if (instance !== undefined) {
530
+ instance.invoke('destroy');
531
+ }
532
+ module.initialize();
274
533
  }
275
- $activeContent
276
- .slideUp(settings.duration, settings.easing, function() {
277
- $activeContent
278
- .removeClass(className.animating)
279
- .removeClass(className.active)
280
- ;
281
- module.reset.display.call(this);
282
- settings.onClose.call(this);
283
- settings.onChange.call(this);
284
- })
285
- ;
286
- }
287
- },
534
+ });
288
535
 
289
- closeOthers: function(index) {
290
- var
291
- $activeTitle = (index !== undefined)
292
- ? $title.eq(index)
293
- : $(this).closest(selector.title),
294
- $parentTitles = $activeTitle.parents(selector.content).prev(selector.title),
295
- $activeAccordion = $activeTitle.closest(selector.accordion),
296
- activeSelector = selector.title + '.' + className.active + ':visible',
297
- activeContent = selector.content + '.' + className.active + ':visible',
298
- $openTitles,
299
- $nestedTitles,
300
- $openContents
301
- ;
302
- if(settings.closeNested) {
303
- $openTitles = $activeAccordion.find(activeSelector).not($parentTitles);
304
- $openContents = $openTitles.next($content);
305
- }
306
- else {
307
- $openTitles = $activeAccordion.find(activeSelector).not($parentTitles);
308
- $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles);
309
- $openTitles = $openTitles.not($nestedTitles);
310
- $openContents = $openTitles.next($content);
311
- }
312
- if( ($openTitles.length > 0) ) {
313
- module.debug('Exclusive enabled, closing other content', $openTitles);
314
- $openTitles
315
- .removeClass(className.active)
316
- ;
317
- $openContents
318
- .removeClass(className.animating)
319
- .stop(true, true)
320
- ;
321
- if(settings.animateChildren) {
322
- if($.fn.transition !== undefined && $module.transition('is supported')) {
323
- $openContents
324
- .children()
325
- .transition({
326
- animation : 'fade out',
327
- useFailSafe : true,
328
- debug : settings.debug,
329
- verbose : settings.verbose,
330
- silent : settings.silent,
331
- duration : settings.duration,
332
- skipInlineHidden : true
333
- })
334
- ;
335
- }
336
- else {
337
- $openContents
338
- .children()
339
- .stop(true, true)
340
- .animate({
341
- opacity: 0
342
- }, settings.duration, module.resetOpacity)
343
- ;
344
- }
345
- }
346
- $openContents
347
- .slideUp(settings.duration , settings.easing, function() {
348
- $(this).removeClass(className.active);
349
- module.reset.display.call(this);
350
- })
351
- ;
352
- }
353
- },
536
+ return (returnedValue !== undefined)
537
+ ? returnedValue
538
+ : this;
539
+ };
354
540
 
355
- reset: {
541
+ $.fn.accordion.settings = {
356
542
 
357
- display: function() {
358
- module.verbose('Removing inline display from element', this);
359
- $(this).css('display', '');
360
- if( $(this).attr('style') === '') {
361
- $(this)
362
- .attr('style', '')
363
- .removeAttr('style')
364
- ;
365
- }
366
- },
367
-
368
- opacity: function() {
369
- module.verbose('Removing inline opacity from element', this);
370
- $(this).css('opacity', '');
371
- if( $(this).attr('style') === '') {
372
- $(this)
373
- .attr('style', '')
374
- .removeAttr('style')
375
- ;
376
- }
377
- },
543
+ name: 'Accordion',
544
+ namespace: 'accordion',
378
545
 
379
- },
546
+ silent: false,
547
+ debug: false,
548
+ verbose: false,
549
+ performance: true,
380
550
 
381
- setting: function(name, value) {
382
- module.debug('Changing setting', name, value);
383
- if( $.isPlainObject(name) ) {
384
- $.extend(true, settings, name);
385
- }
386
- else if(value !== undefined) {
387
- if($.isPlainObject(settings[name])) {
388
- $.extend(true, settings[name], value);
389
- }
390
- else {
391
- settings[name] = value;
392
- }
393
- }
394
- else {
395
- return settings[name];
396
- }
397
- },
398
- internal: function(name, value) {
399
- module.debug('Changing internal', name, value);
400
- if(value !== undefined) {
401
- if( $.isPlainObject(name) ) {
402
- $.extend(true, module, name);
403
- }
404
- else {
405
- module[name] = value;
406
- }
407
- }
408
- else {
409
- return module[name];
410
- }
411
- },
412
- debug: function() {
413
- if(!settings.silent && settings.debug) {
414
- if(settings.performance) {
415
- module.performance.log(arguments);
416
- }
417
- else {
418
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
419
- module.debug.apply(console, arguments);
420
- }
421
- }
422
- },
423
- verbose: function() {
424
- if(!settings.silent && settings.verbose && settings.debug) {
425
- if(settings.performance) {
426
- module.performance.log(arguments);
427
- }
428
- else {
429
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
430
- module.verbose.apply(console, arguments);
431
- }
432
- }
551
+ on: 'click', // event on title that opens accordion
552
+
553
+ observeChanges: true, // whether accordion should automatically refresh on DOM insertion
554
+
555
+ exclusive: true, // whether a single accordion content panel should be open at once
556
+ collapsible: true, // whether accordion content can be closed
557
+ closeNested: false, // whether nested content should be closed when a panel is closed
558
+ animateChildren: true, // whether children opacity should be animated
559
+
560
+ duration: 350, // duration of animation
561
+ easing: 'easeOutQuad', // easing equation for animation
562
+
563
+ onOpening: function () {}, // callback before open animation
564
+ onClosing: function () {}, // callback before closing animation
565
+ onChanging: function () {}, // callback before closing or opening animation
566
+
567
+ onOpen: function () {}, // callback after open animation
568
+ onClose: function () {}, // callback after closing animation
569
+ onChange: function () {}, // callback after closing or opening animation
570
+
571
+ error: {
572
+ method: 'The method you called is not defined',
433
573
  },
434
- error: function() {
435
- if(!settings.silent) {
436
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
437
- module.error.apply(console, arguments);
438
- }
574
+
575
+ className: {
576
+ active: 'active',
577
+ animating: 'animating',
578
+ transition: 'transition',
439
579
  },
440
- performance: {
441
- log: function(message) {
442
- var
443
- currentTime,
444
- executionTime,
445
- previousTime
446
- ;
447
- if(settings.performance) {
448
- currentTime = new Date().getTime();
449
- previousTime = time || currentTime;
450
- executionTime = currentTime - previousTime;
451
- time = currentTime;
452
- performance.push({
453
- 'Name' : message[0],
454
- 'Arguments' : [].slice.call(message, 1) || '',
455
- 'Element' : element,
456
- 'Execution Time' : executionTime
457
- });
458
- }
459
- clearTimeout(module.performance.timer);
460
- module.performance.timer = setTimeout(module.performance.display, 500);
461
- },
462
- display: function() {
463
- var
464
- title = settings.name + ':',
465
- totalTime = 0
466
- ;
467
- time = false;
468
- clearTimeout(module.performance.timer);
469
- $.each(performance, function(index, data) {
470
- totalTime += data['Execution Time'];
471
- });
472
- title += ' ' + totalTime + 'ms';
473
- if(moduleSelector) {
474
- title += ' \'' + moduleSelector + '\'';
475
- }
476
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
477
- console.groupCollapsed(title);
478
- if(console.table) {
479
- console.table(performance);
480
- }
481
- else {
482
- $.each(performance, function(index, data) {
483
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
484
- });
485
- }
486
- console.groupEnd();
487
- }
488
- performance = [];
489
- }
580
+
581
+ selector: {
582
+ accordion: '.accordion',
583
+ title: '.title',
584
+ trigger: '.title',
585
+ ignore: '.ui.dropdown',
586
+ content: '.content',
490
587
  },
491
- invoke: function(query, passedArguments, context) {
492
- var
493
- object = instance,
494
- maxDepth,
495
- found,
496
- response
497
- ;
498
- passedArguments = passedArguments || queryArguments;
499
- context = context || element;
500
- if(typeof query == 'string' && object !== undefined) {
501
- query = query.split(/[\. ]/);
502
- maxDepth = query.length - 1;
503
- $.each(query, function(depth, value) {
504
- var camelCaseValue = (depth != maxDepth)
505
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
506
- : query
507
- ;
508
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
509
- object = object[camelCaseValue];
510
- }
511
- else if( object[camelCaseValue] !== undefined ) {
512
- found = object[camelCaseValue];
513
- return false;
514
- }
515
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
516
- object = object[value];
517
- }
518
- else if( object[value] !== undefined ) {
519
- found = object[value];
520
- return false;
521
- }
522
- else {
523
- module.error(error.method, query);
524
- return false;
525
- }
526
- });
527
- }
528
- if ( $.isFunction( found ) ) {
529
- response = found.apply(context, passedArguments);
530
- }
531
- else if(found !== undefined) {
532
- response = found;
533
- }
534
- if(Array.isArray(returnedValue)) {
535
- returnedValue.push(response);
536
- }
537
- else if(returnedValue !== undefined) {
538
- returnedValue = [returnedValue, response];
539
- }
540
- else if(response !== undefined) {
541
- returnedValue = response;
542
- }
543
- return found;
544
- }
545
- };
546
- if(methodInvoked) {
547
- if(instance === undefined) {
548
- module.initialize();
549
- }
550
- module.invoke(query);
551
- }
552
- else {
553
- if(instance !== undefined) {
554
- instance.invoke('destroy');
555
- }
556
- module.initialize();
557
- }
558
- })
559
- ;
560
- return (returnedValue !== undefined)
561
- ? returnedValue
562
- : this
563
- ;
564
- };
565
-
566
- $.fn.accordion.settings = {
567
-
568
- name : 'Accordion',
569
- namespace : 'accordion',
570
-
571
- silent : false,
572
- debug : false,
573
- verbose : false,
574
- performance : true,
575
-
576
- on : 'click', // event on title that opens accordion
577
-
578
- observeChanges : true, // whether accordion should automatically refresh on DOM insertion
579
-
580
- exclusive : true, // whether a single accordion content panel should be open at once
581
- collapsible : true, // whether accordion content can be closed
582
- closeNested : false, // whether nested content should be closed when a panel is closed
583
- animateChildren : true, // whether children opacity should be animated
584
-
585
- duration : 350, // duration of animation
586
- easing : 'easeOutQuad', // easing equation for animation
587
-
588
- onOpening : function(){}, // callback before open animation
589
- onClosing : function(){}, // callback before closing animation
590
- onChanging : function(){}, // callback before closing or opening animation
591
-
592
- onOpen : function(){}, // callback after open animation
593
- onClose : function(){}, // callback after closing animation
594
- onChange : function(){}, // callback after closing or opening animation
595
-
596
- error: {
597
- method : 'The method you called is not defined'
598
- },
599
-
600
- className : {
601
- active : 'active',
602
- animating : 'animating',
603
- transition: 'transition'
604
- },
605
-
606
- selector : {
607
- accordion : '.accordion',
608
- title : '.title',
609
- trigger : '.title',
610
- ignore : '.ui.dropdown',
611
- content : '.content'
612
- }
613
-
614
- };
615
-
616
- // Adds easing
617
- $.extend( $.easing, {
618
- easeOutQuad: function (x, t, b, c, d) {
619
- return -c *(t/=d)*(t-2) + b;
620
- }
621
- });
622
-
623
- })( jQuery, window, document );
624
588
 
589
+ };
590
+
591
+ // Adds easing
592
+ $.extend($.easing, {
593
+ easeOutQuad: function (x) {
594
+ return 1 - (1 - x) * (1 - x);
595
+ },
596
+ });
597
+ })(jQuery, window, document);