less-rails-semantic_ui 1.10.4.0 → 1.11.1.0

Sign up to get free protection for your applications and to get access to all the features.
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