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
@@ -8,758 +8,729 @@
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.dimmer = 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
-
40
- $allModules
41
- .each(function() {
42
- var
43
- settings = ( $.isPlainObject(parameters) )
44
- ? $.extend(true, {}, $.fn.dimmer.settings, parameters)
45
- : $.extend({}, $.fn.dimmer.settings),
46
-
47
- selector = settings.selector,
48
- namespace = settings.namespace,
49
- className = settings.className,
50
- error = settings.error,
51
-
52
- eventNamespace = '.' + namespace,
53
- moduleNamespace = 'module-' + namespace,
54
- moduleSelector = $allModules.selector || '',
55
-
56
- clickEvent = ('ontouchstart' in document.documentElement)
57
- ? 'touchstart'
58
- : 'click',
59
-
60
- $module = $(this),
61
- $dimmer,
62
- $dimmable,
63
-
64
- element = this,
65
- instance = $module.data(moduleNamespace),
66
- module
67
- ;
68
-
69
- module = {
70
-
71
- preinitialize: function() {
72
- if( module.is.dimmer() ) {
73
-
74
- $dimmable = $module.parent();
75
- $dimmer = $module;
76
- }
77
- else {
78
- $dimmable = $module;
79
- if( module.has.dimmer() ) {
80
- if(settings.dimmerName) {
81
- $dimmer = $dimmable.find(selector.dimmer).filter('.' + settings.dimmerName);
82
- }
83
- else {
84
- $dimmer = $dimmable.find(selector.dimmer);
85
- }
86
- }
87
- else {
88
- $dimmer = module.create();
89
- }
90
- }
91
- },
11
+ (function ($, window, document, undefined) {
12
+ 'use strict';
92
13
 
93
- initialize: function() {
94
- module.debug('Initializing dimmer', settings);
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
95
17
 
96
- module.bind.events();
97
- module.set.dimmable();
98
- module.instantiate();
99
- },
18
+ window = (typeof window != 'undefined' && window.Math == Math)
19
+ ? window
20
+ : globalThis;
100
21
 
101
- instantiate: function() {
102
- module.verbose('Storing instance of module', module);
103
- instance = module;
104
- $module
105
- .data(moduleNamespace, instance)
106
- ;
107
- },
22
+ $.fn.dimmer = function (parameters) {
23
+ var
24
+ $allModules = $(this),
108
25
 
109
- destroy: function() {
110
- module.verbose('Destroying previous module', $dimmer);
111
- module.unbind.events();
112
- module.remove.variation();
113
- $dimmable
114
- .off(eventNamespace)
115
- ;
116
- },
26
+ time = new Date().getTime(),
27
+ performance = [],
117
28
 
118
- bind: {
119
- events: function() {
120
- if(settings.on == 'hover') {
121
- $dimmable
122
- .on('mouseenter' + eventNamespace, module.show)
123
- .on('mouseleave' + eventNamespace, module.hide)
124
- ;
125
- }
126
- else if(settings.on == 'click') {
127
- $dimmable
128
- .on(clickEvent + eventNamespace, module.toggle)
129
- ;
130
- }
131
- if( module.is.page() ) {
132
- module.debug('Setting as a page dimmer', $dimmable);
133
- module.set.pageDimmer();
134
- }
29
+ query = arguments[0],
30
+ methodInvoked = (typeof query == 'string'),
31
+ queryArguments = [].slice.call(arguments, 1),
135
32
 
136
- if( module.is.closable() ) {
137
- module.verbose('Adding dimmer close event', $dimmer);
138
- $dimmable
139
- .on(clickEvent + eventNamespace, selector.dimmer, module.event.click)
140
- ;
141
- }
142
- }
143
- },
33
+ returnedValue
34
+ ;
144
35
 
145
- unbind: {
146
- events: function() {
147
- $module
148
- .removeData(moduleNamespace)
149
- ;
150
- $dimmable
151
- .off(eventNamespace)
36
+ $allModules.each(function () {
37
+ var
38
+ settings = ($.isPlainObject(parameters))
39
+ ? $.extend(true, {}, $.fn.dimmer.settings, parameters)
40
+ : $.extend({}, $.fn.dimmer.settings),
41
+
42
+ selector = settings.selector,
43
+ namespace = settings.namespace,
44
+ className = settings.className,
45
+ error = settings.error,
46
+
47
+ eventNamespace = '.' + namespace,
48
+ moduleNamespace = 'module-' + namespace,
49
+ moduleSelector = $allModules.selector || '',
50
+
51
+ clickEvent = ('ontouchstart' in document.documentElement)
52
+ ? 'touchstart'
53
+ : 'click',
54
+
55
+ $module = $(this),
56
+ $dimmer,
57
+ $dimmable,
58
+
59
+ element = this,
60
+ instance = $module.data(moduleNamespace),
61
+ module
152
62
  ;
153
- }
154
- },
155
-
156
- event: {
157
- click: function(event) {
158
- module.verbose('Determining if event occurred on dimmer', event);
159
- if( $dimmer.find(event.target).length === 0 || $(event.target).is(selector.content) ) {
160
- module.hide();
161
- event.stopImmediatePropagation();
162
- }
163
- }
164
- },
165
-
166
- addContent: function(element) {
167
- var
168
- $content = $(element)
169
- ;
170
- module.debug('Add content to dimmer', $content);
171
- if($content.parent()[0] !== $dimmer[0]) {
172
- $content.detach().appendTo($dimmer);
173
- }
174
- },
175
63
 
176
- create: function() {
177
- var
178
- $element = $( settings.template.dimmer(settings) )
179
- ;
180
- if(settings.dimmerName) {
181
- module.debug('Creating named dimmer', settings.dimmerName);
182
- $element.addClass(settings.dimmerName);
183
- }
184
- $element
185
- .appendTo($dimmable)
186
- ;
187
- return $element;
188
- },
189
-
190
- show: function(callback) {
191
- callback = $.isFunction(callback)
192
- ? callback
193
- : function(){}
194
- ;
195
- if( (!module.is.dimmed() || module.is.animating()) && module.is.enabled() ) {
196
- if(settings.onShow.call(element) === false) {
197
- module.verbose('Show callback returned false cancelling dimmer show');
198
- return;
199
- }
200
- module.debug('Showing dimmer', $dimmer, settings);
201
- module.set.variation();
202
- module.animate.show(callback);
203
- settings.onChange.call(element);
204
- }
205
- else {
206
- module.debug('Dimmer is already shown or disabled');
207
- }
208
- },
209
-
210
- hide: function(callback) {
211
- callback = $.isFunction(callback)
212
- ? callback
213
- : function(){}
214
- ;
215
- if( module.is.dimmed() || module.is.animating() ) {
216
- if(settings.onHide.call(element) === false) {
217
- module.verbose('Hide callback returned false cancelling dimmer hide');
218
- return;
219
- }
220
- module.debug('Hiding dimmer', $dimmer);
221
- module.animate.hide(callback);
222
- settings.onChange.call(element);
223
- }
224
- else {
225
- module.debug('Dimmer is not visible');
226
- }
227
- },
228
-
229
- toggle: function() {
230
- module.verbose('Toggling dimmer visibility', $dimmer);
231
- if( !module.is.dimmed() ) {
232
- module.show();
233
- }
234
- else {
235
- if ( module.is.closable() ) {
236
- module.hide();
237
- }
238
- }
239
- },
240
-
241
- animate: {
242
- show: function(callback) {
243
- callback = $.isFunction(callback)
244
- ? callback
245
- : function(){}
246
- ;
247
- if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
248
- if(settings.useFlex) {
249
- module.debug('Using flex dimmer');
250
- module.remove.legacy();
251
- }
252
- else {
253
- module.debug('Using legacy non-flex dimmer');
254
- module.set.legacy();
255
- }
256
- if(settings.opacity !== 'auto') {
257
- module.set.opacity();
258
- }
259
- $dimmer
260
- .transition({
261
- debug : settings.debug,
262
- verbose : settings.verbose,
263
- silent : settings.silent,
264
- displayType : settings.useFlex
265
- ? 'flex'
266
- : 'block',
267
- animation : (settings.transition.showMethod || settings.transition) + ' in',
268
- queue : false,
269
- duration : module.get.duration(),
270
- useFailSafe : true,
271
- onStart : function() {
272
- module.set.dimmed();
273
- },
274
- onComplete : function() {
275
- module.set.active();
276
- settings.onVisible.call($dimmer);
277
- callback();
278
- }
279
- })
280
- ;
281
- }
282
- else {
283
- module.verbose('Showing dimmer animation with javascript');
284
- module.set.dimmed();
285
- if(settings.opacity == 'auto') {
286
- settings.opacity = 0.8;
287
- }
288
- $dimmer
289
- .stop()
290
- .css({
291
- opacity : 0,
292
- width : '100%',
293
- height : '100%'
294
- })
295
- .fadeTo(module.get.duration(), settings.opacity, function() {
296
- $dimmer.removeAttr('style');
297
- module.set.active();
298
- settings.onVisible.call($dimmer);
299
- callback();
300
- })
301
- ;
302
- }
303
- },
304
- hide: function(callback) {
305
- callback = $.isFunction(callback)
306
- ? callback
307
- : function(){}
308
- ;
309
- if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
310
- module.verbose('Hiding dimmer with css');
311
- $dimmer
312
- .transition({
313
- debug : settings.debug,
314
- verbose : settings.verbose,
315
- silent : settings.silent,
316
- displayType : settings.useFlex
317
- ? 'flex'
318
- : 'block',
319
- animation : (settings.transition.hideMethod || settings.transition) + ' out',
320
- queue : false,
321
- duration : module.get.duration(),
322
- useFailSafe : true,
323
- onComplete : function() {
324
- module.remove.dimmed();
64
+ module = {
65
+
66
+ preinitialize: function () {
67
+ if (module.is.dimmer()) {
68
+ $dimmable = $module.parent();
69
+ $dimmer = $module;
70
+ } else {
71
+ $dimmable = $module;
72
+ if (module.has.dimmer()) {
73
+ if (settings.dimmerName) {
74
+ $dimmer = $dimmable.find(selector.dimmer).filter('.' + settings.dimmerName);
75
+ } else {
76
+ $dimmer = $dimmable.find(selector.dimmer);
77
+ }
78
+ } else {
79
+ $dimmer = module.create();
80
+ }
81
+ }
82
+ },
83
+
84
+ initialize: function () {
85
+ module.debug('Initializing dimmer', settings);
86
+
87
+ module.bind.events();
88
+ module.set.dimmable();
89
+ module.instantiate();
90
+ },
91
+
92
+ instantiate: function () {
93
+ module.verbose('Storing instance of module', module);
94
+ instance = module;
95
+ $module
96
+ .data(moduleNamespace, instance)
97
+ ;
98
+ },
99
+
100
+ destroy: function () {
101
+ module.verbose('Destroying previous module', $dimmer);
102
+ module.unbind.events();
325
103
  module.remove.variation();
326
- module.remove.active();
327
- settings.onHidden.call($dimmer);
328
- callback();
329
- }
330
- })
331
- ;
332
- }
333
- else {
334
- module.verbose('Hiding dimmer with javascript');
335
- $dimmer
336
- .stop()
337
- .fadeOut(module.get.duration(), function() {
338
- module.remove.dimmed();
339
- module.remove.active();
340
- $dimmer.removeAttr('style');
341
- settings.onHidden.call($dimmer);
342
- callback();
343
- })
344
- ;
345
- }
346
- }
104
+ $dimmable
105
+ .off(eventNamespace)
106
+ ;
107
+ },
108
+
109
+ bind: {
110
+ events: function () {
111
+ if (settings.on == 'hover') {
112
+ $dimmable
113
+ .on('mouseenter' + eventNamespace, module.show)
114
+ .on('mouseleave' + eventNamespace, module.hide)
115
+ ;
116
+ } else if (settings.on == 'click') {
117
+ $dimmable
118
+ .on(clickEvent + eventNamespace, module.toggle)
119
+ ;
120
+ }
121
+ if (module.is.page()) {
122
+ module.debug('Setting as a page dimmer', $dimmable);
123
+ module.set.pageDimmer();
124
+ }
125
+
126
+ if (module.is.closable()) {
127
+ module.verbose('Adding dimmer close event', $dimmer);
128
+ $dimmable
129
+ .on(clickEvent + eventNamespace, selector.dimmer, module.event.click)
130
+ ;
131
+ }
132
+ },
133
+ },
134
+
135
+ unbind: {
136
+ events: function () {
137
+ $module
138
+ .removeData(moduleNamespace)
139
+ ;
140
+ $dimmable
141
+ .off(eventNamespace)
142
+ ;
143
+ },
144
+ },
145
+
146
+ event: {
147
+ click: function (event) {
148
+ module.verbose('Determining if event occurred on dimmer', event);
149
+ if ($dimmer.find(event.target).length === 0 || $(event.target).is(selector.content)) {
150
+ module.hide();
151
+ event.stopImmediatePropagation();
152
+ }
153
+ },
154
+ },
155
+
156
+ addContent: function (element) {
157
+ var
158
+ $content = $(element)
159
+ ;
160
+ module.debug('Add content to dimmer', $content);
161
+ if ($content.parent()[0] !== $dimmer[0]) {
162
+ $content.detach().appendTo($dimmer);
163
+ }
164
+ },
165
+
166
+ create: function () {
167
+ var
168
+ $element = $(settings.template.dimmer(settings))
169
+ ;
170
+ if (settings.dimmerName) {
171
+ module.debug('Creating named dimmer', settings.dimmerName);
172
+ $element.addClass(settings.dimmerName);
173
+ }
174
+ $element
175
+ .appendTo($dimmable)
176
+ ;
177
+
178
+ return $element;
179
+ },
180
+
181
+ show: function (callback) {
182
+ callback = isFunction(callback)
183
+ ? callback
184
+ : function () {};
185
+ if ((!module.is.dimmed() || module.is.animating()) && module.is.enabled()) {
186
+ if (settings.onShow.call(element) === false) {
187
+ module.verbose('Show callback returned false cancelling dimmer show');
188
+
189
+ return;
190
+ }
191
+ module.debug('Showing dimmer', $dimmer, settings);
192
+ module.set.variation();
193
+ module.animate.show(callback);
194
+ settings.onChange.call(element);
195
+ } else {
196
+ module.debug('Dimmer is already shown or disabled');
197
+ }
198
+ },
199
+
200
+ hide: function (callback) {
201
+ callback = isFunction(callback)
202
+ ? callback
203
+ : function () {};
204
+ if (module.is.dimmed() || module.is.animating()) {
205
+ if (settings.onHide.call(element) === false) {
206
+ module.verbose('Hide callback returned false cancelling dimmer hide');
207
+
208
+ return;
209
+ }
210
+ module.debug('Hiding dimmer', $dimmer);
211
+ module.animate.hide(callback);
212
+ settings.onChange.call(element);
213
+ } else {
214
+ module.debug('Dimmer is not visible');
215
+ }
216
+ },
217
+
218
+ toggle: function () {
219
+ module.verbose('Toggling dimmer visibility', $dimmer);
220
+ if (!module.is.dimmed()) {
221
+ module.show();
222
+ } else {
223
+ if (module.is.closable()) {
224
+ module.hide();
225
+ }
226
+ }
227
+ },
228
+
229
+ animate: {
230
+ show: function (callback) {
231
+ callback = isFunction(callback)
232
+ ? callback
233
+ : function () {};
234
+ if (settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
235
+ if (settings.useFlex) {
236
+ module.debug('Using flex dimmer');
237
+ module.remove.legacy();
238
+ } else {
239
+ module.debug('Using legacy non-flex dimmer');
240
+ module.set.legacy();
241
+ }
242
+ if (settings.opacity !== 'auto') {
243
+ module.set.opacity();
244
+ }
245
+ $dimmer
246
+ .transition({
247
+ debug: settings.debug,
248
+ verbose: settings.verbose,
249
+ silent: settings.silent,
250
+ displayType: settings.useFlex
251
+ ? 'flex'
252
+ : 'block',
253
+ animation: (settings.transition.showMethod || settings.transition) + ' in',
254
+ queue: false,
255
+ duration: module.get.duration(),
256
+ useFailSafe: true,
257
+ onStart: function () {
258
+ module.set.dimmed();
259
+ },
260
+ onComplete: function () {
261
+ module.set.active();
262
+ settings.onVisible.call($dimmer);
263
+ callback();
264
+ },
265
+ })
266
+ ;
267
+ } else {
268
+ module.verbose('Showing dimmer animation with javascript');
269
+ module.set.dimmed();
270
+ if (settings.opacity == 'auto') {
271
+ settings.opacity = 0.8;
272
+ }
273
+ $dimmer
274
+ .stop()
275
+ .css({
276
+ opacity: 0,
277
+ width: '100%',
278
+ height: '100%',
279
+ })
280
+ .fadeTo(module.get.duration(), settings.opacity, function () {
281
+ $dimmer.removeAttr('style');
282
+ module.set.active();
283
+ settings.onVisible.call($dimmer);
284
+ callback();
285
+ })
286
+ ;
287
+ }
288
+ },
289
+ hide: function (callback) {
290
+ callback = isFunction(callback)
291
+ ? callback
292
+ : function () {};
293
+ if (settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
294
+ module.verbose('Hiding dimmer with css');
295
+ $dimmer
296
+ .transition({
297
+ debug: settings.debug,
298
+ verbose: settings.verbose,
299
+ silent: settings.silent,
300
+ displayType: settings.useFlex
301
+ ? 'flex'
302
+ : 'block',
303
+ animation: (settings.transition.hideMethod || settings.transition) + ' out',
304
+ queue: false,
305
+ duration: module.get.duration(),
306
+ useFailSafe: true,
307
+ onComplete: function () {
308
+ module.remove.dimmed();
309
+ module.remove.variation();
310
+ module.remove.active();
311
+ settings.onHidden.call($dimmer);
312
+ callback();
313
+ },
314
+ })
315
+ ;
316
+ } else {
317
+ module.verbose('Hiding dimmer with javascript');
318
+ $dimmer
319
+ .stop()
320
+ .fadeOut(module.get.duration(), function () {
321
+ module.remove.dimmed();
322
+ module.remove.active();
323
+ $dimmer.removeAttr('style');
324
+ settings.onHidden.call($dimmer);
325
+ callback();
326
+ })
327
+ ;
328
+ }
329
+ },
330
+ },
331
+
332
+ get: {
333
+ dimmer: function () {
334
+ return $dimmer;
335
+ },
336
+ duration: function () {
337
+ if (module.is.active()) {
338
+ return settings.transition.hideDuration || settings.duration.hide || settings.duration;
339
+ } else {
340
+ return settings.transition.showDuration || settings.duration.show || settings.duration;
341
+ }
342
+ },
343
+ },
344
+
345
+ has: {
346
+ dimmer: function () {
347
+ if (settings.dimmerName) {
348
+ return ($module.find(selector.dimmer).filter('.' + settings.dimmerName).length > 0);
349
+ } else {
350
+ return ($module.find(selector.dimmer).length > 0);
351
+ }
352
+ },
353
+ },
354
+
355
+ is: {
356
+ active: function () {
357
+ return $dimmer.hasClass(className.active);
358
+ },
359
+ animating: function () {
360
+ return ($dimmer.is(':animated') || $dimmer.hasClass(className.animating));
361
+ },
362
+ closable: function () {
363
+ if (settings.closable == 'auto') {
364
+ return settings.on != 'hover';
365
+ }
366
+
367
+ return settings.closable;
368
+ },
369
+ dimmer: function () {
370
+ return $module.hasClass(className.dimmer);
371
+ },
372
+ dimmable: function () {
373
+ return $module.hasClass(className.dimmable);
374
+ },
375
+ dimmed: function () {
376
+ return $dimmable.hasClass(className.dimmed);
377
+ },
378
+ disabled: function () {
379
+ return $dimmable.hasClass(className.disabled);
380
+ },
381
+ enabled: function () {
382
+ return !module.is.disabled();
383
+ },
384
+ page: function () {
385
+ return $dimmable.is('body');
386
+ },
387
+ pageDimmer: function () {
388
+ return $dimmer.hasClass(className.pageDimmer);
389
+ },
390
+ },
391
+
392
+ can: {
393
+ show: function () {
394
+ return !$dimmer.hasClass(className.disabled);
395
+ },
396
+ },
397
+
398
+ set: {
399
+ opacity: function (opacity) {
400
+ var
401
+ color = $dimmer.css('background-color'),
402
+ colorArray = color.split(','),
403
+ isRGB = (colorArray && colorArray.length >= 3)
404
+ ;
405
+ opacity = settings.opacity === 0 ? 0 : settings.opacity || opacity;
406
+ if (isRGB) {
407
+ colorArray[2] = colorArray[2].replace(')', '');
408
+ colorArray[3] = opacity + ')';
409
+ color = colorArray.join(',');
410
+ } else {
411
+ color = 'rgba(0, 0, 0, ' + opacity + ')';
412
+ }
413
+ module.debug('Setting opacity to', opacity);
414
+ $dimmer.css('background-color', color);
415
+ },
416
+ legacy: function () {
417
+ $dimmer.addClass(className.legacy);
418
+ },
419
+ active: function () {
420
+ $dimmer.addClass(className.active);
421
+ },
422
+ dimmable: function () {
423
+ $dimmable.addClass(className.dimmable);
424
+ },
425
+ dimmed: function () {
426
+ $dimmable.addClass(className.dimmed);
427
+ },
428
+ pageDimmer: function () {
429
+ $dimmer.addClass(className.pageDimmer);
430
+ },
431
+ disabled: function () {
432
+ $dimmer.addClass(className.disabled);
433
+ },
434
+ variation: function (variation) {
435
+ variation = variation || settings.variation;
436
+ if (variation) {
437
+ $dimmer.addClass(variation);
438
+ }
439
+ },
440
+ },
441
+
442
+ remove: {
443
+ active: function () {
444
+ $dimmer
445
+ .removeClass(className.active)
446
+ ;
447
+ },
448
+ legacy: function () {
449
+ $dimmer.removeClass(className.legacy);
450
+ },
451
+ dimmed: function () {
452
+ $dimmable.removeClass(className.dimmed);
453
+ },
454
+ disabled: function () {
455
+ $dimmer.removeClass(className.disabled);
456
+ },
457
+ variation: function (variation) {
458
+ variation = variation || settings.variation;
459
+ if (variation) {
460
+ $dimmer.removeClass(variation);
461
+ }
462
+ },
463
+ },
464
+
465
+ setting: function (name, value) {
466
+ module.debug('Changing setting', name, value);
467
+ if ($.isPlainObject(name)) {
468
+ $.extend(true, settings, name);
469
+ } else if (value !== undefined) {
470
+ if ($.isPlainObject(settings[name])) {
471
+ $.extend(true, settings[name], value);
472
+ } else {
473
+ settings[name] = value;
474
+ }
475
+ } else {
476
+ return settings[name];
477
+ }
478
+ },
479
+ internal: function (name, value) {
480
+ if ($.isPlainObject(name)) {
481
+ $.extend(true, module, name);
482
+ } else if (value !== undefined) {
483
+ module[name] = value;
484
+ } else {
485
+ return module[name];
486
+ }
487
+ },
488
+ debug: function () {
489
+ if (!settings.silent && settings.debug) {
490
+ if (settings.performance) {
491
+ module.performance.log(arguments);
492
+ } else {
493
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
494
+ module.debug.apply(console, arguments);
495
+ }
496
+ }
497
+ },
498
+ verbose: function () {
499
+ if (!settings.silent && settings.verbose && settings.debug) {
500
+ if (settings.performance) {
501
+ module.performance.log(arguments);
502
+ } else {
503
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
504
+ module.verbose.apply(console, arguments);
505
+ }
506
+ }
507
+ },
508
+ error: function () {
509
+ if (!settings.silent) {
510
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
511
+ module.error.apply(console, arguments);
512
+ }
513
+ },
514
+ performance: {
515
+ log: function (message) {
516
+ var
517
+ currentTime,
518
+ executionTime,
519
+ previousTime
520
+ ;
521
+ if (settings.performance) {
522
+ currentTime = new Date().getTime();
523
+ previousTime = time || currentTime;
524
+ executionTime = currentTime - previousTime;
525
+ time = currentTime;
526
+ performance.push({
527
+ Name: message[0],
528
+ Arguments: [].slice.call(message, 1) || '',
529
+ Element: element,
530
+ 'Execution Time': executionTime,
531
+ });
532
+ }
533
+ clearTimeout(module.performance.timer);
534
+ module.performance.timer = setTimeout(module.performance.display, 500);
535
+ },
536
+ display: function () {
537
+ var
538
+ title = settings.name + ':',
539
+ totalTime = 0
540
+ ;
541
+ time = false;
542
+ clearTimeout(module.performance.timer);
543
+ $.each(performance, function (index, data) {
544
+ totalTime += data['Execution Time'];
545
+ });
546
+ title += ' ' + totalTime + 'ms';
547
+ if (moduleSelector) {
548
+ title += ' \'' + moduleSelector + '\'';
549
+ }
550
+ if ($allModules.length > 1) {
551
+ title += ' ' + '(' + $allModules.length + ')';
552
+ }
553
+ if ((console.group !== undefined || console.table !== undefined) && performance.length > 0) {
554
+ console.groupCollapsed(title);
555
+ if (console.table) {
556
+ console.table(performance);
557
+ } else {
558
+ $.each(performance, function (index, data) {
559
+ console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
560
+ });
561
+ }
562
+ console.groupEnd();
563
+ }
564
+ performance = [];
565
+ },
566
+ },
567
+ invoke: function (query, passedArguments, context) {
568
+ var
569
+ object = instance,
570
+ maxDepth,
571
+ found,
572
+ response
573
+ ;
574
+ passedArguments = passedArguments || queryArguments;
575
+ context = context || element;
576
+ if (typeof query == 'string' && object !== undefined) {
577
+ query = query.split(/[\. ]/);
578
+ maxDepth = query.length - 1;
579
+ $.each(query, function (depth, value) {
580
+ var camelCaseValue = (depth != maxDepth)
581
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
582
+ : query
583
+ ;
584
+ if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {
585
+ object = object[camelCaseValue];
586
+ } else if (object[camelCaseValue] !== undefined) {
587
+ found = object[camelCaseValue];
588
+
589
+ return false;
590
+ } else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {
591
+ object = object[value];
592
+ } else if (object[value] !== undefined) {
593
+ found = object[value];
594
+
595
+ return false;
596
+ } else {
597
+ module.error(error.method, query);
598
+
599
+ return false;
600
+ }
601
+ });
602
+ }
603
+ if (isFunction(found)) {
604
+ response = found.apply(context, passedArguments);
605
+ } else if (found !== undefined) {
606
+ response = found;
607
+ }
608
+ if (Array.isArray(returnedValue)) {
609
+ returnedValue.push(response);
610
+ } else if (returnedValue !== undefined) {
611
+ returnedValue = [returnedValue, response];
612
+ } else if (response !== undefined) {
613
+ returnedValue = response;
614
+ }
615
+
616
+ return found;
617
+ },
618
+ };
619
+
620
+ module.preinitialize();
621
+
622
+ if (methodInvoked) {
623
+ if (instance === undefined) {
624
+ module.initialize();
625
+ }
626
+ module.invoke(query);
627
+ } else {
628
+ if (instance !== undefined) {
629
+ instance.invoke('destroy');
630
+ }
631
+ module.initialize();
632
+ }
633
+ });
634
+
635
+ return (returnedValue !== undefined)
636
+ ? returnedValue
637
+ : this;
638
+ };
639
+
640
+ $.fn.dimmer.settings = {
641
+
642
+ name: 'Dimmer',
643
+ namespace: 'dimmer',
644
+
645
+ silent: false,
646
+ debug: false,
647
+ verbose: false,
648
+ performance: true,
649
+
650
+ // whether should use flex layout
651
+ useFlex: true,
652
+
653
+ // name to distinguish between multiple dimmers in context
654
+ dimmerName: false,
655
+
656
+ // whether to add a variation type
657
+ variation: false,
658
+
659
+ // whether to bind close events
660
+ closable: 'auto',
661
+
662
+ // whether to use css animations
663
+ useCSS: true,
664
+
665
+ // css animation to use
666
+ transition: 'fade',
667
+
668
+ // event to bind to
669
+ on: false,
670
+
671
+ // overriding opacity value
672
+ opacity: 'auto',
673
+
674
+ // transition durations
675
+ duration: {
676
+ show: 500,
677
+ hide: 500,
347
678
  },
348
-
349
- get: {
350
- dimmer: function() {
351
- return $dimmer;
352
- },
353
- duration: function() {
354
- if( module.is.active() ) {
355
- return settings.transition.hideDuration || settings.duration.hide || settings.duration;
356
- }
357
- else {
358
- return settings.transition.showDuration || settings.duration.show || settings.duration;
359
- }
360
- }
361
- },
362
-
363
- has: {
364
- dimmer: function() {
365
- if(settings.dimmerName) {
366
- return ($module.find(selector.dimmer).filter('.' + settings.dimmerName).length > 0);
367
- }
368
- else {
369
- return ( $module.find(selector.dimmer).length > 0 );
370
- }
371
- }
679
+ // whether the dynamically created dimmer should have a loader
680
+ displayLoader: false,
681
+ loaderText: false,
682
+ loaderVariation: '',
683
+
684
+ onChange: function () {},
685
+ onShow: function () {},
686
+ onHide: function () {},
687
+ onVisible: function () {},
688
+ onHidden: function () {},
689
+
690
+ error: {
691
+ method: 'The method you called is not defined.',
372
692
  },
373
693
 
374
- is: {
375
- active: function() {
376
- return $dimmer.hasClass(className.active);
377
- },
378
- animating: function() {
379
- return ( $dimmer.is(':animated') || $dimmer.hasClass(className.animating) );
380
- },
381
- closable: function() {
382
- if(settings.closable == 'auto') {
383
- return settings.on != 'hover';
384
- }
385
- return settings.closable;
386
- },
387
- dimmer: function() {
388
- return $module.hasClass(className.dimmer);
389
- },
390
- dimmable: function() {
391
- return $module.hasClass(className.dimmable);
392
- },
393
- dimmed: function() {
394
- return $dimmable.hasClass(className.dimmed);
395
- },
396
- disabled: function() {
397
- return $dimmable.hasClass(className.disabled);
398
- },
399
- enabled: function() {
400
- return !module.is.disabled();
401
- },
402
- page: function () {
403
- return $dimmable.is('body');
404
- },
405
- pageDimmer: function() {
406
- return $dimmer.hasClass(className.pageDimmer);
407
- }
694
+ className: {
695
+ active: 'active',
696
+ animating: 'animating',
697
+ dimmable: 'dimmable',
698
+ dimmed: 'dimmed',
699
+ dimmer: 'dimmer',
700
+ disabled: 'disabled',
701
+ hide: 'hide',
702
+ legacy: 'legacy',
703
+ pageDimmer: 'page',
704
+ show: 'show',
705
+ loader: 'ui loader',
408
706
  },
409
707
 
410
- can: {
411
- show: function() {
412
- return !$dimmer.hasClass(className.disabled);
413
- }
708
+ selector: {
709
+ dimmer: '> .ui.dimmer',
710
+ content: '.ui.dimmer > .content, .ui.dimmer > .content > .center',
414
711
  },
415
712
 
416
- set: {
417
- opacity: function(opacity) {
418
- var
419
- color = $dimmer.css('background-color'),
420
- colorArray = color.split(','),
421
- isRGB = (colorArray && colorArray.length >= 3)
422
- ;
423
- opacity = settings.opacity === 0 ? 0 : settings.opacity || opacity;
424
- if(isRGB) {
425
- colorArray[2] = colorArray[2].replace(')','');
426
- colorArray[3] = opacity + ')';
427
- color = colorArray.join(',');
428
- }
429
- else {
430
- color = 'rgba(0, 0, 0, ' + opacity + ')';
431
- }
432
- module.debug('Setting opacity to', opacity);
433
- $dimmer.css('background-color', color);
434
- },
435
- legacy: function() {
436
- $dimmer.addClass(className.legacy);
437
- },
438
- active: function() {
439
- $dimmer.addClass(className.active);
440
- },
441
- dimmable: function() {
442
- $dimmable.addClass(className.dimmable);
443
- },
444
- dimmed: function() {
445
- $dimmable.addClass(className.dimmed);
446
- },
447
- pageDimmer: function() {
448
- $dimmer.addClass(className.pageDimmer);
449
- },
450
- disabled: function() {
451
- $dimmer.addClass(className.disabled);
452
- },
453
- variation: function(variation) {
454
- variation = variation || settings.variation;
455
- if(variation) {
456
- $dimmer.addClass(variation);
457
- }
458
- }
459
- },
460
-
461
- remove: {
462
- active: function() {
463
- $dimmer
464
- .removeClass(className.active)
465
- ;
466
- },
467
- legacy: function() {
468
- $dimmer.removeClass(className.legacy);
469
- },
470
- dimmed: function() {
471
- $dimmable.removeClass(className.dimmed);
472
- },
473
- disabled: function() {
474
- $dimmer.removeClass(className.disabled);
475
- },
476
- variation: function(variation) {
477
- variation = variation || settings.variation;
478
- if(variation) {
479
- $dimmer.removeClass(variation);
480
- }
481
- }
482
- },
483
-
484
- setting: function(name, value) {
485
- module.debug('Changing setting', name, value);
486
- if( $.isPlainObject(name) ) {
487
- $.extend(true, settings, name);
488
- }
489
- else if(value !== undefined) {
490
- if($.isPlainObject(settings[name])) {
491
- $.extend(true, settings[name], value);
492
- }
493
- else {
494
- settings[name] = value;
495
- }
496
- }
497
- else {
498
- return settings[name];
499
- }
713
+ template: {
714
+ dimmer: function (settings) {
715
+ var
716
+ d = $('<div/>').addClass('ui dimmer'),
717
+ l
718
+ ;
719
+ if (settings.displayLoader) {
720
+ l = $('<div/>')
721
+ .addClass(settings.className.loader)
722
+ .addClass(settings.loaderVariation)
723
+ ;
724
+ if (!!settings.loaderText) {
725
+ l.text(settings.loaderText);
726
+ l.addClass('text');
727
+ }
728
+ d.append(l);
729
+ }
730
+
731
+ return d;
732
+ },
500
733
  },
501
- internal: function(name, value) {
502
- if( $.isPlainObject(name) ) {
503
- $.extend(true, module, name);
504
- }
505
- else if(value !== undefined) {
506
- module[name] = value;
507
- }
508
- else {
509
- return module[name];
510
- }
511
- },
512
- debug: function() {
513
- if(!settings.silent && settings.debug) {
514
- if(settings.performance) {
515
- module.performance.log(arguments);
516
- }
517
- else {
518
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
519
- module.debug.apply(console, arguments);
520
- }
521
- }
522
- },
523
- verbose: function() {
524
- if(!settings.silent && settings.verbose && settings.debug) {
525
- if(settings.performance) {
526
- module.performance.log(arguments);
527
- }
528
- else {
529
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
530
- module.verbose.apply(console, arguments);
531
- }
532
- }
533
- },
534
- error: function() {
535
- if(!settings.silent) {
536
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
537
- module.error.apply(console, arguments);
538
- }
539
- },
540
- performance: {
541
- log: function(message) {
542
- var
543
- currentTime,
544
- executionTime,
545
- previousTime
546
- ;
547
- if(settings.performance) {
548
- currentTime = new Date().getTime();
549
- previousTime = time || currentTime;
550
- executionTime = currentTime - previousTime;
551
- time = currentTime;
552
- performance.push({
553
- 'Name' : message[0],
554
- 'Arguments' : [].slice.call(message, 1) || '',
555
- 'Element' : element,
556
- 'Execution Time' : executionTime
557
- });
558
- }
559
- clearTimeout(module.performance.timer);
560
- module.performance.timer = setTimeout(module.performance.display, 500);
561
- },
562
- display: function() {
563
- var
564
- title = settings.name + ':',
565
- totalTime = 0
566
- ;
567
- time = false;
568
- clearTimeout(module.performance.timer);
569
- $.each(performance, function(index, data) {
570
- totalTime += data['Execution Time'];
571
- });
572
- title += ' ' + totalTime + 'ms';
573
- if(moduleSelector) {
574
- title += ' \'' + moduleSelector + '\'';
575
- }
576
- if($allModules.length > 1) {
577
- title += ' ' + '(' + $allModules.length + ')';
578
- }
579
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
580
- console.groupCollapsed(title);
581
- if(console.table) {
582
- console.table(performance);
583
- }
584
- else {
585
- $.each(performance, function(index, data) {
586
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
587
- });
588
- }
589
- console.groupEnd();
590
- }
591
- performance = [];
592
- }
593
- },
594
- invoke: function(query, passedArguments, context) {
595
- var
596
- object = instance,
597
- maxDepth,
598
- found,
599
- response
600
- ;
601
- passedArguments = passedArguments || queryArguments;
602
- context = context || element;
603
- if(typeof query == 'string' && object !== undefined) {
604
- query = query.split(/[\. ]/);
605
- maxDepth = query.length - 1;
606
- $.each(query, function(depth, value) {
607
- var camelCaseValue = (depth != maxDepth)
608
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
609
- : query
610
- ;
611
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
612
- object = object[camelCaseValue];
613
- }
614
- else if( object[camelCaseValue] !== undefined ) {
615
- found = object[camelCaseValue];
616
- return false;
617
- }
618
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
619
- object = object[value];
620
- }
621
- else if( object[value] !== undefined ) {
622
- found = object[value];
623
- return false;
624
- }
625
- else {
626
- module.error(error.method, query);
627
- return false;
628
- }
629
- });
630
- }
631
- if ( $.isFunction( found ) ) {
632
- response = found.apply(context, passedArguments);
633
- }
634
- else if(found !== undefined) {
635
- response = found;
636
- }
637
- if(Array.isArray(returnedValue)) {
638
- returnedValue.push(response);
639
- }
640
- else if(returnedValue !== undefined) {
641
- returnedValue = [returnedValue, response];
642
- }
643
- else if(response !== undefined) {
644
- returnedValue = response;
645
- }
646
- return found;
647
- }
648
- };
649
-
650
- module.preinitialize();
651
-
652
- if(methodInvoked) {
653
- if(instance === undefined) {
654
- module.initialize();
655
- }
656
- module.invoke(query);
657
- }
658
- else {
659
- if(instance !== undefined) {
660
- instance.invoke('destroy');
661
- }
662
- module.initialize();
663
- }
664
- })
665
- ;
666
-
667
- return (returnedValue !== undefined)
668
- ? returnedValue
669
- : this
670
- ;
671
- };
672
-
673
- $.fn.dimmer.settings = {
674
-
675
- name : 'Dimmer',
676
- namespace : 'dimmer',
677
-
678
- silent : false,
679
- debug : false,
680
- verbose : false,
681
- performance : true,
682
-
683
- // whether should use flex layout
684
- useFlex : true,
685
-
686
- // name to distinguish between multiple dimmers in context
687
- dimmerName : false,
688
-
689
- // whether to add a variation type
690
- variation : false,
691
-
692
- // whether to bind close events
693
- closable : 'auto',
694
-
695
- // whether to use css animations
696
- useCSS : true,
697
-
698
- // css animation to use
699
- transition : 'fade',
700
-
701
- // event to bind to
702
- on : false,
703
-
704
- // overriding opacity value
705
- opacity : 'auto',
706
-
707
- // transition durations
708
- duration : {
709
- show : 500,
710
- hide : 500
711
- },
712
- // whether the dynamically created dimmer should have a loader
713
- displayLoader: false,
714
- loaderText : false,
715
- loaderVariation : '',
716
-
717
- onChange : function(){},
718
- onShow : function(){},
719
- onHide : function(){},
720
- onVisible : function(){},
721
- onHidden : function(){},
722
-
723
- error : {
724
- method : 'The method you called is not defined.'
725
- },
726
-
727
- className : {
728
- active : 'active',
729
- animating : 'animating',
730
- dimmable : 'dimmable',
731
- dimmed : 'dimmed',
732
- dimmer : 'dimmer',
733
- disabled : 'disabled',
734
- hide : 'hide',
735
- legacy : 'legacy',
736
- pageDimmer : 'page',
737
- show : 'show',
738
- loader : 'ui loader'
739
- },
740
-
741
- selector: {
742
- dimmer : '> .ui.dimmer',
743
- content : '.ui.dimmer > .content, .ui.dimmer > .content > .center'
744
- },
745
-
746
- template: {
747
- dimmer: function(settings) {
748
- var d = $('<div/>').addClass('ui dimmer'),l;
749
- if(settings.displayLoader) {
750
- l = $('<div/>')
751
- .addClass(settings.className.loader)
752
- .addClass(settings.loaderVariation);
753
- if(!!settings.loaderText){
754
- l.text(settings.loaderText);
755
- l.addClass('text');
756
- }
757
- d.append(l);
758
- }
759
- return d;
760
- }
761
- }
762
-
763
- };
764
734
 
765
- })( jQuery, window, document );
735
+ };
736
+ })(jQuery, window, document);