fomantic-ui 2.9.1-beta.16 → 2.9.1-beta.18

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 (252) hide show
  1. package/.eslintrc.js +109 -0
  2. package/.github/workflows/ci.yml +13 -3
  3. package/dist/components/accordion.css +1 -1
  4. package/dist/components/accordion.js +571 -598
  5. package/dist/components/accordion.min.css +1 -1
  6. package/dist/components/accordion.min.js +1 -1
  7. package/dist/components/ad.css +1 -1
  8. package/dist/components/ad.min.css +1 -1
  9. package/dist/components/api.js +1164 -1186
  10. package/dist/components/api.min.js +1 -1
  11. package/dist/components/breadcrumb.css +1 -1
  12. package/dist/components/breadcrumb.min.css +1 -1
  13. package/dist/components/button.css +1 -1
  14. package/dist/components/button.min.css +1 -1
  15. package/dist/components/calendar.css +1 -1
  16. package/dist/components/calendar.js +1897 -1818
  17. package/dist/components/calendar.min.css +1 -1
  18. package/dist/components/calendar.min.js +1 -1
  19. package/dist/components/card.css +1 -1
  20. package/dist/components/card.min.css +1 -1
  21. package/dist/components/checkbox.css +1 -1
  22. package/dist/components/checkbox.js +844 -841
  23. package/dist/components/checkbox.min.css +1 -1
  24. package/dist/components/checkbox.min.js +1 -1
  25. package/dist/components/comment.css +1 -1
  26. package/dist/components/comment.min.css +1 -1
  27. package/dist/components/container.css +3 -1
  28. package/dist/components/container.min.css +2 -2
  29. package/dist/components/dimmer.css +1 -1
  30. package/dist/components/dimmer.js +710 -737
  31. package/dist/components/dimmer.min.css +1 -1
  32. package/dist/components/dimmer.min.js +1 -1
  33. package/dist/components/divider.css +1 -1
  34. package/dist/components/divider.min.css +1 -1
  35. package/dist/components/dropdown.css +11 -8
  36. package/dist/components/dropdown.js +4163 -4234
  37. package/dist/components/dropdown.min.css +2 -2
  38. package/dist/components/dropdown.min.js +2 -2
  39. package/dist/components/embed.css +1 -1
  40. package/dist/components/embed.js +653 -675
  41. package/dist/components/embed.min.css +1 -1
  42. package/dist/components/embed.min.js +1 -1
  43. package/dist/components/feed.css +1 -1
  44. package/dist/components/feed.min.css +1 -1
  45. package/dist/components/flag.css +1 -1
  46. package/dist/components/flag.min.css +1 -1
  47. package/dist/components/flyout.css +6 -3
  48. package/dist/components/flyout.js +1466 -1467
  49. package/dist/components/flyout.min.css +2 -2
  50. package/dist/components/flyout.min.js +1 -1
  51. package/dist/components/form.css +1 -1
  52. package/dist/components/form.js +1981 -2004
  53. package/dist/components/form.min.css +1 -1
  54. package/dist/components/form.min.js +1 -1
  55. package/dist/components/grid.css +1 -1
  56. package/dist/components/grid.min.css +1 -1
  57. package/dist/components/header.css +1 -1
  58. package/dist/components/header.min.css +1 -1
  59. package/dist/components/icon.css +1 -1
  60. package/dist/components/icon.min.css +1 -1
  61. package/dist/components/image.css +1 -1
  62. package/dist/components/image.min.css +1 -1
  63. package/dist/components/input.css +1 -1
  64. package/dist/components/input.min.css +1 -1
  65. package/dist/components/item.css +1 -1
  66. package/dist/components/item.min.css +1 -1
  67. package/dist/components/label.css +1 -1
  68. package/dist/components/label.min.css +1 -1
  69. package/dist/components/list.css +1 -1
  70. package/dist/components/list.min.css +1 -1
  71. package/dist/components/loader.css +1 -1
  72. package/dist/components/loader.min.css +1 -1
  73. package/dist/components/message.css +1 -1
  74. package/dist/components/message.min.css +1 -1
  75. package/dist/components/modal.css +7 -1
  76. package/dist/components/modal.js +1493 -1487
  77. package/dist/components/modal.min.css +2 -2
  78. package/dist/components/modal.min.js +1 -1
  79. package/dist/components/nag.css +1 -1
  80. package/dist/components/nag.js +520 -529
  81. package/dist/components/nag.min.css +1 -1
  82. package/dist/components/nag.min.js +1 -1
  83. package/dist/components/placeholder.css +1 -1
  84. package/dist/components/placeholder.min.css +1 -1
  85. package/dist/components/popup.css +1 -1
  86. package/dist/components/popup.js +1439 -1456
  87. package/dist/components/popup.min.css +1 -1
  88. package/dist/components/popup.min.js +1 -1
  89. package/dist/components/progress.css +1 -1
  90. package/dist/components/progress.js +971 -997
  91. package/dist/components/progress.min.css +1 -1
  92. package/dist/components/progress.min.js +1 -1
  93. package/dist/components/rail.css +1 -1
  94. package/dist/components/rail.min.css +1 -1
  95. package/dist/components/rating.css +1 -1
  96. package/dist/components/rating.js +508 -524
  97. package/dist/components/rating.min.css +1 -1
  98. package/dist/components/rating.min.js +1 -1
  99. package/dist/components/reset.css +1 -1
  100. package/dist/components/reset.min.css +1 -1
  101. package/dist/components/reveal.css +1 -1
  102. package/dist/components/reveal.min.css +1 -1
  103. package/dist/components/search.css +3 -1
  104. package/dist/components/search.js +1500 -1534
  105. package/dist/components/search.min.css +2 -2
  106. package/dist/components/search.min.js +1 -1
  107. package/dist/components/segment.css +3 -1
  108. package/dist/components/segment.min.css +2 -2
  109. package/dist/components/shape.css +1 -1
  110. package/dist/components/shape.js +794 -809
  111. package/dist/components/shape.min.css +1 -1
  112. package/dist/components/shape.min.js +1 -1
  113. package/dist/components/sidebar.css +3 -1
  114. package/dist/components/sidebar.js +1079 -1104
  115. package/dist/components/sidebar.min.css +2 -2
  116. package/dist/components/sidebar.min.js +1 -1
  117. package/dist/components/site.css +1 -1
  118. package/dist/components/site.js +457 -472
  119. package/dist/components/site.min.css +1 -1
  120. package/dist/components/site.min.js +1 -1
  121. package/dist/components/slider.js +1289 -1311
  122. package/dist/components/slider.min.js +1 -1
  123. package/dist/components/state.js +641 -657
  124. package/dist/components/state.min.js +1 -1
  125. package/dist/components/statistic.css +1 -1
  126. package/dist/components/statistic.min.css +1 -1
  127. package/dist/components/step.css +1 -1
  128. package/dist/components/step.min.css +1 -1
  129. package/dist/components/sticky.css +1 -1
  130. package/dist/components/sticky.js +859 -903
  131. package/dist/components/sticky.min.css +1 -1
  132. package/dist/components/sticky.min.js +1 -1
  133. package/dist/components/tab.css +1 -1
  134. package/dist/components/tab.js +923 -963
  135. package/dist/components/tab.min.css +1 -1
  136. package/dist/components/tab.min.js +1 -1
  137. package/dist/components/table.css +5 -1
  138. package/dist/components/table.min.css +2 -2
  139. package/dist/components/text.css +1 -1
  140. package/dist/components/text.min.css +1 -1
  141. package/dist/components/toast.css +1 -1
  142. package/dist/components/toast.js +889 -891
  143. package/dist/components/toast.min.css +1 -1
  144. package/dist/components/toast.min.js +1 -1
  145. package/dist/components/transition.css +1 -1
  146. package/dist/components/transition.js +1043 -1077
  147. package/dist/components/transition.min.css +1 -1
  148. package/dist/components/transition.min.js +1 -1
  149. package/dist/components/visibility.js +1222 -1244
  150. package/dist/components/visibility.min.js +1 -1
  151. package/dist/semantic.css +84 -60
  152. package/dist/semantic.js +29033 -29475
  153. package/dist/semantic.min.css +2 -2
  154. package/dist/semantic.min.js +2 -2
  155. package/examples/assets/show-examples.js +13 -13
  156. package/gulpfile.js +9 -10
  157. package/package.json +5 -2
  158. package/scripts/nightly-version.js +81 -75
  159. package/src/definitions/behaviors/api.js +1163 -1185
  160. package/src/definitions/behaviors/form.js +1980 -2003
  161. package/src/definitions/behaviors/state.js +647 -663
  162. package/src/definitions/behaviors/visibility.js +1221 -1243
  163. package/src/definitions/collections/table.less +2 -0
  164. package/src/definitions/elements/container.less +1 -0
  165. package/src/definitions/elements/segment.less +1 -0
  166. package/src/definitions/globals/site.js +456 -471
  167. package/src/definitions/modules/accordion.js +570 -597
  168. package/src/definitions/modules/calendar.js +1896 -1817
  169. package/src/definitions/modules/checkbox.js +849 -846
  170. package/src/definitions/modules/dimmer.js +709 -736
  171. package/src/definitions/modules/dropdown.js +4162 -4233
  172. package/src/definitions/modules/dropdown.less +5 -8
  173. package/src/definitions/modules/embed.js +652 -674
  174. package/src/definitions/modules/flyout.js +1465 -1466
  175. package/src/definitions/modules/flyout.less +15 -12
  176. package/src/definitions/modules/modal.js +1492 -1486
  177. package/src/definitions/modules/modal.less +3 -0
  178. package/src/definitions/modules/nag.js +519 -528
  179. package/src/definitions/modules/popup.js +1438 -1455
  180. package/src/definitions/modules/progress.js +970 -996
  181. package/src/definitions/modules/rating.js +507 -523
  182. package/src/definitions/modules/search.js +1499 -1533
  183. package/src/definitions/modules/search.less +1 -0
  184. package/src/definitions/modules/shape.js +801 -816
  185. package/src/definitions/modules/sidebar.js +1078 -1103
  186. package/src/definitions/modules/sidebar.less +1 -0
  187. package/src/definitions/modules/slider.js +1288 -1310
  188. package/src/definitions/modules/sticky.js +875 -919
  189. package/src/definitions/modules/tab.js +922 -962
  190. package/src/definitions/modules/toast.js +888 -890
  191. package/src/definitions/modules/transition.js +1048 -1082
  192. package/src/themes/default/elements/container.variables +0 -7
  193. package/src/themes/default/elements/segment.variables +0 -7
  194. package/src/themes/default/globals/site.variables +7 -0
  195. package/src/themes/default/globals/variation.variables +1 -0
  196. package/tasks/admin/components/create.js +274 -276
  197. package/tasks/admin/components/init.js +123 -130
  198. package/tasks/admin/components/update.js +149 -157
  199. package/tasks/admin/distributions/create.js +184 -187
  200. package/tasks/admin/distributions/init.js +123 -130
  201. package/tasks/admin/distributions/update.js +145 -152
  202. package/tasks/admin/publish.js +5 -7
  203. package/tasks/admin/register.js +36 -38
  204. package/tasks/admin/release.js +8 -10
  205. package/tasks/build/assets.js +42 -39
  206. package/tasks/build/css.js +225 -216
  207. package/tasks/build/javascript.js +118 -113
  208. package/tasks/build.js +10 -10
  209. package/tasks/check-install.js +14 -16
  210. package/tasks/clean.js +5 -5
  211. package/tasks/collections/admin.js +34 -36
  212. package/tasks/collections/build.js +18 -20
  213. package/tasks/collections/docs.js +9 -11
  214. package/tasks/collections/install.js +9 -11
  215. package/tasks/collections/rtl.js +9 -11
  216. package/tasks/collections/various.js +8 -10
  217. package/tasks/config/admin/github.js +17 -17
  218. package/tasks/config/admin/oauth.example.js +4 -4
  219. package/tasks/config/admin/release.js +98 -98
  220. package/tasks/config/admin/templates/component-package.js +9 -10
  221. package/tasks/config/admin/templates/css-package.js +18 -20
  222. package/tasks/config/admin/templates/less-package.js +11 -13
  223. package/tasks/config/defaults.js +116 -116
  224. package/tasks/config/docs.js +23 -23
  225. package/tasks/config/npm/gulpfile.js +8 -9
  226. package/tasks/config/project/config.js +127 -134
  227. package/tasks/config/project/install.js +715 -713
  228. package/tasks/config/project/release.js +32 -38
  229. package/tasks/config/tasks.js +163 -164
  230. package/tasks/config/user.js +23 -29
  231. package/tasks/docs/build.js +97 -95
  232. package/tasks/docs/metadata.js +90 -96
  233. package/tasks/docs/serve.js +80 -81
  234. package/tasks/install.js +370 -378
  235. package/tasks/rtl/build.js +2 -2
  236. package/tasks/rtl/watch.js +2 -2
  237. package/tasks/version.js +4 -4
  238. package/tasks/watch.js +28 -30
  239. package/test/meteor/assets.js +10 -13
  240. package/test/meteor/fonts.js +12 -13
  241. package/test/modules/accordion.spec.js +6 -8
  242. package/test/modules/checkbox.spec.js +5 -7
  243. package/test/modules/dropdown.spec.js +5 -7
  244. package/test/modules/modal.spec.js +6 -8
  245. package/test/modules/module.spec.js +158 -178
  246. package/test/modules/popup.spec.js +5 -7
  247. package/test/modules/search.spec.js +5 -7
  248. package/test/modules/shape.spec.js +5 -7
  249. package/test/modules/sidebar.spec.js +5 -7
  250. package/test/modules/tab.spec.js +6 -8
  251. package/test/modules/transition.spec.js +5 -7
  252. package/test/modules/video.spec.js +5 -7
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.1-beta.16+7071e59 - State
2
+ * # Fomantic-UI 2.9.1-beta.18+935e235 - State
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -8,704 +8,688 @@
8
8
  *
9
9
  */
10
10
 
11
- ;(function ($, window, document, undefined) {
11
+ (function ($, window, document, undefined) {
12
+ 'use strict';
12
13
 
13
- "use strict";
14
-
15
- function isFunction(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.state = function(parameters) {
27
- var
28
- $allModules = $(this),
29
-
30
- moduleSelector = $allModules.selector || '',
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
31
17
 
32
- time = new Date().getTime(),
33
- performance = [],
18
+ window = (typeof window != 'undefined' && window.Math == Math)
19
+ ? window
20
+ : (typeof self != 'undefined' && self.Math == Math)
21
+ ? self
22
+ : Function('return this')();
34
23
 
35
- query = arguments[0],
36
- methodInvoked = (typeof query == 'string'),
37
- queryArguments = [].slice.call(arguments, 1),
24
+ $.fn.state = function (parameters) {
25
+ var
26
+ $allModules = $(this),
38
27
 
39
- returnedValue
40
- ;
41
- $allModules
42
- .each(function() {
43
- var
44
- settings = ( $.isPlainObject(parameters) )
45
- ? $.extend(true, {}, $.fn.state.settings, parameters)
46
- : $.extend({}, $.fn.state.settings),
28
+ moduleSelector = $allModules.selector || '',
47
29
 
48
- error = settings.error,
49
- metadata = settings.metadata,
50
- className = settings.className,
51
- namespace = settings.namespace,
52
- states = settings.states,
53
- text = settings.text,
30
+ time = new Date().getTime(),
31
+ performance = [],
54
32
 
55
- eventNamespace = '.' + namespace,
56
- moduleNamespace = namespace + '-module',
33
+ query = arguments[0],
34
+ methodInvoked = (typeof query == 'string'),
35
+ queryArguments = [].slice.call(arguments, 1),
57
36
 
58
- $module = $(this),
37
+ returnedValue
38
+ ;
39
+ $allModules.each(function () {
40
+ var
41
+ settings = ($.isPlainObject(parameters))
42
+ ? $.extend(true, {}, $.fn.state.settings, parameters)
43
+ : $.extend({}, $.fn.state.settings),
59
44
 
60
- element = this,
61
- instance = $module.data(moduleNamespace),
45
+ error = settings.error,
46
+ metadata = settings.metadata,
47
+ className = settings.className,
48
+ namespace = settings.namespace,
49
+ states = settings.states,
50
+ text = settings.text,
62
51
 
63
- module
64
- ;
65
- module = {
52
+ eventNamespace = '.' + namespace,
53
+ moduleNamespace = namespace + '-module',
66
54
 
67
- initialize: function() {
68
- module.verbose('Initializing module');
55
+ $module = $(this),
69
56
 
70
- // allow module to guess desired state based on element
71
- if(settings.automatic) {
72
- module.add.defaults();
73
- }
57
+ element = this,
58
+ instance = $module.data(moduleNamespace),
74
59
 
75
- // bind events with delegated events
76
- if(settings.context && moduleSelector !== '') {
77
- ([window,document].indexOf(settings.context) < 0 ? $(document).find(settings.context) : $(settings.context))
78
- .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text)
79
- .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text)
80
- .on(moduleSelector, 'click' + eventNamespace, module.toggle.state)
60
+ module
81
61
  ;
82
- }
83
- else {
84
- $module
85
- .on('mouseenter' + eventNamespace, module.change.text)
86
- .on('mouseleave' + eventNamespace, module.reset.text)
87
- .on('click' + eventNamespace, module.toggle.state)
88
- ;
89
- }
90
- module.instantiate();
91
- },
92
-
93
- instantiate: function() {
94
- module.verbose('Storing instance of module', module);
95
- instance = module;
96
- $module
97
- .data(moduleNamespace, module)
98
- ;
99
- },
100
-
101
- destroy: function() {
102
- module.verbose('Destroying previous module', instance);
103
- $module
104
- .off(eventNamespace)
105
- .removeData(moduleNamespace)
106
- ;
107
- },
62
+ module = {
63
+
64
+ initialize: function () {
65
+ module.verbose('Initializing module');
66
+
67
+ // allow module to guess desired state based on element
68
+ if (settings.automatic) {
69
+ module.add.defaults();
70
+ }
71
+
72
+ // bind events with delegated events
73
+ if (settings.context && moduleSelector !== '') {
74
+ ([window, document].indexOf(settings.context) < 0 ? $(document).find(settings.context) : $(settings.context))
75
+ .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text)
76
+ .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text)
77
+ .on(moduleSelector, 'click' + eventNamespace, module.toggle.state)
78
+ ;
79
+ } else {
80
+ $module
81
+ .on('mouseenter' + eventNamespace, module.change.text)
82
+ .on('mouseleave' + eventNamespace, module.reset.text)
83
+ .on('click' + eventNamespace, module.toggle.state)
84
+ ;
85
+ }
86
+ module.instantiate();
87
+ },
88
+
89
+ instantiate: function () {
90
+ module.verbose('Storing instance of module', module);
91
+ instance = module;
92
+ $module
93
+ .data(moduleNamespace, module)
94
+ ;
95
+ },
96
+
97
+ destroy: function () {
98
+ module.verbose('Destroying previous module', instance);
99
+ $module
100
+ .off(eventNamespace)
101
+ .removeData(moduleNamespace)
102
+ ;
103
+ },
104
+
105
+ refresh: function () {
106
+ module.verbose('Refreshing selector cache');
107
+ $module = $(element);
108
+ },
109
+
110
+ add: {
111
+ defaults: function () {
112
+ var
113
+ userStates = parameters && $.isPlainObject(parameters.states)
114
+ ? parameters.states
115
+ : {}
116
+ ;
117
+ $.each(settings.defaults, function (type, typeStates) {
118
+ if (module.is[type] !== undefined && module.is[type]()) {
119
+ module.verbose('Adding default states', type, element);
120
+ $.extend(settings.states, typeStates, userStates);
121
+ }
122
+ });
123
+ },
124
+ },
125
+
126
+ is: {
127
+
128
+ active: function () {
129
+ return $module.hasClass(className.active);
130
+ },
131
+ loading: function () {
132
+ return $module.hasClass(className.loading);
133
+ },
134
+ inactive: function () {
135
+ return !($module.hasClass(className.active));
136
+ },
137
+ state: function (state) {
138
+ if (className[state] === undefined) {
139
+ return false;
140
+ }
141
+
142
+ return $module.hasClass(className[state]);
143
+ },
144
+
145
+ enabled: function () {
146
+ return !($module.is(settings.filter.active));
147
+ },
148
+ disabled: function () {
149
+ return ($module.is(settings.filter.active));
150
+ },
151
+ textEnabled: function () {
152
+ return !($module.is(settings.filter.text));
153
+ },
154
+
155
+ // definitions for automatic type detection
156
+ button: function () {
157
+ return $module.is('.button:not(a, .submit)');
158
+ },
159
+ input: function () {
160
+ return $module.is('input');
161
+ },
162
+ progress: function () {
163
+ return $module.is('.ui.progress');
164
+ },
165
+ },
166
+
167
+ allow: function (state) {
168
+ module.debug('Now allowing state', state);
169
+ states[state] = true;
170
+ },
171
+ disallow: function (state) {
172
+ module.debug('No longer allowing', state);
173
+ states[state] = false;
174
+ },
175
+
176
+ allows: function (state) {
177
+ return states[state] || false;
178
+ },
179
+
180
+ enable: function () {
181
+ $module.removeClass(className.disabled);
182
+ },
183
+
184
+ disable: function () {
185
+ $module.addClass(className.disabled);
186
+ },
187
+
188
+ setState: function (state) {
189
+ if (module.allows(state)) {
190
+ $module.addClass(className[state]);
191
+ }
192
+ },
193
+
194
+ removeState: function (state) {
195
+ if (module.allows(state)) {
196
+ $module.removeClass(className[state]);
197
+ }
198
+ },
199
+
200
+ toggle: {
201
+ state: function () {
202
+ var
203
+ apiRequest,
204
+ requestCancelled
205
+ ;
206
+ if (module.allows('active') && module.is.enabled()) {
207
+ module.refresh();
208
+ if ($.fn.api !== undefined) {
209
+ apiRequest = $module.api('get request');
210
+ requestCancelled = $module.api('was cancelled');
211
+ if (requestCancelled) {
212
+ module.debug('API Request cancelled by beforesend');
213
+ settings.activateTest = function () {
214
+ return false;
215
+ };
216
+ settings.deactivateTest = function () {
217
+ return false;
218
+ };
219
+ } else if (apiRequest) {
220
+ module.listenTo(apiRequest);
221
+
222
+ return;
223
+ }
224
+ }
225
+ module.change.state();
226
+ }
227
+ },
228
+ },
229
+
230
+ listenTo: function (apiRequest) {
231
+ module.debug('API request detected, waiting for state signal', apiRequest);
232
+ if (apiRequest) {
233
+ if (text.loading) {
234
+ module.update.text(text.loading);
235
+ }
236
+ $.when(apiRequest)
237
+ .then(function () {
238
+ if (apiRequest.state() == 'resolved') {
239
+ module.debug('API request succeeded');
240
+ settings.activateTest = function () {
241
+ return true;
242
+ };
243
+ settings.deactivateTest = function () {
244
+ return true;
245
+ };
246
+ } else {
247
+ module.debug('API request failed');
248
+ settings.activateTest = function () {
249
+ return false;
250
+ };
251
+ settings.deactivateTest = function () {
252
+ return false;
253
+ };
254
+ }
255
+ module.change.state();
256
+ })
257
+ ;
258
+ }
259
+ },
260
+
261
+ // checks whether active/inactive state can be given
262
+ change: {
263
+
264
+ state: function () {
265
+ module.debug('Determining state change direction');
266
+ // inactive to active change
267
+ if (module.is.inactive()) {
268
+ module.activate();
269
+ } else {
270
+ module.deactivate();
271
+ }
272
+ if (settings.sync) {
273
+ module.sync();
274
+ }
275
+ settings.onChange.call(element);
276
+ },
277
+
278
+ text: function () {
279
+ if (module.is.textEnabled()) {
280
+ if (module.is.disabled()) {
281
+ module.verbose('Changing text to disabled text', text.hover);
282
+ module.update.text(text.disabled);
283
+ } else if (module.is.active()) {
284
+ if (text.hover) {
285
+ module.verbose('Changing text to hover text', text.hover);
286
+ module.update.text(text.hover);
287
+ } else if (text.deactivate) {
288
+ module.verbose('Changing text to deactivating text', text.deactivate);
289
+ module.update.text(text.deactivate);
290
+ }
291
+ } else {
292
+ if (text.hover) {
293
+ module.verbose('Changing text to hover text', text.hover);
294
+ module.update.text(text.hover);
295
+ } else if (text.activate) {
296
+ module.verbose('Changing text to activating text', text.activate);
297
+ module.update.text(text.activate);
298
+ }
299
+ }
300
+ }
301
+ },
302
+
303
+ },
304
+
305
+ activate: function () {
306
+ if (settings.activateTest.call(element)) {
307
+ module.debug('Setting state to active');
308
+ $module
309
+ .addClass(className.active)
310
+ ;
311
+ module.update.text(text.active);
312
+ settings.onActivate.call(element);
313
+ }
314
+ },
315
+
316
+ deactivate: function () {
317
+ if (settings.deactivateTest.call(element)) {
318
+ module.debug('Setting state to inactive');
319
+ $module
320
+ .removeClass(className.active)
321
+ ;
322
+ module.update.text(text.inactive);
323
+ settings.onDeactivate.call(element);
324
+ }
325
+ },
326
+
327
+ sync: function () {
328
+ module.verbose('Syncing other buttons to current state');
329
+ if (module.is.active()) {
330
+ $allModules
331
+ .not($module)
332
+ .state('activate')
333
+ ;
334
+ } else {
335
+ $allModules
336
+ .not($module)
337
+ .state('deactivate')
338
+ ;
339
+ }
340
+ },
341
+
342
+ get: {
343
+ text: function () {
344
+ return (settings.selector.text)
345
+ ? $module.find(settings.selector.text).text()
346
+ : $module.html();
347
+ },
348
+ textFor: function (state) {
349
+ return text[state] || false;
350
+ },
351
+ },
352
+
353
+ flash: {
354
+ text: function (text, duration, callback) {
355
+ var
356
+ previousText = module.get.text();
357
+ module.debug('Flashing text message', text, duration);
358
+ text = text || settings.text.flash;
359
+ duration = duration || settings.flashDuration;
360
+ callback = callback || function () {};
361
+ module.update.text(text);
362
+ setTimeout(function () {
363
+ module.update.text(previousText);
364
+ callback.call(element);
365
+ }, duration);
366
+ },
367
+ },
368
+
369
+ reset: {
370
+ // on mouseout sets text to previous value
371
+ text: function () {
372
+ var
373
+ activeText = text.active || $module.data(metadata.storedText),
374
+ inactiveText = text.inactive || $module.data(metadata.storedText)
375
+ ;
376
+ if (module.is.textEnabled()) {
377
+ if (module.is.active() && activeText) {
378
+ module.verbose('Resetting active text', activeText);
379
+ module.update.text(activeText);
380
+ } else if (inactiveText) {
381
+ module.verbose('Resetting inactive text', activeText);
382
+ module.update.text(inactiveText);
383
+ }
384
+ }
385
+ },
386
+ },
387
+
388
+ update: {
389
+ text: function (text) {
390
+ var
391
+ currentText = module.get.text();
392
+ if (text && text !== currentText) {
393
+ module.debug('Updating text', text);
394
+ if (settings.selector.text) {
395
+ $module
396
+ .data(metadata.storedText, text)
397
+ .find(settings.selector.text)
398
+ .text(text)
399
+ ;
400
+ } else {
401
+ $module
402
+ .data(metadata.storedText, text)
403
+ .html(text)
404
+ ;
405
+ }
406
+ } else {
407
+ module.debug('Text is already set, ignoring update', text);
408
+ }
409
+ },
410
+ },
411
+
412
+ setting: function (name, value) {
413
+ module.debug('Changing setting', name, value);
414
+ if ($.isPlainObject(name)) {
415
+ $.extend(true, settings, name);
416
+ } else if (value !== undefined) {
417
+ if ($.isPlainObject(settings[name])) {
418
+ $.extend(true, settings[name], value);
419
+ } else {
420
+ settings[name] = value;
421
+ }
422
+ } else {
423
+ return settings[name];
424
+ }
425
+ },
426
+ internal: function (name, value) {
427
+ if ($.isPlainObject(name)) {
428
+ $.extend(true, module, name);
429
+ } else if (value !== undefined) {
430
+ module[name] = value;
431
+ } else {
432
+ return module[name];
433
+ }
434
+ },
435
+ debug: function () {
436
+ if (!settings.silent && settings.debug) {
437
+ if (settings.performance) {
438
+ module.performance.log(arguments);
439
+ } else {
440
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
441
+ module.debug.apply(console, arguments);
442
+ }
443
+ }
444
+ },
445
+ verbose: function () {
446
+ if (!settings.silent && settings.verbose && settings.debug) {
447
+ if (settings.performance) {
448
+ module.performance.log(arguments);
449
+ } else {
450
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
451
+ module.verbose.apply(console, arguments);
452
+ }
453
+ }
454
+ },
455
+ error: function () {
456
+ if (!settings.silent) {
457
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
458
+ module.error.apply(console, arguments);
459
+ }
460
+ },
461
+ performance: {
462
+ log: function (message) {
463
+ var
464
+ currentTime,
465
+ executionTime,
466
+ previousTime
467
+ ;
468
+ if (settings.performance) {
469
+ currentTime = new Date().getTime();
470
+ previousTime = time || currentTime;
471
+ executionTime = currentTime - previousTime;
472
+ time = currentTime;
473
+ performance.push({
474
+ Name: message[0],
475
+ Arguments: [].slice.call(message, 1) || '',
476
+ Element: element,
477
+ 'Execution Time': executionTime,
478
+ });
479
+ }
480
+ clearTimeout(module.performance.timer);
481
+ module.performance.timer = setTimeout(module.performance.display, 500);
482
+ },
483
+ display: function () {
484
+ var
485
+ title = settings.name + ':',
486
+ totalTime = 0
487
+ ;
488
+ time = false;
489
+ clearTimeout(module.performance.timer);
490
+ $.each(performance, function (index, data) {
491
+ totalTime += data['Execution Time'];
492
+ });
493
+ title += ' ' + totalTime + 'ms';
494
+ if (moduleSelector) {
495
+ title += ' \'' + moduleSelector + '\'';
496
+ }
497
+ if ((console.group !== undefined || console.table !== undefined) && performance.length > 0) {
498
+ console.groupCollapsed(title);
499
+ if (console.table) {
500
+ console.table(performance);
501
+ } else {
502
+ $.each(performance, function (index, data) {
503
+ console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
504
+ });
505
+ }
506
+ console.groupEnd();
507
+ }
508
+ performance = [];
509
+ },
510
+ },
511
+ invoke: function (query, passedArguments, context) {
512
+ var
513
+ object = instance,
514
+ maxDepth,
515
+ found,
516
+ response
517
+ ;
518
+ passedArguments = passedArguments || queryArguments;
519
+ context = context || element;
520
+ if (typeof query == 'string' && object !== undefined) {
521
+ query = query.split(/[\. ]/);
522
+ maxDepth = query.length - 1;
523
+ $.each(query, function (depth, value) {
524
+ var camelCaseValue = (depth != maxDepth)
525
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
526
+ : query
527
+ ;
528
+ if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {
529
+ object = object[camelCaseValue];
530
+ } else if (object[camelCaseValue] !== undefined) {
531
+ found = object[camelCaseValue];
532
+
533
+ return false;
534
+ } else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {
535
+ object = object[value];
536
+ } else if (object[value] !== undefined) {
537
+ found = object[value];
538
+
539
+ return false;
540
+ } else {
541
+ module.error(error.method, query);
542
+
543
+ return false;
544
+ }
545
+ });
546
+ }
547
+ if (isFunction(found)) {
548
+ response = found.apply(context, passedArguments);
549
+ } else if (found !== undefined) {
550
+ response = found;
551
+ }
552
+ if (Array.isArray(returnedValue)) {
553
+ returnedValue.push(response);
554
+ } else if (returnedValue !== undefined) {
555
+ returnedValue = [returnedValue, response];
556
+ } else if (response !== undefined) {
557
+ returnedValue = response;
558
+ }
559
+
560
+ return found;
561
+ },
562
+ };
563
+
564
+ if (methodInvoked) {
565
+ if (instance === undefined) {
566
+ module.initialize();
567
+ }
568
+ module.invoke(query);
569
+ } else {
570
+ if (instance !== undefined) {
571
+ instance.invoke('destroy');
572
+ }
573
+ module.initialize();
574
+ }
575
+ });
108
576
 
109
- refresh: function() {
110
- module.verbose('Refreshing selector cache');
111
- $module = $(element);
112
- },
577
+ return (returnedValue !== undefined)
578
+ ? returnedValue
579
+ : this;
580
+ };
113
581
 
114
- add: {
115
- defaults: function() {
116
- var
117
- userStates = parameters && $.isPlainObject(parameters.states)
118
- ? parameters.states
119
- : {}
120
- ;
121
- $.each(settings.defaults, function(type, typeStates) {
122
- if( module.is[type] !== undefined && module.is[type]() ) {
123
- module.verbose('Adding default states', type, element);
124
- $.extend(settings.states, typeStates, userStates);
125
- }
126
- });
127
- }
128
- },
582
+ $.fn.state.settings = {
129
583
 
130
- is: {
131
-
132
- active: function() {
133
- return $module.hasClass(className.active);
134
- },
135
- loading: function() {
136
- return $module.hasClass(className.loading);
137
- },
138
- inactive: function() {
139
- return !( $module.hasClass(className.active) );
140
- },
141
- state: function(state) {
142
- if(className[state] === undefined) {
143
- return false;
144
- }
145
- return $module.hasClass( className[state] );
146
- },
147
-
148
- enabled: function() {
149
- return !( $module.is(settings.filter.active) );
150
- },
151
- disabled: function() {
152
- return ( $module.is(settings.filter.active) );
153
- },
154
- textEnabled: function() {
155
- return !( $module.is(settings.filter.text) );
156
- },
157
-
158
- // definitions for automatic type detection
159
- button: function() {
160
- return $module.is('.button:not(a, .submit)');
161
- },
162
- input: function() {
163
- return $module.is('input');
164
- },
165
- progress: function() {
166
- return $module.is('.ui.progress');
167
- }
168
- },
584
+ // module info
585
+ name: 'State',
169
586
 
170
- allow: function(state) {
171
- module.debug('Now allowing state', state);
172
- states[state] = true;
173
- },
174
- disallow: function(state) {
175
- module.debug('No longer allowing', state);
176
- states[state] = false;
177
- },
587
+ // debug output
588
+ debug: false,
178
589
 
179
- allows: function(state) {
180
- return states[state] || false;
181
- },
590
+ // verbose debug output
591
+ verbose: false,
182
592
 
183
- enable: function() {
184
- $module.removeClass(className.disabled);
185
- },
593
+ // namespace for events
594
+ namespace: 'state',
186
595
 
187
- disable: function() {
188
- $module.addClass(className.disabled);
189
- },
596
+ // debug data includes performance
597
+ performance: true,
190
598
 
191
- setState: function(state) {
192
- if(module.allows(state)) {
193
- $module.addClass( className[state] );
194
- }
195
- },
599
+ // callback occurs on state change
600
+ onActivate: function () {},
601
+ onDeactivate: function () {},
602
+ onChange: function () {},
196
603
 
197
- removeState: function(state) {
198
- if(module.allows(state)) {
199
- $module.removeClass( className[state] );
200
- }
604
+ // state test functions
605
+ activateTest: function () {
606
+ return true;
201
607
  },
202
-
203
- toggle: {
204
- state: function() {
205
- var
206
- apiRequest,
207
- requestCancelled
208
- ;
209
- if( module.allows('active') && module.is.enabled() ) {
210
- module.refresh();
211
- if($.fn.api !== undefined) {
212
- apiRequest = $module.api('get request');
213
- requestCancelled = $module.api('was cancelled');
214
- if( requestCancelled ) {
215
- module.debug('API Request cancelled by beforesend');
216
- settings.activateTest = function(){ return false; };
217
- settings.deactivateTest = function(){ return false; };
218
- }
219
- else if(apiRequest) {
220
- module.listenTo(apiRequest);
221
- return;
222
- }
223
- }
224
- module.change.state();
225
- }
226
- }
608
+ deactivateTest: function () {
609
+ return true;
227
610
  },
228
611
 
229
- listenTo: function(apiRequest) {
230
- module.debug('API request detected, waiting for state signal', apiRequest);
231
- if(apiRequest) {
232
- if(text.loading) {
233
- module.update.text(text.loading);
234
- }
235
- $.when(apiRequest)
236
- .then(function() {
237
- if(apiRequest.state() == 'resolved') {
238
- module.debug('API request succeeded');
239
- settings.activateTest = function(){ return true; };
240
- settings.deactivateTest = function(){ return true; };
241
- }
242
- else {
243
- module.debug('API request failed');
244
- settings.activateTest = function(){ return false; };
245
- settings.deactivateTest = function(){ return false; };
246
- }
247
- module.change.state();
248
- })
249
- ;
250
- }
251
- },
612
+ // whether to automatically map default states
613
+ automatic: true,
252
614
 
253
- // checks whether active/inactive state can be given
254
- change: {
615
+ // activate / deactivate changes all elements instantiated at same time
616
+ sync: false,
255
617
 
256
- state: function() {
257
- module.debug('Determining state change direction');
258
- // inactive to active change
259
- if( module.is.inactive() ) {
260
- module.activate();
261
- }
262
- else {
263
- module.deactivate();
264
- }
265
- if(settings.sync) {
266
- module.sync();
267
- }
268
- settings.onChange.call(element);
269
- },
270
-
271
- text: function() {
272
- if( module.is.textEnabled() ) {
273
- if(module.is.disabled() ) {
274
- module.verbose('Changing text to disabled text', text.hover);
275
- module.update.text(text.disabled);
276
- }
277
- else if( module.is.active() ) {
278
- if(text.hover) {
279
- module.verbose('Changing text to hover text', text.hover);
280
- module.update.text(text.hover);
281
- }
282
- else if(text.deactivate) {
283
- module.verbose('Changing text to deactivating text', text.deactivate);
284
- module.update.text(text.deactivate);
285
- }
286
- }
287
- else {
288
- if(text.hover) {
289
- module.verbose('Changing text to hover text', text.hover);
290
- module.update.text(text.hover);
291
- }
292
- else if(text.activate){
293
- module.verbose('Changing text to activating text', text.activate);
294
- module.update.text(text.activate);
295
- }
296
- }
297
- }
298
- }
618
+ // default flash text duration, used for temporarily changing text of an element
619
+ flashDuration: 1000,
299
620
 
621
+ // selector filter
622
+ filter: {
623
+ text: '.loading, .disabled',
624
+ active: '.disabled',
300
625
  },
301
626
 
302
- activate: function() {
303
- if( settings.activateTest.call(element) ) {
304
- module.debug('Setting state to active');
305
- $module
306
- .addClass(className.active)
307
- ;
308
- module.update.text(text.active);
309
- settings.onActivate.call(element);
310
- }
311
- },
627
+ context: false,
312
628
 
313
- deactivate: function() {
314
- if( settings.deactivateTest.call(element) ) {
315
- module.debug('Setting state to inactive');
316
- $module
317
- .removeClass(className.active)
318
- ;
319
- module.update.text(text.inactive);
320
- settings.onDeactivate.call(element);
321
- }
629
+ // error
630
+ error: {
631
+ beforeSend: 'The before send function has cancelled state change',
632
+ method: 'The method you called is not defined.',
322
633
  },
323
634
 
324
- sync: function() {
325
- module.verbose('Syncing other buttons to current state');
326
- if( module.is.active() ) {
327
- $allModules
328
- .not($module)
329
- .state('activate');
330
- }
331
- else {
332
- $allModules
333
- .not($module)
334
- .state('deactivate')
335
- ;
336
- }
635
+ // metadata
636
+ metadata: {
637
+ promise: 'promise',
638
+ storedText: 'stored-text',
337
639
  },
338
640
 
339
- get: {
340
- text: function() {
341
- return (settings.selector.text)
342
- ? $module.find(settings.selector.text).text()
343
- : $module.html()
344
- ;
345
- },
346
- textFor: function(state) {
347
- return text[state] || false;
348
- }
641
+ // change class on state
642
+ className: {
643
+ active: 'active',
644
+ disabled: 'disabled',
645
+ error: 'error',
646
+ loading: 'loading',
647
+ success: 'success',
648
+ warning: 'warning',
349
649
  },
350
650
 
351
- flash: {
352
- text: function(text, duration, callback) {
353
- var
354
- previousText = module.get.text()
355
- ;
356
- module.debug('Flashing text message', text, duration);
357
- text = text || settings.text.flash;
358
- duration = duration || settings.flashDuration;
359
- callback = callback || function() {};
360
- module.update.text(text);
361
- setTimeout(function(){
362
- module.update.text(previousText);
363
- callback.call(element);
364
- }, duration);
365
- }
651
+ selector: {
652
+ // selector for text node
653
+ text: false,
366
654
  },
367
655
 
368
- reset: {
369
- // on mouseout sets text to previous value
370
- text: function() {
371
- var
372
- activeText = text.active || $module.data(metadata.storedText),
373
- inactiveText = text.inactive || $module.data(metadata.storedText)
374
- ;
375
- if( module.is.textEnabled() ) {
376
- if( module.is.active() && activeText) {
377
- module.verbose('Resetting active text', activeText);
378
- module.update.text(activeText);
379
- }
380
- else if(inactiveText) {
381
- module.verbose('Resetting inactive text', activeText);
382
- module.update.text(inactiveText);
383
- }
384
- }
385
- }
656
+ defaults: {
657
+ input: {
658
+ disabled: true,
659
+ loading: true,
660
+ active: true,
661
+ },
662
+ button: {
663
+ disabled: true,
664
+ loading: true,
665
+ active: true,
666
+ },
667
+ progress: {
668
+ active: true,
669
+ success: true,
670
+ warning: true,
671
+ error: true,
672
+ },
386
673
  },
387
674
 
388
- update: {
389
- text: function(text) {
390
- var
391
- currentText = module.get.text()
392
- ;
393
- if(text && text !== currentText) {
394
- module.debug('Updating text', text);
395
- if(settings.selector.text) {
396
- $module
397
- .data(metadata.storedText, text)
398
- .find(settings.selector.text)
399
- .text(text)
400
- ;
401
- }
402
- else {
403
- $module
404
- .data(metadata.storedText, text)
405
- .html(text)
406
- ;
407
- }
408
- }
409
- else {
410
- module.debug('Text is already set, ignoring update', text);
411
- }
412
- }
675
+ states: {
676
+ active: true,
677
+ disabled: true,
678
+ error: true,
679
+ loading: true,
680
+ success: true,
681
+ warning: true,
413
682
  },
414
683
 
415
- setting: function(name, value) {
416
- module.debug('Changing setting', name, value);
417
- if( $.isPlainObject(name) ) {
418
- $.extend(true, settings, name);
419
- }
420
- else if(value !== undefined) {
421
- if($.isPlainObject(settings[name])) {
422
- $.extend(true, settings[name], value);
423
- }
424
- else {
425
- settings[name] = value;
426
- }
427
- }
428
- else {
429
- return settings[name];
430
- }
431
- },
432
- internal: function(name, value) {
433
- if( $.isPlainObject(name) ) {
434
- $.extend(true, module, name);
435
- }
436
- else if(value !== undefined) {
437
- module[name] = value;
438
- }
439
- else {
440
- return module[name];
441
- }
684
+ text: {
685
+ disabled: false,
686
+ flash: false,
687
+ hover: false,
688
+ active: false,
689
+ inactive: false,
690
+ activate: false,
691
+ deactivate: false,
442
692
  },
443
- debug: function() {
444
- if(!settings.silent && settings.debug) {
445
- if(settings.performance) {
446
- module.performance.log(arguments);
447
- }
448
- else {
449
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
450
- module.debug.apply(console, arguments);
451
- }
452
- }
453
- },
454
- verbose: function() {
455
- if(!settings.silent && settings.verbose && settings.debug) {
456
- if(settings.performance) {
457
- module.performance.log(arguments);
458
- }
459
- else {
460
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
461
- module.verbose.apply(console, arguments);
462
- }
463
- }
464
- },
465
- error: function() {
466
- if(!settings.silent) {
467
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
468
- module.error.apply(console, arguments);
469
- }
470
- },
471
- performance: {
472
- log: function(message) {
473
- var
474
- currentTime,
475
- executionTime,
476
- previousTime
477
- ;
478
- if(settings.performance) {
479
- currentTime = new Date().getTime();
480
- previousTime = time || currentTime;
481
- executionTime = currentTime - previousTime;
482
- time = currentTime;
483
- performance.push({
484
- 'Name' : message[0],
485
- 'Arguments' : [].slice.call(message, 1) || '',
486
- 'Element' : element,
487
- 'Execution Time' : executionTime
488
- });
489
- }
490
- clearTimeout(module.performance.timer);
491
- module.performance.timer = setTimeout(module.performance.display, 500);
492
- },
493
- display: function() {
494
- var
495
- title = settings.name + ':',
496
- totalTime = 0
497
- ;
498
- time = false;
499
- clearTimeout(module.performance.timer);
500
- $.each(performance, function(index, data) {
501
- totalTime += data['Execution Time'];
502
- });
503
- title += ' ' + totalTime + 'ms';
504
- if(moduleSelector) {
505
- title += ' \'' + moduleSelector + '\'';
506
- }
507
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
508
- console.groupCollapsed(title);
509
- if(console.table) {
510
- console.table(performance);
511
- }
512
- else {
513
- $.each(performance, function(index, data) {
514
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
515
- });
516
- }
517
- console.groupEnd();
518
- }
519
- performance = [];
520
- }
521
- },
522
- invoke: function(query, passedArguments, context) {
523
- var
524
- object = instance,
525
- maxDepth,
526
- found,
527
- response
528
- ;
529
- passedArguments = passedArguments || queryArguments;
530
- context = context || element;
531
- if(typeof query == 'string' && object !== undefined) {
532
- query = query.split(/[\. ]/);
533
- maxDepth = query.length - 1;
534
- $.each(query, function(depth, value) {
535
- var camelCaseValue = (depth != maxDepth)
536
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
537
- : query
538
- ;
539
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
540
- object = object[camelCaseValue];
541
- }
542
- else if( object[camelCaseValue] !== undefined ) {
543
- found = object[camelCaseValue];
544
- return false;
545
- }
546
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
547
- object = object[value];
548
- }
549
- else if( object[value] !== undefined ) {
550
- found = object[value];
551
- return false;
552
- }
553
- else {
554
- module.error(error.method, query);
555
- return false;
556
- }
557
- });
558
- }
559
- if ( isFunction( found ) ) {
560
- response = found.apply(context, passedArguments);
561
- }
562
- else if(found !== undefined) {
563
- response = found;
564
- }
565
- if(Array.isArray(returnedValue)) {
566
- returnedValue.push(response);
567
- }
568
- else if(returnedValue !== undefined) {
569
- returnedValue = [returnedValue, response];
570
- }
571
- else if(response !== undefined) {
572
- returnedValue = response;
573
- }
574
- return found;
575
- }
576
- };
577
-
578
- if(methodInvoked) {
579
- if(instance === undefined) {
580
- module.initialize();
581
- }
582
- module.invoke(query);
583
- }
584
- else {
585
- if(instance !== undefined) {
586
- instance.invoke('destroy');
587
- }
588
- module.initialize();
589
- }
590
- })
591
- ;
592
-
593
- return (returnedValue !== undefined)
594
- ? returnedValue
595
- : this
596
- ;
597
- };
598
-
599
- $.fn.state.settings = {
600
-
601
- // module info
602
- name : 'State',
603
-
604
- // debug output
605
- debug : false,
606
-
607
- // verbose debug output
608
- verbose : false,
609
-
610
- // namespace for events
611
- namespace : 'state',
612
-
613
- // debug data includes performance
614
- performance : true,
615
-
616
- // callback occurs on state change
617
- onActivate : function() {},
618
- onDeactivate : function() {},
619
- onChange : function() {},
620
-
621
- // state test functions
622
- activateTest : function() { return true; },
623
- deactivateTest : function() { return true; },
624
-
625
- // whether to automatically map default states
626
- automatic : true,
627
-
628
- // activate / deactivate changes all elements instantiated at same time
629
- sync : false,
630
-
631
- // default flash text duration, used for temporarily changing text of an element
632
- flashDuration : 1000,
633
-
634
- // selector filter
635
- filter : {
636
- text : '.loading, .disabled',
637
- active : '.disabled'
638
- },
639
-
640
- context : false,
641
-
642
- // error
643
- error: {
644
- beforeSend : 'The before send function has cancelled state change',
645
- method : 'The method you called is not defined.'
646
- },
647
-
648
- // metadata
649
- metadata: {
650
- promise : 'promise',
651
- storedText : 'stored-text'
652
- },
653
-
654
- // change class on state
655
- className: {
656
- active : 'active',
657
- disabled : 'disabled',
658
- error : 'error',
659
- loading : 'loading',
660
- success : 'success',
661
- warning : 'warning'
662
- },
663
-
664
- selector: {
665
- // selector for text node
666
- text: false
667
- },
668
-
669
- defaults : {
670
- input: {
671
- disabled : true,
672
- loading : true,
673
- active : true
674
- },
675
- button: {
676
- disabled : true,
677
- loading : true,
678
- active : true,
679
- },
680
- progress: {
681
- active : true,
682
- success : true,
683
- warning : true,
684
- error : true
685
- }
686
- },
687
-
688
- states : {
689
- active : true,
690
- disabled : true,
691
- error : true,
692
- loading : true,
693
- success : true,
694
- warning : true
695
- },
696
-
697
- text : {
698
- disabled : false,
699
- flash : false,
700
- hover : false,
701
- active : false,
702
- inactive : false,
703
- activate : false,
704
- deactivate : false
705
- }
706
-
707
- };
708
-
709
-
710
693
 
711
- })( jQuery, window, document );
694
+ };
695
+ })(jQuery, window, document);