less-rails-semantic_ui 1.10.4.0 → 1.11.1.0

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/assets/javascripts/semantic_ui/definitions/behaviors/visibility.js +84 -70
  3. data/assets/javascripts/semantic_ui/definitions/modules/dimmer.js +40 -2
  4. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +34 -20
  5. data/assets/javascripts/semantic_ui/definitions/modules/modal.js +18 -14
  6. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +70 -33
  7. data/assets/javascripts/semantic_ui/definitions/modules/search.js +27 -15
  8. data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +2 -5
  9. data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +64 -48
  10. data/assets/javascripts/semantic_ui/definitions/modules/transition.js +57 -24
  11. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +16 -2
  12. data/assets/stylesheets/semantic_ui/definitions/collections/grid.less +9 -10
  13. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +6 -5
  14. data/assets/stylesheets/semantic_ui/definitions/collections/table.less +4 -2
  15. data/assets/stylesheets/semantic_ui/definitions/elements/button.less +1 -0
  16. data/assets/stylesheets/semantic_ui/definitions/elements/icon.less +2 -8
  17. data/assets/stylesheets/semantic_ui/definitions/elements/image.less +9 -0
  18. data/assets/stylesheets/semantic_ui/definitions/elements/list.less +2 -2
  19. data/assets/stylesheets/semantic_ui/definitions/elements/segment.less +10 -1
  20. data/assets/stylesheets/semantic_ui/definitions/modules/dropdown.less +12 -4
  21. data/assets/stylesheets/semantic_ui/definitions/views/item.less +1 -2
  22. data/assets/stylesheets/semantic_ui/themes/basic/elements/icon.overrides +156 -156
  23. data/assets/stylesheets/semantic_ui/themes/basic/elements/icon.variables +7 -0
  24. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +5 -0
  25. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.overrides +0 -12
  26. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.variables +10 -1
  27. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +3 -0
  28. data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.variables +4 -1
  29. data/assets/stylesheets/semantic_ui/themes/default/modules/transition.overrides +50 -50
  30. data/assets/stylesheets/semantic_ui/themes/default/views/item.variables +3 -3
  31. data/assets/stylesheets/semantic_ui/themes/material/elements/button.overrides +3 -0
  32. data/lib/generators/semantic_ui/install/templates/theme.config +0 -12
  33. data/lib/less/rails/semantic_ui/version.rb +1 -1
  34. data/tasks/update.rake +4 -0
  35. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 60b13a016a97fd828e6f64cc1845ea4851fa5d98
4
- data.tar.gz: ed24a7ae707268326590899f382f76d5859e3fc9
3
+ metadata.gz: 1f16877ddb59ee7e19ff823fb8ee2ada3da884ac
4
+ data.tar.gz: d07cfbed233bef292f671eb16abc0fbaf6b1885d
5
5
  SHA512:
6
- metadata.gz: 412872a9190beb0932453ef7659f682df2b8ec9fd570aee8371545cfae2498d50615c6352659e501e4b2de9d316b589d655dd5104e88e0f5f5bfdf3adc1dc5b3
7
- data.tar.gz: 368ba82259e96e24b59189f1c168dc5c85180d3ee07f56a8941613212a173289280eee68b7299283089e6f7ef887d81bcf66e11634c9f81ce57950580365aa3c
6
+ metadata.gz: bf2d0d00bd266485feb45a9356cbba88f26912200e02645ce1c688b64f6aadae380d94817d5a7feb4217771cf50188366708e513e04d06e3d5e650d114e04faa
7
+ data.tar.gz: 6d5e88897e1f5659f97bea995872a39f5bbd278d5d09fda4f00709353d93e6c6661c40834480f3729b44ea13c61049ebd24f38f8737e362e993a1edf3287a3be
@@ -30,7 +30,9 @@ $.fn.visibility = function(parameters) {
30
30
  $allModules
31
31
  .each(function() {
32
32
  var
33
- settings = $.extend(true, {}, $.fn.visibility.settings, parameters),
33
+ settings = ( $.isPlainObject(parameters) )
34
+ ? $.extend(true, {}, $.fn.visibility.settings, parameters)
35
+ : $.extend({}, $.fn.visibility.settings),
34
36
 
35
37
  className = settings.className,
36
38
  namespace = settings.namespace,
@@ -58,16 +60,16 @@ $.fn.visibility = function(parameters) {
58
60
  module
59
61
  ;
60
62
 
61
- module = {
63
+ module = {
62
64
 
63
65
  initialize: function() {
64
- module.verbose('Initializing visibility', settings);
66
+ module.debug('Initializing', settings);
65
67
 
66
68
  module.setup.cache();
67
69
  module.save.position();
68
70
 
69
71
  if( module.should.trackChanges() ) {
70
- module.bindEvents();
72
+ module.bind.events();
71
73
  if(settings.type == 'image') {
72
74
  module.setup.image();
73
75
  }
@@ -85,11 +87,11 @@ $.fn.visibility = function(parameters) {
85
87
  },
86
88
 
87
89
  instantiate: function() {
88
- module.verbose('Storing instance of module', module);
89
- instance = module;
90
+ module.debug('Storing instance', module);
90
91
  $module
91
92
  .data(moduleNamespace, module)
92
93
  ;
94
+ instance = module;
93
95
  },
94
96
 
95
97
  destroy: function() {
@@ -98,6 +100,8 @@ $.fn.visibility = function(parameters) {
98
100
  .off(eventNamespace)
99
101
  .removeData(moduleNamespace)
100
102
  ;
103
+ $window.off('resize' + eventNamespace, module.event.refresh);
104
+ $context.off('scroll' + eventNamespace, module.event.scroll);
101
105
  },
102
106
 
103
107
  observeChanges: function() {
@@ -117,14 +121,16 @@ $.fn.visibility = function(parameters) {
117
121
  }
118
122
  },
119
123
 
120
- bindEvents: function() {
121
- module.verbose('Binding visibility events to scroll and resize');
122
- $window
123
- .on('resize' + eventNamespace, module.event.refresh)
124
- ;
125
- $context
126
- .on('scroll' + eventNamespace, module.event.scroll)
127
- ;
124
+ bind: {
125
+ events: function() {
126
+ module.verbose('Binding visibility events to scroll and resize');
127
+ $window
128
+ .on('resize' + eventNamespace, module.event.refresh)
129
+ ;
130
+ $context
131
+ .on('scroll' + eventNamespace, module.event.scroll)
132
+ ;
133
+ }
128
134
  },
129
135
 
130
136
  event: {
@@ -135,10 +141,14 @@ $.fn.visibility = function(parameters) {
135
141
  module.verbose('Scroll position changed');
136
142
  if(settings.throttle) {
137
143
  clearTimeout(module.timer);
138
- module.timer = setTimeout(module.checkVisibility, settings.throttle);
144
+ module.timer = setTimeout(function() {
145
+ module.checkVisibility();
146
+ }, settings.throttle);
139
147
  }
140
148
  else {
141
- requestAnimationFrame(module.checkVisibility);
149
+ requestAnimationFrame(function() {
150
+ module.checkVisibility();
151
+ });
142
152
  }
143
153
  }
144
154
  },
@@ -171,16 +181,14 @@ $.fn.visibility = function(parameters) {
171
181
  },
172
182
 
173
183
  should: {
174
-
175
184
  trackChanges: function() {
176
185
  if(methodInvoked && queryArguments.length > 0) {
177
186
  module.debug('One time query, no need to bind events');
178
187
  return false;
179
188
  }
180
- module.debug('Query is attaching callbacks, watching for changes with scroll');
189
+ module.debug('Callbacks being attached');
181
190
  return true;
182
191
  }
183
-
184
192
  },
185
193
 
186
194
  setup: {
@@ -197,6 +205,7 @@ $.fn.visibility = function(parameters) {
197
205
  ;
198
206
  if(src) {
199
207
  module.verbose('Lazy loading image', src);
208
+ settings.observeChanges = false;
200
209
  // show when top visible
201
210
  module.topVisible(function() {
202
211
  module.debug('Image top visible', element);
@@ -209,35 +218,29 @@ $.fn.visibility = function(parameters) {
209
218
  },
210
219
  fixed: function() {
211
220
  module.verbose('Setting up fixed on element pass');
212
- $module
213
- .visibility({
214
- once: false,
215
- continuous: false,
216
- onTopPassed: function() {
217
- $module
218
- .addClass(className.fixed)
219
- .css({
220
- position: 'fixed',
221
- top: settings.offset + 'px'
222
- })
223
- ;
224
- if(settings.transition) {
225
- if($.fn.transition !== undefined) {
226
- $module.transition(settings.transition, settings.duration);
227
- }
228
- }
229
- },
230
- onTopPassedReverse: function() {
231
- $module
232
- .removeClass(className.fixed)
233
- .css({
234
- position: '',
235
- top: ''
236
- })
237
- ;
221
+ settings.once = false;
222
+ settings.onTopPassed = function() {
223
+ $module
224
+ .addClass(className.fixed)
225
+ .css({
226
+ top: settings.offset + 'px'
227
+ })
228
+ ;
229
+ if(settings.transition) {
230
+ if($.fn.transition !== undefined) {
231
+ $module.transition(settings.transition, settings.duration);
238
232
  }
239
- })
240
- ;
233
+ }
234
+ };
235
+ settings.onTopPassedReverse = function() {
236
+ $module
237
+ .removeClass(className.fixed)
238
+ .css({
239
+ position: '',
240
+ top: ''
241
+ })
242
+ ;
243
+ };
241
244
  }
242
245
  },
243
246
 
@@ -272,7 +275,7 @@ $.fn.visibility = function(parameters) {
272
275
  is: {
273
276
  visible: function() {
274
277
  if(module.cache && module.cache.element) {
275
- return (module.cache.element.height > 0 && module.cache.element.width > 0);
278
+ return (module.cache.element.width > 0);
276
279
  }
277
280
  return false;
278
281
  }
@@ -296,9 +299,12 @@ $.fn.visibility = function(parameters) {
296
299
 
297
300
  checkVisibility: function() {
298
301
  module.verbose('Checking visibility of element', module.cache.element);
299
- module.save.calculations();
300
302
 
301
303
  if( module.is.visible() ) {
304
+
305
+ // update calculations derived from scroll
306
+ module.save.calculations();
307
+
302
308
  // percentage
303
309
  module.passed();
304
310
 
@@ -315,6 +321,11 @@ $.fn.visibility = function(parameters) {
315
321
  module.bottomVisible();
316
322
  module.topPassed();
317
323
  module.bottomPassed();
324
+
325
+ // on update callback
326
+ if(settings.onUpdate) {
327
+ settings.onUpdate.call(element, module.get.elementCalculations());
328
+ }
318
329
  }
319
330
  },
320
331
 
@@ -641,9 +652,6 @@ $.fn.visibility = function(parameters) {
641
652
  ;
642
653
  module.verbose('Saving element position');
643
654
  // (quicker than $.extend)
644
- element.margin = {};
645
- element.margin.top = parseInt($module.css('margin-top'), 10);
646
- element.margin.bottom = parseInt($module.css('margin-bottom'), 10);
647
655
  element.fits = (element.height < screen.height);
648
656
  element.offset = $module.offset();
649
657
  element.width = $module.outerWidth();
@@ -659,6 +667,9 @@ $.fn.visibility = function(parameters) {
659
667
  ;
660
668
  // offset
661
669
  if(settings.includeMargin) {
670
+ element.margin = {};
671
+ element.margin.top = parseInt($module.css('margin-top'), 10);
672
+ element.margin.bottom = parseInt($module.css('margin-bottom'), 10);
662
673
  element.top = element.offset.top - element.margin.top;
663
674
  element.bottom = element.offset.top + element.height + element.margin.bottom;
664
675
  }
@@ -691,16 +702,11 @@ $.fn.visibility = function(parameters) {
691
702
  },
692
703
  screenCalculations: function() {
693
704
  var
694
- scroll = $context.scrollTop() + settings.offset
705
+ scroll = module.get.scroll()
695
706
  ;
696
- if(module.cache.scroll === undefined) {
697
- module.cache.scroll = $context.scrollTop() + settings.offset;
698
- }
699
707
  module.save.direction();
700
- $.extend(module.cache.screen, {
701
- top : scroll,
702
- bottom : scroll + module.cache.screen.height
703
- });
708
+ module.cache.screen.top = scroll;
709
+ module.cache.screen.bottom = scroll + module.cache.screen.height;
704
710
  return module.cache.screen;
705
711
  },
706
712
  screenSize: function() {
@@ -957,19 +963,26 @@ $.fn.visibility.settings = {
957
963
  name : 'Visibility',
958
964
  namespace : 'visibility',
959
965
 
960
- className: {
961
- fixed: 'fixed'
962
- },
963
-
964
- observeChanges : true,
965
-
966
966
  debug : false,
967
967
  verbose : false,
968
968
  performance : true,
969
969
 
970
+ // whether to use mutation observers to follow changes
971
+ observeChanges : true,
972
+
973
+ // callback should only occur one time
974
+ once : true,
975
+
976
+ // callback should fire continuously whe evaluates to true
977
+ continuous : false,
978
+
979
+ // offset to use with scroll top
970
980
  offset : 0,
981
+
982
+ // whether to include margin in elements position
971
983
  includeMargin : false,
972
984
 
985
+ // scroll context for visibility checks
973
986
  context : window,
974
987
 
975
988
  // check position immediately on init
@@ -1002,12 +1015,13 @@ $.fn.visibility.settings = {
1002
1015
  onTopPassedReverse : false,
1003
1016
  onBottomPassedReverse : false,
1004
1017
 
1005
- once : true,
1006
- continuous : false,
1007
-
1008
1018
  // utility callbacks
1019
+ onUpdate : false, // disabled by default for performance
1009
1020
  onRefresh : function(){},
1010
- onScroll : function(){},
1021
+
1022
+ className: {
1023
+ fixed: 'fixed'
1024
+ },
1011
1025
 
1012
1026
  error : {
1013
1027
  method : 'The method you called is not defined.'
@@ -215,6 +215,9 @@ $.fn.dimmer = function(parameters) {
215
215
  : function(){}
216
216
  ;
217
217
  if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
218
+ if(settings.opacity !== 'auto') {
219
+ module.set.opacity();
220
+ }
218
221
  $dimmer
219
222
  .transition({
220
223
  animation : settings.transition + ' in',
@@ -234,6 +237,9 @@ $.fn.dimmer = function(parameters) {
234
237
  else {
235
238
  module.verbose('Showing dimmer animation with javascript');
236
239
  module.set.dimmed();
240
+ if(settings.opacity == 'auto') {
241
+ settings.opacity = 0.8;
242
+ }
237
243
  $dimmer
238
244
  .stop()
239
245
  .css({
@@ -241,7 +247,7 @@ $.fn.dimmer = function(parameters) {
241
247
  width : '100%',
242
248
  height : '100%'
243
249
  })
244
- .fadeTo(module.get.duration(), 1, function() {
250
+ .fadeTo(module.get.duration(), settings.opacity, function() {
245
251
  $dimmer.removeAttr('style');
246
252
  module.set.active();
247
253
  callback();
@@ -361,6 +367,23 @@ $.fn.dimmer = function(parameters) {
361
367
  },
362
368
 
363
369
  set: {
370
+ opacity: function(opacity) {
371
+ var
372
+ opacity = settings.opacity || opacity,
373
+ color = $dimmer.css('background-color'),
374
+ colorArray = color.split(','),
375
+ isRGBA = (colorArray && colorArray.length == 4)
376
+ ;
377
+ if(isRGBA) {
378
+ colorArray[3] = opacity + ')';
379
+ color = colorArray.join(',');
380
+ }
381
+ else {
382
+ color = 'rgba(0, 0, 0, ' + opacity + ')';
383
+ }
384
+ module.debug('Setting opacity to', opacity);
385
+ $dimmer.css('background-color', color);
386
+ },
364
387
  active: function() {
365
388
  $dimmer.addClass(className.active);
366
389
  },
@@ -583,13 +606,28 @@ $.fn.dimmer.settings = {
583
606
  verbose : true,
584
607
  performance : true,
585
608
 
609
+ // name to distinguish between multiple dimmers in context
586
610
  dimmerName : false,
611
+
612
+ // whether to add a variation type
587
613
  variation : false,
614
+
615
+ // whether to bind close events
588
616
  closable : 'auto',
589
- transition : 'fade',
617
+
618
+ // whether to use css animations
590
619
  useCSS : true,
620
+
621
+ // css animation to use
622
+ transition : 'fade',
623
+
624
+ // event to bind to
591
625
  on : false,
592
626
 
627
+ // overriding opacity value
628
+ opacity : 'auto',
629
+
630
+ // transition durations
593
631
  duration : {
594
632
  show : 500,
595
633
  hide : 500
@@ -75,25 +75,25 @@ $.fn.dropdown = function(parameters) {
75
75
  module.debug('Initializing dropdown', settings);
76
76
 
77
77
  if( module.is.alreadySetup() ) {
78
- module.error(error.alreadySetup);
78
+ module.setup.reference();
79
79
  }
80
80
  else {
81
81
  module.setup.layout();
82
- }
83
82
 
84
- module.save.defaults();
85
- module.set.selected();
83
+ module.save.defaults();
84
+ module.set.selected();
86
85
 
87
- module.create.id();
86
+ module.create.id();
88
87
 
89
- if(hasTouch) {
90
- module.bind.touchEvents();
91
- }
92
- module.bind.mouseEvents();
93
- module.bind.keyboardEvents();
88
+ if(hasTouch) {
89
+ module.bind.touchEvents();
90
+ }
91
+ module.bind.mouseEvents();
92
+ module.bind.keyboardEvents();
94
93
 
95
- module.observeChanges();
96
- module.instantiate();
94
+ module.observeChanges();
95
+ module.instantiate();
96
+ }
97
97
  },
98
98
 
99
99
  instantiate: function() {
@@ -141,9 +141,9 @@ $.fn.dropdown = function(parameters) {
141
141
 
142
142
  create: {
143
143
  id: function() {
144
- module.verbose('Creating unique id for element');
145
- id = module.get.uniqueID();
144
+ id = (Math.random().toString(16) + '000000000').substr(2,8);
146
145
  elementNamespace = '.' + id;
146
+ module.verbose('Creating unique id for element', id);
147
147
  }
148
148
  },
149
149
 
@@ -161,7 +161,6 @@ $.fn.dropdown = function(parameters) {
161
161
  },
162
162
 
163
163
  setup: {
164
-
165
164
  layout: function() {
166
165
  if( $module.is('select') ) {
167
166
  module.setup.select();
@@ -212,6 +211,21 @@ $.fn.dropdown = function(parameters) {
212
211
  ;
213
212
  }
214
213
  module.refresh();
214
+ },
215
+ reference: function() {
216
+ var
217
+ index = $allModules.index($module),
218
+ $firstModules,
219
+ $lastModules
220
+ ;
221
+ module.debug('Dropdown behavior was called on select, replacing with closest dropdown');
222
+ // replace module reference
223
+ $module = $module.parent(selector.dropdown);
224
+ module.refresh();
225
+ // adjust all modules
226
+ $firstModules = $allModules.slice(0, index);
227
+ $lastModules = $allModules.slice(index + 1);
228
+ $allModules = $firstModules.add($module).add($lastModules);
215
229
  }
216
230
  },
217
231
 
@@ -456,6 +470,7 @@ $.fn.dropdown = function(parameters) {
456
470
  ;
457
471
  if(hasSelected) {
458
472
  module.event.item.click.call($selectedItem);
473
+ module.remove.filteredItem();
459
474
  }
460
475
  },
461
476
 
@@ -822,6 +837,9 @@ $.fn.dropdown = function(parameters) {
822
837
  },
823
838
 
824
839
  get: {
840
+ id: function() {
841
+ return id;
842
+ },
825
843
  text: function() {
826
844
  return $text.text();
827
845
  },
@@ -969,9 +987,6 @@ $.fn.dropdown = function(parameters) {
969
987
  value = module.get.text();
970
988
  }
971
989
  return $selectedItem || false;
972
- },
973
- uniqueID: function() {
974
- return (Math.random().toString(16) + '000000000').substr(2,8);
975
990
  }
976
991
  },
977
992
 
@@ -1646,10 +1661,9 @@ $.fn.dropdown = function(parameters) {
1646
1661
  }
1647
1662
  })
1648
1663
  ;
1649
-
1650
1664
  return (returnedValue !== undefined)
1651
1665
  ? returnedValue
1652
- : this
1666
+ : $allModules
1653
1667
  ;
1654
1668
  };
1655
1669