fomantic-ui 2.8.8-beta.99 → 2.9.0-beta.100

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 (244) hide show
  1. package/.all-contributorsrc +188 -3
  2. package/.github/dependabot.yml +17 -0
  3. package/.github/workflows/ci.yml +1 -1
  4. package/CHANGELOG.md +139 -0
  5. package/CONTRIBUTING.md +1 -1
  6. package/CONTRIBUTORS.md +71 -37
  7. package/README.md +3 -3
  8. package/dist/components/accordion.css +50 -6
  9. package/dist/components/accordion.js +1 -1
  10. package/dist/components/accordion.min.css +2 -2
  11. package/dist/components/accordion.min.js +3 -3
  12. package/dist/components/ad.css +1 -1
  13. package/dist/components/ad.min.css +1 -1
  14. package/dist/components/api.js +26 -24
  15. package/dist/components/api.min.js +4 -4
  16. package/dist/components/breadcrumb.css +1 -1
  17. package/dist/components/breadcrumb.min.css +1 -1
  18. package/dist/components/button.css +81 -81
  19. package/dist/components/button.min.css +2 -2
  20. package/dist/components/calendar.css +1 -1
  21. package/dist/components/calendar.js +110 -11
  22. package/dist/components/calendar.min.css +1 -1
  23. package/dist/components/calendar.min.js +4 -4
  24. package/dist/components/card.css +26 -19
  25. package/dist/components/card.min.css +2 -2
  26. package/dist/components/checkbox.css +6 -4
  27. package/dist/components/checkbox.js +17 -11
  28. package/dist/components/checkbox.min.css +2 -2
  29. package/dist/components/checkbox.min.js +4 -4
  30. package/dist/components/comment.css +11 -11
  31. package/dist/components/comment.min.css +1 -1
  32. package/dist/components/container.css +3 -4
  33. package/dist/components/container.min.css +2 -2
  34. package/dist/components/dimmer.css +28 -14
  35. package/dist/components/dimmer.js +15 -12
  36. package/dist/components/dimmer.min.css +2 -2
  37. package/dist/components/dimmer.min.js +4 -4
  38. package/dist/components/divider.css +1 -1
  39. package/dist/components/divider.min.css +1 -1
  40. package/dist/components/dropdown.css +54 -7
  41. package/dist/components/dropdown.js +107 -77
  42. package/dist/components/dropdown.min.css +2 -2
  43. package/dist/components/dropdown.min.js +4 -4
  44. package/dist/components/embed.css +1 -1
  45. package/dist/components/embed.js +1 -1
  46. package/dist/components/embed.min.css +1 -1
  47. package/dist/components/embed.min.js +3 -3
  48. package/dist/components/emoji.css +2 -2
  49. package/dist/components/feed.css +28 -28
  50. package/dist/components/feed.min.css +2 -2
  51. package/dist/components/flag.css +731 -625
  52. package/dist/components/flag.min.css +2 -2
  53. package/dist/components/form.css +119 -54
  54. package/dist/components/form.js +51 -70
  55. package/dist/components/form.min.css +2 -2
  56. package/dist/components/form.min.js +4 -4
  57. package/dist/components/grid.css +13 -11
  58. package/dist/components/grid.min.css +2 -2
  59. package/dist/components/header.css +3 -3
  60. package/dist/components/header.min.css +2 -2
  61. package/dist/components/icon.css +86 -5
  62. package/dist/components/icon.min.css +2 -2
  63. package/dist/components/image.css +1 -1
  64. package/dist/components/image.min.css +1 -1
  65. package/dist/components/input.css +17 -2
  66. package/dist/components/input.min.css +2 -2
  67. package/dist/components/item.css +13 -13
  68. package/dist/components/item.min.css +1 -1
  69. package/dist/components/label.css +1 -1
  70. package/dist/components/label.min.css +1 -1
  71. package/dist/components/list.css +1 -1
  72. package/dist/components/list.min.css +1 -1
  73. package/dist/components/loader.css +39 -37
  74. package/dist/components/loader.min.css +2 -2
  75. package/dist/components/menu.css +37 -11
  76. package/dist/components/menu.min.css +1 -1
  77. package/dist/components/message.css +78 -34
  78. package/dist/components/message.min.css +2 -2
  79. package/dist/components/modal.css +7 -5
  80. package/dist/components/modal.js +237 -41
  81. package/dist/components/modal.min.css +2 -2
  82. package/dist/components/modal.min.js +4 -4
  83. package/dist/components/nag.css +168 -16
  84. package/dist/components/nag.js +131 -65
  85. package/dist/components/nag.min.css +2 -2
  86. package/dist/components/nag.min.js +4 -4
  87. package/dist/components/placeholder.css +1 -1
  88. package/dist/components/placeholder.min.css +1 -1
  89. package/dist/components/popup.css +5 -3
  90. package/dist/components/popup.js +5 -5
  91. package/dist/components/popup.min.css +2 -2
  92. package/dist/components/popup.min.js +4 -4
  93. package/dist/components/progress.css +2 -1
  94. package/dist/components/progress.js +3 -3
  95. package/dist/components/progress.min.css +2 -2
  96. package/dist/components/progress.min.js +4 -4
  97. package/dist/components/rail.css +1 -1
  98. package/dist/components/rail.min.css +1 -1
  99. package/dist/components/rating.css +8 -62
  100. package/dist/components/rating.js +1 -1
  101. package/dist/components/rating.min.css +2 -2
  102. package/dist/components/rating.min.js +3 -3
  103. package/dist/components/reset.css +2 -3
  104. package/dist/components/reset.min.css +2 -2
  105. package/dist/components/reveal.css +1 -1
  106. package/dist/components/reveal.min.css +1 -1
  107. package/dist/components/search.css +1 -1
  108. package/dist/components/search.js +15 -13
  109. package/dist/components/search.min.css +1 -1
  110. package/dist/components/search.min.js +4 -4
  111. package/dist/components/segment.css +36 -6
  112. package/dist/components/segment.min.css +2 -2
  113. package/dist/components/shape.css +1 -1
  114. package/dist/components/shape.js +1 -1
  115. package/dist/components/shape.min.css +1 -1
  116. package/dist/components/shape.min.js +3 -3
  117. package/dist/components/sidebar.css +4 -2
  118. package/dist/components/sidebar.js +1 -1
  119. package/dist/components/sidebar.min.css +2 -2
  120. package/dist/components/sidebar.min.js +3 -3
  121. package/dist/components/site.css +61 -39
  122. package/dist/components/site.js +1 -1
  123. package/dist/components/site.min.css +2 -2
  124. package/dist/components/site.min.js +3 -3
  125. package/dist/components/slider.js +1 -1
  126. package/dist/components/slider.min.js +3 -3
  127. package/dist/components/state.js +1 -1
  128. package/dist/components/state.min.js +3 -3
  129. package/dist/components/statistic.css +1 -1
  130. package/dist/components/statistic.min.css +1 -1
  131. package/dist/components/step.css +4 -4
  132. package/dist/components/step.min.css +2 -2
  133. package/dist/components/sticky.css +1 -2
  134. package/dist/components/sticky.js +2 -2
  135. package/dist/components/sticky.min.css +2 -2
  136. package/dist/components/sticky.min.js +4 -4
  137. package/dist/components/tab.css +1 -1
  138. package/dist/components/tab.js +1 -1
  139. package/dist/components/tab.min.css +1 -1
  140. package/dist/components/tab.min.js +3 -3
  141. package/dist/components/table.css +5 -3
  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 +123 -10
  146. package/dist/components/toast.js +54 -27
  147. package/dist/components/toast.min.css +2 -2
  148. package/dist/components/toast.min.js +4 -4
  149. package/dist/components/transition.css +1 -1
  150. package/dist/components/transition.js +2 -2
  151. package/dist/components/transition.min.css +1 -1
  152. package/dist/components/transition.min.js +4 -4
  153. package/dist/components/visibility.js +2 -2
  154. package/dist/components/visibility.min.js +3 -3
  155. package/dist/semantic.css +2004 -1124
  156. package/dist/semantic.js +789 -377
  157. package/dist/semantic.min.css +4 -397
  158. package/dist/semantic.min.js +4 -4
  159. package/examples/assets/library/iframe-content.js +8 -8
  160. package/examples/assets/library/iframe.js +3 -3
  161. package/package.json +5 -5
  162. package/scripts/nightly-version.js +23 -8
  163. package/src/definitions/behaviors/api.js +25 -23
  164. package/src/definitions/behaviors/form.js +50 -69
  165. package/src/definitions/behaviors/visibility.js +1 -1
  166. package/src/definitions/collections/form.less +200 -142
  167. package/src/definitions/collections/grid.less +717 -681
  168. package/src/definitions/collections/menu.less +177 -128
  169. package/src/definitions/collections/message.less +77 -44
  170. package/src/definitions/collections/table.less +255 -242
  171. package/src/definitions/elements/button.less +360 -347
  172. package/src/definitions/elements/container.less +16 -8
  173. package/src/definitions/elements/emoji.less +15 -9
  174. package/src/definitions/elements/flag.less +7 -17
  175. package/src/definitions/elements/header.less +44 -37
  176. package/src/definitions/elements/icon.less +121 -43
  177. package/src/definitions/elements/input.less +23 -7
  178. package/src/definitions/elements/label.less +92 -91
  179. package/src/definitions/elements/list.less +55 -45
  180. package/src/definitions/elements/loader.less +38 -35
  181. package/src/definitions/elements/segment.less +51 -23
  182. package/src/definitions/elements/step.less +52 -48
  183. package/src/definitions/elements/text.less +17 -15
  184. package/src/definitions/globals/site.less +23 -2
  185. package/src/definitions/modules/accordion.less +55 -5
  186. package/src/definitions/modules/calendar.js +109 -10
  187. package/src/definitions/modules/checkbox.js +16 -10
  188. package/src/definitions/modules/checkbox.less +44 -186
  189. package/src/definitions/modules/dimmer.js +14 -11
  190. package/src/definitions/modules/dimmer.less +21 -8
  191. package/src/definitions/modules/dropdown.js +106 -76
  192. package/src/definitions/modules/dropdown.less +148 -89
  193. package/src/definitions/modules/modal.js +236 -40
  194. package/src/definitions/modules/modal.less +6 -4
  195. package/src/definitions/modules/nag.js +130 -64
  196. package/src/definitions/modules/nag.less +105 -40
  197. package/src/definitions/modules/popup.js +4 -4
  198. package/src/definitions/modules/popup.less +5 -1
  199. package/src/definitions/modules/progress.js +2 -2
  200. package/src/definitions/modules/progress.less +20 -18
  201. package/src/definitions/modules/rating.less +50 -42
  202. package/src/definitions/modules/search.js +14 -12
  203. package/src/definitions/modules/search.less +32 -16
  204. package/src/definitions/modules/sidebar.less +33 -19
  205. package/src/definitions/modules/slider.less +43 -42
  206. package/src/definitions/modules/sticky.js +1 -1
  207. package/src/definitions/modules/toast.js +53 -26
  208. package/src/definitions/modules/toast.less +139 -25
  209. package/src/definitions/modules/transition.js +1 -1
  210. package/src/definitions/views/card.less +402 -361
  211. package/src/definitions/views/comment.less +92 -81
  212. package/src/definitions/views/feed.less +164 -144
  213. package/src/definitions/views/item.less +249 -196
  214. package/src/definitions/views/statistic.less +90 -88
  215. package/src/themes/default/collections/grid.variables +8 -8
  216. package/src/themes/default/collections/menu.variables +6 -0
  217. package/src/themes/default/collections/table.variables +1 -1
  218. package/src/themes/default/elements/button.variables +2 -1
  219. package/src/themes/default/elements/flag.overrides +1635 -986
  220. package/src/themes/default/elements/flag.variables +7 -5
  221. package/src/themes/default/elements/header.variables +2 -2
  222. package/src/themes/default/elements/icon.overrides +35 -28
  223. package/src/themes/default/elements/icon.variables +4 -0
  224. package/src/themes/default/elements/list.variables +1 -1
  225. package/src/themes/default/elements/step.overrides +1 -1
  226. package/src/themes/default/globals/colors.less +7 -7
  227. package/src/themes/default/globals/site.variables +19 -9
  228. package/src/themes/default/globals/variation.variables +119 -6
  229. package/src/themes/default/modules/accordion.variables +15 -0
  230. package/src/themes/default/modules/checkbox.variables +16 -16
  231. package/src/themes/default/modules/dimmer.variables +1 -1
  232. package/src/themes/default/modules/dropdown.variables +12 -5
  233. package/src/themes/default/modules/modal.variables +2 -2
  234. package/src/themes/default/modules/nag.variables +3 -1
  235. package/src/themes/default/modules/toast.variables +5 -1
  236. package/src/themes/default/views/card.variables +1 -1
  237. package/src/themes/famfamfam/elements/flag.overrides +1026 -0
  238. package/src/themes/famfamfam/elements/flag.variables +13 -0
  239. package/tasks/admin/components/init.js +2 -2
  240. package/tasks/admin/distributions/init.js +2 -2
  241. package/tasks/build/css.js +6 -1
  242. package/tasks/config/project/release.js +2 -2
  243. package/tasks/config/tasks.js +13 -9
  244. package/test/helpers/sinon.js +1 -1
@@ -58,14 +58,14 @@ $.fn.nag = function(parameters) {
58
58
 
59
59
  element = this,
60
60
  instance = $module.data(moduleNamespace),
61
-
61
+ storage,
62
62
  module
63
63
  ;
64
64
  module = {
65
65
 
66
66
  initialize: function() {
67
67
  module.verbose('Initializing element');
68
-
68
+ storage = module.get.storage();
69
69
  $module
70
70
  .on('click' + eventNamespace, selector.close, module.dismiss)
71
71
  .data(moduleNamespace, module)
@@ -94,47 +94,47 @@ $.fn.nag = function(parameters) {
94
94
 
95
95
  show: function() {
96
96
  if( module.should.show() && !$module.is(':visible') ) {
97
+ if(settings.onShow.call(element) === false) {
98
+ module.debug('onShow callback returned false, cancelling nag animation');
99
+ return false;
100
+ }
97
101
  module.debug('Showing nag', settings.animation.show);
98
- if(settings.animation.show == 'fade') {
102
+ if(settings.animation.show === 'fade') {
99
103
  $module
100
- .fadeIn(settings.duration, settings.easing)
104
+ .fadeIn(settings.duration, settings.easing, settings.onVisible)
101
105
  ;
102
106
  }
103
107
  else {
104
108
  $module
105
- .slideDown(settings.duration, settings.easing)
109
+ .slideDown(settings.duration, settings.easing, settings.onVisible)
106
110
  ;
107
111
  }
108
112
  }
109
113
  },
110
114
 
111
115
  hide: function() {
112
- module.debug('Showing nag', settings.animation.hide);
113
- if(settings.animation.show == 'fade') {
116
+ if(settings.onHide.call(element) === false) {
117
+ module.debug('onHide callback returned false, cancelling nag animation');
118
+ return false;
119
+ }
120
+ module.debug('Hiding nag', settings.animation.hide);
121
+ if(settings.animation.hide === 'fade') {
114
122
  $module
115
- .fadeIn(settings.duration, settings.easing)
123
+ .fadeOut(settings.duration, settings.easing, settings.onHidden)
116
124
  ;
117
125
  }
118
126
  else {
119
127
  $module
120
- .slideUp(settings.duration, settings.easing)
128
+ .slideUp(settings.duration, settings.easing, settings.onHidden)
121
129
  ;
122
130
  }
123
131
  },
124
132
 
125
- onHide: function() {
126
- module.debug('Removing nag', settings.animation.hide);
127
- $module.remove();
128
- if (settings.onHide) {
129
- settings.onHide();
130
- }
131
- },
132
-
133
133
  dismiss: function(event) {
134
- if(settings.storageMethod) {
134
+ if(module.hide() !== false && settings.storageMethod) {
135
+ module.debug('Dismissing nag', settings.storageMethod, settings.key, settings.value, settings.expires);
135
136
  module.storage.set(settings.key, settings.value);
136
137
  }
137
- module.hide();
138
138
  event.stopImmediatePropagation();
139
139
  event.preventDefault();
140
140
  },
@@ -155,12 +155,71 @@ $.fn.nag = function(parameters) {
155
155
  },
156
156
 
157
157
  get: {
158
+ expirationDate: function(expires) {
159
+ if (typeof expires === 'number') {
160
+ expires = new Date(Date.now() + expires * 864e5);
161
+ }
162
+ if(expires instanceof Date && expires.getTime() ){
163
+ return expires.toUTCString();
164
+ } else {
165
+ module.error(error.expiresFormat);
166
+ }
167
+ },
168
+ storage: function(){
169
+ if(settings.storageMethod === 'localstorage' && window.localStorage !== undefined) {
170
+ module.debug('Using local storage');
171
+ return window.localStorage;
172
+ }
173
+ else if(settings.storageMethod === 'sessionstorage' && window.sessionStorage !== undefined) {
174
+ module.debug('Using session storage');
175
+ return window.sessionStorage;
176
+ }
177
+ else if("cookie" in document) {
178
+ module.debug('Using cookie');
179
+ return {
180
+ setItem: function(key, value, options) {
181
+ // RFC6265 compliant encoding
182
+ key = encodeURIComponent(key)
183
+ .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)
184
+ .replace(/[()]/g, escape);
185
+ value = encodeURIComponent(value)
186
+ .replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);
187
+
188
+ var cookieOptions = '';
189
+ for (var option in options) {
190
+ if (options.hasOwnProperty(option)) {
191
+ cookieOptions += '; ' + option;
192
+ if (typeof options[option] === 'string') {
193
+ cookieOptions += '=' + options[option].split(';')[0];
194
+ }
195
+ }
196
+ }
197
+ document.cookie = key + '=' + value + cookieOptions;
198
+ },
199
+ getItem: function(key) {
200
+ var cookies = document.cookie.split('; ');
201
+ for (var i = 0, il = cookies.length; i < il; i++) {
202
+ var parts = cookies[i].split('='),
203
+ foundKey = parts[0].replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
204
+ if (key === foundKey) {
205
+ return parts[1] || '';
206
+ }
207
+ }
208
+ },
209
+ removeItem: function(key, options) {
210
+ storage.setItem(key,'',options);
211
+ }
212
+ };
213
+ } else {
214
+ module.error(error.noStorage);
215
+ }
216
+ },
158
217
  storageOptions: function() {
159
218
  var
160
219
  options = {}
161
220
  ;
162
221
  if(settings.expires) {
163
- options.expires = settings.expires;
222
+ options.expires = module.get.expirationDate(settings.expires);
164
223
  }
165
224
  if(settings.domain) {
166
225
  options.domain = settings.domain;
@@ -168,6 +227,12 @@ $.fn.nag = function(parameters) {
168
227
  if(settings.path) {
169
228
  options.path = settings.path;
170
229
  }
230
+ if(settings.secure) {
231
+ options.secure = settings.secure;
232
+ }
233
+ if(settings.samesite) {
234
+ options.samesite = settings.samesite;
235
+ }
171
236
  return options;
172
237
  }
173
238
  },
@@ -181,39 +246,30 @@ $.fn.nag = function(parameters) {
181
246
  var
182
247
  options = module.get.storageOptions()
183
248
  ;
184
- if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {
185
- window.localStorage.setItem(key, value);
186
- module.debug('Value stored using local storage', key, value);
249
+ if(storage === window.localStorage && options.expires) {
250
+ module.debug('Storing expiration value in localStorage', key, options.expires);
251
+ storage.setItem(key + settings.expirationKey, options.expires );
187
252
  }
188
- else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {
189
- window.sessionStorage.setItem(key, value);
190
- module.debug('Value stored using session storage', key, value);
253
+ module.debug('Value stored', key, value);
254
+ try {
255
+ storage.setItem(key, value, options);
191
256
  }
192
- else if($.cookie !== undefined) {
193
- $.cookie(key, value, options);
194
- module.debug('Value stored using cookie', key, value, options);
195
- }
196
- else {
197
- module.error(error.noCookieStorage);
198
- return;
257
+ catch(e) {
258
+ module.error(error.setItem, e);
199
259
  }
200
260
  },
201
- get: function(key, value) {
261
+ get: function(key) {
202
262
  var
203
263
  storedValue
204
264
  ;
205
- if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {
206
- storedValue = window.localStorage.getItem(key);
207
- }
208
- else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {
209
- storedValue = window.sessionStorage.getItem(key);
210
- }
211
- // get by cookie
212
- else if($.cookie !== undefined) {
213
- storedValue = $.cookie(key);
214
- }
215
- else {
216
- module.error(error.noCookieStorage);
265
+ storedValue = storage.getItem(key);
266
+ if(storage === window.localStorage) {
267
+ var expiration = storage.getItem(key + settings.expirationKey);
268
+ if(expiration !== null && expiration !== undefined && new Date(expiration) < new Date()) {
269
+ module.debug('Value in localStorage has expired. Deleting key', key);
270
+ module.storage.remove(key);
271
+ storedValue = null;
272
+ }
217
273
  }
218
274
  if(storedValue == 'undefined' || storedValue == 'null' || storedValue === undefined || storedValue === null) {
219
275
  storedValue = undefined;
@@ -224,19 +280,11 @@ $.fn.nag = function(parameters) {
224
280
  var
225
281
  options = module.get.storageOptions()
226
282
  ;
227
- if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {
228
- window.localStorage.removeItem(key);
229
- }
230
- else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {
231
- window.sessionStorage.removeItem(key);
232
- }
233
- // store by cookie
234
- else if($.cookie !== undefined) {
235
- $.removeCookie(key, options);
236
- }
237
- else {
238
- module.error(error.noStorage);
283
+ options.expires = module.get.expirationDate(-1);
284
+ if(storage === window.localStorage) {
285
+ storage.removeItem(key + settings.expirationKey);
239
286
  }
287
+ storage.removeItem(key, options);
240
288
  }
241
289
  },
242
290
 
@@ -450,8 +498,12 @@ $.fn.nag.settings = {
450
498
  detachable : false,
451
499
 
452
500
  expires : 30,
501
+
502
+ // cookie storage only options
453
503
  domain : false,
454
504
  path : '/',
505
+ secure : false,
506
+ samesite : false,
455
507
 
456
508
  // type of storage to use
457
509
  storageMethod : 'cookie',
@@ -460,10 +512,14 @@ $.fn.nag.settings = {
460
512
  key : 'nag',
461
513
  value : 'dismiss',
462
514
 
515
+ // Key suffix to support expiration in localstorage
516
+ expirationKey : 'ExpirationDate',
517
+
463
518
  error: {
464
- noCookieStorage : '$.cookie is not included. A storage solution is required.',
465
- noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state',
466
- method : 'The method you called is not defined.'
519
+ noStorage : 'Unsupported storage method',
520
+ method : 'The method you called is not defined.',
521
+ setItem : 'Unexpected error while setting value',
522
+ expiresFormat : '"expires" must be a number of days or a Date Object'
467
523
  },
468
524
 
469
525
  className : {
@@ -472,13 +528,23 @@ $.fn.nag.settings = {
472
528
  },
473
529
 
474
530
  selector : {
475
- close : '.close.icon'
531
+ close : '> .close.icon'
476
532
  },
477
533
 
478
- speed : 500,
534
+ duration : 500,
479
535
  easing : 'easeOutQuad',
480
536
 
481
- onHide: function() {}
537
+ // callback before show animation, return false to prevent show
538
+ onShow : function() {},
539
+
540
+ // called after show animation
541
+ onVisible : function() {},
542
+
543
+ // callback before hide animation, return false to prevent hide
544
+ onHide : function() {},
545
+
546
+ // callback after hide animation
547
+ onHidden : function() {}
482
548
 
483
549
  };
484
550
 
@@ -74,7 +74,9 @@ a.ui.nag {
74
74
  transition: @closeTransition;
75
75
  }
76
76
 
77
-
77
+ .ui.nag:not(.overlay):not(.fixed) {
78
+ border-radius: @borderRadius;
79
+ }
78
80
 
79
81
  /*******************************
80
82
  States
@@ -86,7 +88,7 @@ a.ui.nag {
86
88
  opacity: @nagHoverOpacity;
87
89
  }
88
90
 
89
- .ui.nag .close:hover {
91
+ .ui.nag > .close:hover {
90
92
  opacity: @closeHoverOpacity;
91
93
  }
92
94
 
@@ -95,64 +97,127 @@ a.ui.nag {
95
97
  Variations
96
98
  *******************************/
97
99
 
98
-
99
- /*--------------
100
- Static
101
- ---------------*/
102
-
103
- .ui.overlay.nag {
104
- position: absolute;
105
- display: block;
100
+ & when(@variationNagOverlay) {
101
+ /*--------------
102
+ Static
103
+ ---------------*/
104
+ .ui.overlay.nags,
105
+ .ui.overlay.nag {
106
+ position: absolute;
107
+ display: block;
108
+ }
106
109
  }
107
110
 
111
+ & when(@variationNagFixed) {
108
112
  /*--------------
109
113
  Fixed
110
114
  ---------------*/
111
-
112
- .ui.fixed.nag {
113
- position: fixed;
115
+ .ui.fixed.nags,
116
+ .ui.fixed.nag {
117
+ position: fixed;
118
+ }
114
119
  }
115
-
120
+ & when(@variationNagBottom) {
116
121
  /*--------------
117
122
  Bottom
118
123
  ---------------*/
119
-
120
- .ui.bottom.nags,
121
- .ui.bottom.nag {
122
- border-radius: @bottomBorderRadius;
123
- top: auto;
124
- bottom: @bottom;
124
+ .ui.bottom.nags,
125
+ .ui.bottom.nag {
126
+ border-radius: @bottomBorderRadius;
127
+ top: auto;
128
+ bottom: @bottom;
129
+ }
125
130
  }
126
131
 
132
+ & when(@variationNagInverted) {
127
133
  /*--------------
128
- White
134
+ Inverted
129
135
  ---------------*/
130
136
 
131
- .ui.inverted.nags .nag,
132
- .ui.inverted.nag {
133
- background-color: @invertedBackground;
134
- color: @darkTextColor;
137
+ .ui.inverted.nags .nag,
138
+ .ui.inverted.nag {
139
+ background-color: @invertedBackground;
140
+ color: @darkTextColor;
141
+ }
142
+ .ui.inverted.nags .nag > .close,
143
+ .ui.inverted.nag > .close {
144
+ color: @invertedCloseColor;
145
+ }
146
+ .ui.inverted.nags .nag > .title,
147
+ .ui.inverted.nag > .title {
148
+ color: @invertedTitleColor;
149
+ }
135
150
  }
136
- .ui.inverted.nags .nag .close,
137
- .ui.inverted.nags .nag .title,
138
- .ui.inverted.nag .close,
139
- .ui.inverted.nag .title {
140
- color: @lightTextColor;
151
+
152
+ & when not (@variationNagSizes = false) {
153
+ /*-------------------
154
+ Sizes
155
+ --------------------*/
156
+ each(@variationNagSizes, {
157
+ @s: @@value;
158
+ @sr: "@{value}Raw";
159
+ .ui.@{value}.nag,
160
+ .ui.@{value}.nags .nag {
161
+ font-size: @s;
162
+ & when (@@sr > 1.4) {
163
+ line-height: 1;
164
+ }
165
+ }
166
+ })
141
167
  }
142
168
 
169
+ /*--------------
170
+ Colors
171
+ -------------- */
172
+ & when not (@variationNagColors = false) {
173
+ each(@variationNagColors, {
174
+ @color: @value;
175
+ @c: @colors[@@color][color];
176
+ @l: @colors[@@color][light];
177
+ @isVeryDark: @colors[@@color][isVeryDark];
178
+
179
+ .ui.@{color}.nag {
180
+ background-color: @c;
181
+ & when (@isVeryDark) {
182
+ color: @invertedTextColor;
183
+ }
184
+ }
185
+ & when (@variationNagInverted) {
186
+ .ui.inverted.@{color}.nag {
187
+ background-color: @l;
188
+ & .title when (@isVeryDark) {
189
+ color: @titleColor;
190
+ }
191
+ }
192
+ }
193
+ })
194
+ }
143
195
 
196
+ & when (@variationNagGroups) {
144
197
  /*******************************
145
198
  Groups
146
199
  *******************************/
147
-
148
- .ui.nags .nag {
149
- border-radius: @groupedBorderRadius !important;
200
+ .ui.nags {
201
+ top: @top;
202
+ left: 0;
203
+ width: @width;
204
+ }
205
+ .ui.ui.nags .nag {
206
+ border-radius: @groupedBorderRadius;
207
+ }
208
+ .ui.nags:not(.bottom) .nag:last-child {
209
+ border-radius: @topBorderRadius;
210
+ }
211
+ & when(@variationNagBottom) {
212
+ .ui.bottom.nags .nag:first-child {
213
+ border-radius: @bottomBorderRadius;
214
+ }
215
+ }
216
+ .ui.nags:not(.fixed):not(.overlay) .nag:first-child {
217
+ border-radius: @bottomBorderRadius;
218
+ }
219
+ .ui.nags:not(.fixed):not(.overlay) .nag:only-child {
220
+ border-radius: @borderRadius;
221
+ }
150
222
  }
151
- .ui.nags .nag:last-child {
152
- border-radius: @topBorderRadius;
153
- }
154
- .ui.bottom.nags .nag:last-child {
155
- border-radius: @bottomBorderRadius;
156
- }
157
-
158
223
  .loadUIOverrides();
@@ -434,11 +434,11 @@ $.fn.popup = function(parameters) {
434
434
  module.set.visible();
435
435
  $popup
436
436
  .transition({
437
- animation : settings.transition + ' in',
437
+ animation : (settings.transition.showMethod || settings.transition) + ' in',
438
438
  queue : false,
439
439
  debug : settings.debug,
440
440
  verbose : settings.verbose,
441
- duration : settings.duration,
441
+ duration : settings.transition.showDuration || settings.duration,
442
442
  onComplete : function() {
443
443
  module.bind.close();
444
444
  callback.call($popup, element);
@@ -457,9 +457,9 @@ $.fn.popup = function(parameters) {
457
457
  if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {
458
458
  $popup
459
459
  .transition({
460
- animation : settings.transition + ' out',
460
+ animation : (settings.transition.hideMethod || settings.transition) + ' out',
461
461
  queue : false,
462
- duration : settings.duration,
462
+ duration : settings.transition.hideDuration || settings.duration,
463
463
  debug : settings.debug,
464
464
  verbose : settings.verbose,
465
465
  onComplete : function() {
@@ -337,7 +337,6 @@
337
337
  left: 50%;
338
338
  margin-left: @tooltipArrowHorizontalOffset;
339
339
  margin-top: -@arrowOffset;
340
- transform-origin: center top;
341
340
  }
342
341
  }
343
342
  & when (@variationPopupLeft) {
@@ -448,6 +447,11 @@
448
447
  }
449
448
  }
450
449
  & when (@variationPopupCenter) {
450
+ & when (@variationPopupBottom) {
451
+ [data-position="bottom center"][data-tooltip]:before {
452
+ transform-origin: center top;
453
+ }
454
+ }
451
455
  & when (@variationPopupLeft) {
452
456
  [data-position="left center"][data-tooltip]:before {
453
457
  transform-origin: top center;
@@ -93,7 +93,7 @@ $.fn.progress = function(parameters) {
93
93
  *
94
94
  * @param min A minimum value within multiple values
95
95
  * @param total A total amount of multiple values
96
- * @returns {number} A precison. Could be 1, 10, 100, ... 1e+10.
96
+ * @returns {number} A precision. Could be 1, 10, 100, ... 1e+10.
97
97
  */
98
98
  derivePrecision: function(min, total) {
99
99
  var precisionPower = 0
@@ -991,7 +991,7 @@ $.fn.progress.settings = {
991
991
  nonNumeric : 'Progress value is non numeric',
992
992
  tooHigh : 'Value specified is above 100%',
993
993
  tooLow : 'Value specified is below 0%',
994
- sumExceedsTotal : 'Sum of multple values exceed total',
994
+ sumExceedsTotal : 'Sum of multiple values exceed total',
995
995
  },
996
996
 
997
997
  regExp: {
@@ -446,25 +446,26 @@
446
446
  /*--------------
447
447
  Colors
448
448
  ---------------*/
449
-
450
- each(@colors, {
451
- @color: replace(@key, '@', '');
452
- @c: @colors[@@color][color];
453
- @l: @colors[@@color][light];
454
-
455
- .ui.indeterminate.@{color}.progress .bar::before,
456
- .ui.@{color}.progress .bar,
457
- .ui.progress .@{color}.bar {
458
- background-color: @c;
459
- }
460
- & when (@variationProgressInverted) {
461
- .ui.inverted.indeterminate.@{color}.progress .bar::before,
462
- .ui.@{color}.inverted.progress .bar,
463
- .ui.inverted.progress .@{color}.bar {
464
- background-color: @l;
449
+ & when not (@variationProgressColors = false) {
450
+ each(@variationProgressColors, {
451
+ @color: @value;
452
+ @c: @colors[@@color][color];
453
+ @l: @colors[@@color][light];
454
+
455
+ .ui.indeterminate.@{color}.progress .bar::before,
456
+ .ui.@{color}.progress .bar,
457
+ .ui.progress .@{color}.bar {
458
+ background-color: @c;
465
459
  }
466
- }
467
- })
460
+ & when (@variationProgressInverted) {
461
+ .ui.inverted.indeterminate.@{color}.progress .bar::before,
462
+ .ui.@{color}.inverted.progress .bar,
463
+ .ui.inverted.progress .@{color}.bar {
464
+ background-color: @l;
465
+ }
466
+ }
467
+ })
468
+ }
468
469
 
469
470
  /*--------------
470
471
  Sizes
@@ -501,6 +502,7 @@ each(@colors, {
501
502
  .ui.progress .bar .centered.progress {
502
503
  text-align: center;
503
504
  position: relative;
505
+ right: 0;
504
506
  }
505
507
  .ui.indeterminate.progress .bar::before {
506
508
  content: '';