less-rails-semantic_ui 2.2.10.0 → 2.2.11.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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/assets/fonts/semantic_ui/themes/material/assets/fonts/icons.woff2 +0 -0
  3. data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +119 -19
  4. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +108 -50
  5. data/assets/javascripts/semantic_ui/definitions/modules/modal.js +41 -16
  6. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +42 -31
  7. data/assets/javascripts/semantic_ui/definitions/modules/search.js +11 -2
  8. data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +1 -4
  9. data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +22 -5
  10. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +43 -43
  11. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +8 -0
  12. data/assets/stylesheets/semantic_ui/definitions/collections/message.less +3 -0
  13. data/assets/stylesheets/semantic_ui/definitions/collections/table.less +1 -1
  14. data/assets/stylesheets/semantic_ui/definitions/elements/icon.less +24 -0
  15. data/assets/stylesheets/semantic_ui/definitions/elements/input.less +3 -2
  16. data/assets/stylesheets/semantic_ui/definitions/elements/segment.less +13 -13
  17. data/assets/stylesheets/semantic_ui/definitions/elements/step.less +34 -34
  18. data/assets/stylesheets/semantic_ui/definitions/globals/site.less +44 -3
  19. data/assets/stylesheets/semantic_ui/definitions/modules/dimmer.less +18 -1
  20. data/assets/stylesheets/semantic_ui/definitions/modules/dropdown.less +63 -30
  21. data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +81 -0
  22. data/assets/stylesheets/semantic_ui/definitions/modules/sidebar.less +0 -10
  23. data/assets/stylesheets/semantic_ui/themes/default/globals/reset.overrides +216 -198
  24. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +24 -0
  25. data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.variables +7 -5
  26. data/assets/stylesheets/semantic_ui/themes/default/modules/modal.variables +32 -1
  27. data/lib/generators/semantic_ui/install/templates/config/collections/menu.overrides +1 -1
  28. data/lib/less/rails/semantic_ui/version.rb +1 -1
  29. metadata +8 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08df91afbcace73d4d525451230e0b04253110b8
4
- data.tar.gz: ceda9e1abca9907d0f51f0c7480d7cf4bef7998e
3
+ metadata.gz: d477837a7be01ca7239764a19594ac8d1194f963
4
+ data.tar.gz: c6c168faa6f43180f91e61884c9ae231adcc6301
5
5
  SHA512:
6
- metadata.gz: edf25b6c49961c9557ecca954511e56f9faa19576578c445ba5d2b306d8bfcaa077cb4ff41f22f5a6110628b7dd350c8892a48ca033ac0a6748c637423ee279c
7
- data.tar.gz: 88df52239d9c81b2ca763fca5604500d77ecea28b8d2e7643cb8de3b1a2c091cc3c32a25105e1929c757fbdc92c50e7b460e827e2fa32020a16d624fd242b2e1
6
+ metadata.gz: a9721ac19d26e54823071fdf0bb52d343c3f3239910b526377747b3bf168ac8a2fe79573e5c7f6629e79d0f1340efb159ecd6b9ed8bdea02437bef32eafc9a4a
7
+ data.tar.gz: a267be9c25cb2db24cbea2d452d8da9b1b25ddf0593ec6275e1de83f3fd90673007a3e43bde4e2dc74dafa8e6d289ddb270ed7f7e3ab76a7353f154d96e3715c
@@ -252,6 +252,17 @@ $.fn.form = function(parameters) {
252
252
  bracketedRule: function(rule) {
253
253
  return (rule.type && rule.type.match(settings.regExp.bracket));
254
254
  },
255
+ shorthandFields: function(fields) {
256
+ var
257
+ fieldKeys = Object.keys(fields),
258
+ firstRule = fields[fieldKeys[0]]
259
+ ;
260
+ return module.is.shorthandRules(firstRule);
261
+ },
262
+ // duck type rule test
263
+ shorthandRules: function(rules) {
264
+ return (typeof rules == 'string' || $.isArray(rules));
265
+ },
255
266
  empty: function($field) {
256
267
  if(!$field || $field.length === 0) {
257
268
  return true;
@@ -403,6 +414,23 @@ $.fn.form = function(parameters) {
403
414
  : 'keyup'
404
415
  ;
405
416
  },
417
+ fieldsFromShorthand: function(fields) {
418
+ var
419
+ fullFields = {}
420
+ ;
421
+ $.each(fields, function(name, rules) {
422
+ if(typeof rules == 'string') {
423
+ rules = [rules];
424
+ }
425
+ fullFields[name] = {
426
+ rules: []
427
+ };
428
+ $.each(rules, function(index, rule) {
429
+ fullFields[name].rules.push({ type: rule });
430
+ });
431
+ });
432
+ return fullFields;
433
+ },
406
434
  prompt: function(rule, field) {
407
435
  var
408
436
  ruleName = module.get.ruleName(rule),
@@ -453,23 +481,9 @@ $.fn.form = function(parameters) {
453
481
  }
454
482
  else {
455
483
  // 2.x
456
- if(parameters.fields) {
457
- ruleKeys = Object.keys(parameters.fields);
458
- if( typeof parameters.fields[ruleKeys[0]] == 'string' || $.isArray(parameters.fields[ruleKeys[0]]) ) {
459
- $.each(parameters.fields, function(name, rules) {
460
- if(typeof rules == 'string') {
461
- rules = [rules];
462
- }
463
- parameters.fields[name] = {
464
- rules: []
465
- };
466
- $.each(rules, function(index, rule) {
467
- parameters.fields[name].rules.push({ type: rule });
468
- });
469
- });
470
- }
484
+ if(parameters.fields && module.is.shorthandFields(parameters.fields)) {
485
+ parameters.fields = module.get.fieldsFromShorthand(parameters.fields);
471
486
  }
472
-
473
487
  settings = $.extend(true, {}, $.fn.form.settings, parameters);
474
488
  validation = $.extend({}, $.fn.form.settings.defaults, settings.fields);
475
489
  module.verbose('Extending settings', validation, settings);
@@ -589,8 +603,11 @@ $.fn.form = function(parameters) {
589
603
  }
590
604
  else {
591
605
  if(isRadio) {
592
- if(isChecked) {
593
- values[name] = value;
606
+ if(values[name] === undefined) {
607
+ values[name] = (isChecked)
608
+ ? true
609
+ : false
610
+ ;
594
611
  }
595
612
  }
596
613
  else if(isCheckbox) {
@@ -641,6 +658,44 @@ $.fn.form = function(parameters) {
641
658
  },
642
659
 
643
660
  add: {
661
+ // alias
662
+ rule: function(name, rules) {
663
+ module.add.field(name, rules);
664
+ },
665
+ field: function(name, rules) {
666
+ var
667
+ newValidation = {}
668
+ ;
669
+ if(module.is.shorthandRules(rules)) {
670
+ rules = $.isArray(rules)
671
+ ? rules
672
+ : [rules]
673
+ ;
674
+ newValidation[name] = {
675
+ rules: []
676
+ };
677
+ $.each(rules, function(index, rule) {
678
+ newValidation[name].rules.push({ type: rule });
679
+ });
680
+ }
681
+ else {
682
+ newValidation[name] = rules;
683
+ }
684
+ validation = $.extend({}, validation, newValidation);
685
+ module.debug('Adding rules', newValidation, validation);
686
+ },
687
+ fields: function(fields) {
688
+ var
689
+ newValidation
690
+ ;
691
+ if(fields && module.is.shorthandFields(fields)) {
692
+ newValidation = module.get.fieldsFromShorthand(fields);
693
+ }
694
+ else {
695
+ newValidation = fields;
696
+ }
697
+ validation = $.extend({}, validation, newValidation);
698
+ },
644
699
  prompt: function(identifier, errors) {
645
700
  var
646
701
  $field = module.get.field(identifier),
@@ -693,6 +748,51 @@ $.fn.form = function(parameters) {
693
748
  },
694
749
 
695
750
  remove: {
751
+ rule: function(field, rule) {
752
+ var
753
+ rules = $.isArray(rule)
754
+ ? rule
755
+ : [rule]
756
+ ;
757
+ if(rule == undefined) {
758
+ module.debug('Removed all rules');
759
+ validation[field].rules = [];
760
+ return;
761
+ }
762
+ if(validation[field] == undefined || !$.isArray(validation[field].rules)) {
763
+ return;
764
+ }
765
+ $.each(validation[field].rules, function(index, rule) {
766
+ if(rules.indexOf(rule.type) !== -1) {
767
+ module.debug('Removed rule', rule.type);
768
+ validation[field].rules.splice(index, 1);
769
+ }
770
+ });
771
+ },
772
+ field: function(field) {
773
+ var
774
+ fields = $.isArray(field)
775
+ ? field
776
+ : [field]
777
+ ;
778
+ $.each(fields, function(index, field) {
779
+ module.remove.rule(field);
780
+ });
781
+ },
782
+ // alias
783
+ rules: function(field, rules) {
784
+ if($.isArray(field)) {
785
+ $.each(fields, function(index, field) {
786
+ module.remove.rule(field, rules);
787
+ });
788
+ }
789
+ else {
790
+ module.remove.rule(field, rules);
791
+ }
792
+ },
793
+ fields: function(fields) {
794
+ module.remove.field(fields);
795
+ },
696
796
  prompt: function(identifier) {
697
797
  var
698
798
  $field = module.get.field(identifier),
@@ -857,7 +957,7 @@ $.fn.form = function(parameters) {
857
957
  if(typeof field == 'string') {
858
958
  module.verbose('Validating field', field);
859
959
  fieldName = field;
860
- field = validation[field];
960
+ field = validation[field];
861
961
  }
862
962
  var
863
963
  identifier = field.identifier || fieldName,
@@ -677,7 +677,9 @@ $.fn.dropdown = function(parameters) {
677
677
  if(module.is.multiple()) {
678
678
  module.filterActive();
679
679
  }
680
- module.select.firstUnfiltered();
680
+ if(query || (!query && module.get.activeItem().length == 0)) {
681
+ module.select.firstUnfiltered();
682
+ }
681
683
  if( module.has.allResultsFiltered() ) {
682
684
  if( settings.onNoResults.call(element, searchTerm) ) {
683
685
  if(settings.allowAdditions) {
@@ -1468,7 +1470,6 @@ $.fn.dropdown = function(parameters) {
1468
1470
  // down arrow (open menu)
1469
1471
  if(pressedKey == keys.downArrow && !module.is.visible()) {
1470
1472
  module.verbose('Down key pressed, showing dropdown');
1471
- module.select.firstUnfiltered();
1472
1473
  module.show();
1473
1474
  event.preventDefault();
1474
1475
  }
@@ -2367,21 +2368,31 @@ $.fn.dropdown = function(parameters) {
2367
2368
  },
2368
2369
  direction: function($menu) {
2369
2370
  if(settings.direction == 'auto') {
2370
- if(module.is.onScreen($menu)) {
2371
+ // reset position
2372
+ module.remove.upward();
2373
+
2374
+ if(module.can.openDownward($menu)) {
2371
2375
  module.remove.upward($menu);
2372
2376
  }
2373
2377
  else {
2374
2378
  module.set.upward($menu);
2375
2379
  }
2380
+ if(!module.is.leftward($menu) && !module.can.openRightward($menu)) {
2381
+ module.set.leftward($menu);
2382
+ }
2376
2383
  }
2377
2384
  else if(settings.direction == 'upward') {
2378
2385
  module.set.upward($menu);
2379
2386
  }
2380
2387
  },
2381
- upward: function($menu) {
2382
- var $element = $menu || $module;
2388
+ upward: function($currentMenu) {
2389
+ var $element = $currentMenu || $module;
2383
2390
  $element.addClass(className.upward);
2384
2391
  },
2392
+ leftward: function($currentMenu) {
2393
+ var $element = $currentMenu || $menu;
2394
+ $element.addClass(className.leftward);
2395
+ },
2385
2396
  value: function(value, text, $selected) {
2386
2397
  var
2387
2398
  escapedValue = module.escape.value(value),
@@ -2729,10 +2740,14 @@ $.fn.dropdown = function(parameters) {
2729
2740
  initialLoad: function() {
2730
2741
  initialLoad = false;
2731
2742
  },
2732
- upward: function($menu) {
2733
- var $element = $menu || $module;
2743
+ upward: function($currentMenu) {
2744
+ var $element = $currentMenu || $module;
2734
2745
  $element.removeClass(className.upward);
2735
2746
  },
2747
+ leftward: function($currentMenu) {
2748
+ var $element = $currentMenu || $menu;
2749
+ $element.removeClass(className.leftward);
2750
+ },
2736
2751
  visible: function() {
2737
2752
  $module.removeClass(className.visible);
2738
2753
  },
@@ -3037,6 +3052,10 @@ $.fn.dropdown = function(parameters) {
3037
3052
  : $menu.transition && $menu.transition('is animating')
3038
3053
  ;
3039
3054
  },
3055
+ leftward: function($subMenu) {
3056
+ var $selectedMenu = $subMenu || $menu;
3057
+ return $selectedMenu.hasClass(className.leftward);
3058
+ },
3040
3059
  disabled: function() {
3041
3060
  return $module.hasClass(className.disabled);
3042
3061
  },
@@ -3055,46 +3074,6 @@ $.fn.dropdown = function(parameters) {
3055
3074
  initialLoad: function() {
3056
3075
  return initialLoad;
3057
3076
  },
3058
- onScreen: function($subMenu) {
3059
- var
3060
- $currentMenu = $subMenu || $menu,
3061
- canOpenDownward = true,
3062
- onScreen = {},
3063
- calculations
3064
- ;
3065
- $currentMenu.addClass(className.loading);
3066
- calculations = {
3067
- context: {
3068
- scrollTop : $context.scrollTop(),
3069
- height : $context.outerHeight()
3070
- },
3071
- menu : {
3072
- offset: $currentMenu.offset(),
3073
- height: $currentMenu.outerHeight()
3074
- }
3075
- };
3076
- if(module.is.verticallyScrollableContext()) {
3077
- calculations.menu.offset.top += calculations.context.scrollTop;
3078
- }
3079
- onScreen = {
3080
- above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.menu.height,
3081
- below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top + calculations.menu.height
3082
- };
3083
- if(onScreen.below) {
3084
- module.verbose('Dropdown can fit in context downward', onScreen);
3085
- canOpenDownward = true;
3086
- }
3087
- else if(!onScreen.below && !onScreen.above) {
3088
- module.verbose('Dropdown cannot fit in either direction, favoring downward', onScreen);
3089
- canOpenDownward = true;
3090
- }
3091
- else {
3092
- module.verbose('Dropdown cannot fit below, opening upward', onScreen);
3093
- canOpenDownward = false;
3094
- }
3095
- $currentMenu.removeClass(className.loading);
3096
- return canOpenDownward;
3097
- },
3098
3077
  inObject: function(needle, object) {
3099
3078
  var
3100
3079
  found = false
@@ -3157,6 +3136,14 @@ $.fn.dropdown = function(parameters) {
3157
3136
  : false
3158
3137
  ;
3159
3138
  return (overflowY == 'auto' || overflowY == 'scroll');
3139
+ },
3140
+ horizontallyScrollableContext: function() {
3141
+ var
3142
+ overflowX = ($context.get(0) !== window)
3143
+ ? $context.css('overflow-X')
3144
+ : false
3145
+ ;
3146
+ return (overflowX == 'auto' || overflowX == 'scroll');
3160
3147
  }
3161
3148
  },
3162
3149
 
@@ -3173,6 +3160,79 @@ $.fn.dropdown = function(parameters) {
3173
3160
  }
3174
3161
  return false;
3175
3162
  },
3163
+ openDownward: function($subMenu) {
3164
+ var
3165
+ $currentMenu = $subMenu || $menu,
3166
+ canOpenDownward = true,
3167
+ onScreen = {},
3168
+ calculations
3169
+ ;
3170
+ $currentMenu
3171
+ .addClass(className.loading)
3172
+ ;
3173
+ calculations = {
3174
+ context: {
3175
+ scrollTop : $context.scrollTop(),
3176
+ height : $context.outerHeight()
3177
+ },
3178
+ menu : {
3179
+ offset: $currentMenu.offset(),
3180
+ height: $currentMenu.outerHeight()
3181
+ }
3182
+ };
3183
+ if(module.is.verticallyScrollableContext()) {
3184
+ calculations.menu.offset.top += calculations.context.scrollTop;
3185
+ }
3186
+ onScreen = {
3187
+ above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.menu.height,
3188
+ below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top + calculations.menu.height
3189
+ };
3190
+ if(onScreen.below) {
3191
+ module.verbose('Dropdown can fit in context downward', onScreen);
3192
+ canOpenDownward = true;
3193
+ }
3194
+ else if(!onScreen.below && !onScreen.above) {
3195
+ module.verbose('Dropdown cannot fit in either direction, favoring downward', onScreen);
3196
+ canOpenDownward = true;
3197
+ }
3198
+ else {
3199
+ module.verbose('Dropdown cannot fit below, opening upward', onScreen);
3200
+ canOpenDownward = false;
3201
+ }
3202
+ $currentMenu.removeClass(className.loading);
3203
+ return canOpenDownward;
3204
+ },
3205
+ openRightward: function($subMenu) {
3206
+ var
3207
+ $currentMenu = $subMenu || $menu,
3208
+ canOpenRightward = true,
3209
+ isOffscreenRight = false,
3210
+ calculations
3211
+ ;
3212
+ $currentMenu
3213
+ .addClass(className.loading)
3214
+ ;
3215
+ calculations = {
3216
+ context: {
3217
+ scrollLeft : $context.scrollLeft(),
3218
+ width : $context.outerWidth()
3219
+ },
3220
+ menu: {
3221
+ offset : $currentMenu.offset(),
3222
+ width : $currentMenu.outerWidth()
3223
+ }
3224
+ };
3225
+ if(module.is.horizontallyScrollableContext()) {
3226
+ calculations.menu.offset.left += calculations.context.scrollLeft;
3227
+ }
3228
+ isOffscreenRight = (calculations.menu.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
3229
+ if(isOffscreenRight) {
3230
+ module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
3231
+ canOpenRightward = false;
3232
+ }
3233
+ $currentMenu.removeClass(className.loading);
3234
+ return canOpenRightward;
3235
+ },
3176
3236
  click: function() {
3177
3237
  return (hasTouch || settings.on == 'click');
3178
3238
  },
@@ -3274,9 +3334,6 @@ $.fn.dropdown = function(parameters) {
3274
3334
  queue : true,
3275
3335
  onStart : start,
3276
3336
  onComplete : function() {
3277
- if(settings.direction == 'auto') {
3278
- module.remove.upward($subMenu);
3279
- }
3280
3337
  callback.call(element);
3281
3338
  }
3282
3339
  })
@@ -3706,6 +3763,7 @@ $.fn.dropdown.settings = {
3706
3763
  selected : 'selected',
3707
3764
  selection : 'selection',
3708
3765
  upward : 'upward',
3766
+ leftward : 'left',
3709
3767
  visible : 'visible'
3710
3768
  }
3711
3769
 
@@ -108,25 +108,15 @@ $.fn.modal = function(parameters) {
108
108
  var
109
109
  defaultSettings = {
110
110
  debug : settings.debug,
111
- dimmerName : 'modals',
112
- duration : {
113
- show : settings.duration,
114
- hide : settings.duration
115
- }
111
+ dimmerName : 'modals'
116
112
  },
117
113
  dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)
118
114
  ;
119
- if(settings.inverted) {
120
- dimmerSettings.variation = (dimmerSettings.variation !== undefined)
121
- ? dimmerSettings.variation + ' inverted'
122
- : 'inverted'
123
- ;
124
- }
125
115
  if($.fn.dimmer === undefined) {
126
116
  module.error(error.dimmer);
127
117
  return;
128
118
  }
129
- module.debug('Creating dimmer with settings', dimmerSettings);
119
+ module.debug('Creating dimmer');
130
120
  $dimmable = $context.dimmer(dimmerSettings);
131
121
  if(settings.detachable) {
132
122
  module.verbose('Modal is detachable, moving content into dimmer');
@@ -135,9 +125,6 @@ $.fn.modal = function(parameters) {
135
125
  else {
136
126
  module.set.undetached();
137
127
  }
138
- if(settings.blurring) {
139
- $dimmable.addClass(className.blurring);
140
- }
141
128
  $dimmer = $dimmable.dimmer('get dimmer');
142
129
  },
143
130
  id: function() {
@@ -290,7 +277,7 @@ $.fn.modal = function(parameters) {
290
277
  }
291
278
  },
292
279
  resize: function() {
293
- if( $dimmable.dimmer('is active') ) {
280
+ if( $dimmable.dimmer('is active') && ( module.is.animating() || module.is.active() ) ) {
294
281
  requestAnimationFrame(module.refresh);
295
282
  }
296
283
  }
@@ -311,6 +298,7 @@ $.fn.modal = function(parameters) {
311
298
  : function(){}
312
299
  ;
313
300
  module.refreshModals();
301
+ module.set.dimmerSettings();
314
302
  module.showModal(callback);
315
303
  },
316
304
 
@@ -604,6 +592,42 @@ $.fn.modal = function(parameters) {
604
592
  ;
605
593
  }
606
594
  },
595
+ dimmerSettings: function() {
596
+ if($.fn.dimmer === undefined) {
597
+ module.error(error.dimmer);
598
+ return;
599
+ }
600
+ var
601
+ defaultSettings = {
602
+ debug : settings.debug,
603
+ dimmerName : 'modals',
604
+ variation : false,
605
+ closable : 'auto',
606
+ duration : {
607
+ show : settings.duration,
608
+ hide : settings.duration
609
+ }
610
+ },
611
+ dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)
612
+ ;
613
+ if(settings.inverted) {
614
+ dimmerSettings.variation = (dimmerSettings.variation !== undefined)
615
+ ? dimmerSettings.variation + ' inverted'
616
+ : 'inverted'
617
+ ;
618
+ $dimmer.addClass(className.inverted);
619
+ }
620
+ else {
621
+ $dimmer.removeClass(className.inverted);
622
+ }
623
+ if(settings.blurring) {
624
+ $dimmable.addClass(className.blurring);
625
+ }
626
+ else {
627
+ $dimmable.removeClass(className.blurring);
628
+ }
629
+ $context.dimmer('setting', dimmerSettings);
630
+ },
607
631
  screenHeight: function() {
608
632
  if( module.can.fit() ) {
609
633
  $body.css('height', '');
@@ -912,6 +936,7 @@ $.fn.modal.settings = {
912
936
  active : 'active',
913
937
  animating : 'animating',
914
938
  blurring : 'blurring',
939
+ inverted : 'inverted',
915
940
  scrolling : 'scrolling',
916
941
  undetached : 'undetached'
917
942
  }