fomantic-ui-sass 2.8.6 → 2.8.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +6 -0
  4. data/app/assets/fonts/semantic-ui/brand-icons.eot +0 -0
  5. data/app/assets/fonts/semantic-ui/brand-icons.svg +6 -41
  6. data/app/assets/fonts/semantic-ui/brand-icons.ttf +0 -0
  7. data/app/assets/fonts/semantic-ui/brand-icons.woff +0 -0
  8. data/app/assets/fonts/semantic-ui/brand-icons.woff2 +0 -0
  9. data/app/assets/fonts/semantic-ui/icons.eot +0 -0
  10. data/app/assets/fonts/semantic-ui/icons.svg +7 -245
  11. data/app/assets/fonts/semantic-ui/icons.ttf +0 -0
  12. data/app/assets/fonts/semantic-ui/icons.woff +0 -0
  13. data/app/assets/fonts/semantic-ui/icons.woff2 +0 -0
  14. data/app/assets/fonts/semantic-ui/outline-icons.eot +0 -0
  15. data/app/assets/fonts/semantic-ui/outline-icons.svg +2 -2
  16. data/app/assets/fonts/semantic-ui/outline-icons.ttf +0 -0
  17. data/app/assets/fonts/semantic-ui/outline-icons.woff +0 -0
  18. data/app/assets/fonts/semantic-ui/outline-icons.woff2 +0 -0
  19. data/app/assets/javascripts/semantic-ui/calendar.js +153 -29
  20. data/app/assets/javascripts/semantic-ui/checkbox.js +1 -1
  21. data/app/assets/javascripts/semantic-ui/dimmer.js +11 -14
  22. data/app/assets/javascripts/semantic-ui/dropdown.js +240 -112
  23. data/app/assets/javascripts/semantic-ui/form.js +131 -67
  24. data/app/assets/javascripts/semantic-ui/modal.js +259 -16
  25. data/app/assets/javascripts/semantic-ui/nag.js +130 -64
  26. data/app/assets/javascripts/semantic-ui/popup.js +4 -4
  27. data/app/assets/javascripts/semantic-ui/progress.js +25 -31
  28. data/app/assets/javascripts/semantic-ui/search.js +15 -12
  29. data/app/assets/javascripts/semantic-ui/slider.js +57 -33
  30. data/app/assets/javascripts/semantic-ui/toast.js +26 -6
  31. data/app/assets/stylesheets/semantic-ui/collections/_breadcrumb.scss +1 -1
  32. data/app/assets/stylesheets/semantic-ui/collections/_form.scss +69 -74
  33. data/app/assets/stylesheets/semantic-ui/collections/_grid.scss +14 -7
  34. data/app/assets/stylesheets/semantic-ui/collections/_menu.scss +14 -11
  35. data/app/assets/stylesheets/semantic-ui/collections/_message.scss +52 -5
  36. data/app/assets/stylesheets/semantic-ui/collections/_table.scss +9 -5
  37. data/app/assets/stylesheets/semantic-ui/elements/_all.scss +1 -0
  38. data/app/assets/stylesheets/semantic-ui/elements/_button.scss +29 -2
  39. data/app/assets/stylesheets/semantic-ui/elements/_container.scss +3 -4
  40. data/app/assets/stylesheets/semantic-ui/elements/_divider.scss +1 -1
  41. data/app/assets/stylesheets/semantic-ui/elements/_flag.scss +1 -1
  42. data/app/assets/stylesheets/semantic-ui/elements/_header.scss +14 -9
  43. data/app/assets/stylesheets/semantic-ui/elements/_icon.scss +244 -66
  44. data/app/assets/stylesheets/semantic-ui/elements/_image.scss +34 -5
  45. data/app/assets/stylesheets/semantic-ui/elements/_input.scss +34 -33
  46. data/app/assets/stylesheets/semantic-ui/elements/_label.scss +1 -1
  47. data/app/assets/stylesheets/semantic-ui/elements/_list.scss +13 -13
  48. data/app/assets/stylesheets/semantic-ui/elements/_loader.scss +41 -37
  49. data/app/assets/stylesheets/semantic-ui/elements/_placeholder.scss +1 -1
  50. data/app/assets/stylesheets/semantic-ui/elements/_rail.scss +1 -1
  51. data/app/assets/stylesheets/semantic-ui/elements/_reveal.scss +1 -1
  52. data/app/assets/stylesheets/semantic-ui/elements/_segment.scss +40 -2
  53. data/app/assets/stylesheets/semantic-ui/elements/_step.scss +10 -10
  54. data/app/assets/stylesheets/semantic-ui/elements/_text.scss +13 -1
  55. data/app/assets/stylesheets/semantic-ui/globals/_reset.scss +2 -3
  56. data/app/assets/stylesheets/semantic-ui/globals/_site.scss +2 -2
  57. data/app/assets/stylesheets/semantic-ui/modules/_accordion.scss +1 -1
  58. data/app/assets/stylesheets/semantic-ui/modules/_calendar.scss +18 -11
  59. data/app/assets/stylesheets/semantic-ui/modules/_checkbox.scss +46 -4
  60. data/app/assets/stylesheets/semantic-ui/modules/_dimmer.scss +15 -15
  61. data/app/assets/stylesheets/semantic-ui/modules/_dropdown.scss +180 -28
  62. data/app/assets/stylesheets/semantic-ui/modules/_embed.scss +7 -7
  63. data/app/assets/stylesheets/semantic-ui/modules/_modal.scss +22 -11
  64. data/app/assets/stylesheets/semantic-ui/modules/_nag.scss +168 -16
  65. data/app/assets/stylesheets/semantic-ui/modules/_popup.scss +6 -2
  66. data/app/assets/stylesheets/semantic-ui/modules/_progress.scss +18 -10
  67. data/app/assets/stylesheets/semantic-ui/modules/_rating.scss +18 -33
  68. data/app/assets/stylesheets/semantic-ui/modules/_search.scss +1 -1
  69. data/app/assets/stylesheets/semantic-ui/modules/_shape.scss +1 -1
  70. data/app/assets/stylesheets/semantic-ui/modules/_sidebar.scss +3 -2
  71. data/app/assets/stylesheets/semantic-ui/modules/_slider.scss +11 -0
  72. data/app/assets/stylesheets/semantic-ui/modules/_sticky.scss +1 -2
  73. data/app/assets/stylesheets/semantic-ui/modules/_tab.scss +1 -1
  74. data/app/assets/stylesheets/semantic-ui/modules/_toast.scss +103 -16
  75. data/app/assets/stylesheets/semantic-ui/modules/_transition.scss +1 -1
  76. data/app/assets/stylesheets/semantic-ui/views/_ad.scss +1 -1
  77. data/app/assets/stylesheets/semantic-ui/views/_card.scss +75 -3
  78. data/app/assets/stylesheets/semantic-ui/views/_comment.scss +1 -1
  79. data/app/assets/stylesheets/semantic-ui/views/_feed.scss +6 -6
  80. data/app/assets/stylesheets/semantic-ui/views/_item.scss +1 -1
  81. data/app/assets/stylesheets/semantic-ui/views/_statistic.scss +5 -5
  82. data/lib/fomantic/ui/sass/version.rb +2 -2
  83. metadata +3 -3
@@ -42,7 +42,8 @@ $.fn.calendar = function(parameters) {
42
42
  '15': {'row': 2, 'column': 2 },
43
43
  '20': {'row': 3, 'column': 1 },
44
44
  '30': {'row': 2, 'column': 1 }
45
- }
45
+ },
46
+ numberText = ['','one','two','three','four','five','six','seven','eight']
46
47
  ;
47
48
 
48
49
  $allModules
@@ -74,7 +75,10 @@ $.fn.calendar = function(parameters) {
74
75
 
75
76
  isTouch,
76
77
  isTouchDown = false,
78
+ isInverted = $module.hasClass(className.inverted),
77
79
  focusDateUsedForRange = false,
80
+ selectionComplete = false,
81
+ classObserver,
78
82
  module
79
83
  ;
80
84
 
@@ -92,6 +96,7 @@ $.fn.calendar = function(parameters) {
92
96
  module.create.calendar();
93
97
 
94
98
  module.bind.events();
99
+ module.observeChanges();
95
100
  module.instantiate();
96
101
  },
97
102
 
@@ -105,6 +110,7 @@ $.fn.calendar = function(parameters) {
105
110
  module.verbose('Destroying previous calendar for', element);
106
111
  $module.removeData(moduleNamespace);
107
112
  module.unbind.events();
113
+ module.disconnect.classObserver();
108
114
  },
109
115
 
110
116
  setup: {
@@ -140,12 +146,19 @@ $.fn.calendar = function(parameters) {
140
146
  $container = $('<div/>').addClass(className.popup)[domPositionFunction]($activatorParent);
141
147
  }
142
148
  $container.addClass(className.calendar);
143
- var onVisible = settings.onVisible;
149
+ if(isInverted){
150
+ $container.addClass(className.inverted);
151
+ }
152
+ var onVisible = function () {
153
+ module.refreshTooltips();
154
+ return settings.onVisible.apply($container, arguments);
155
+ };
144
156
  var onHidden = settings.onHidden;
145
157
  if (!$input.length) {
146
158
  //no input, $container has to handle focus/blur
147
159
  $container.attr('tabindex', '0');
148
160
  onVisible = function () {
161
+ module.refreshTooltips();
149
162
  module.focus();
150
163
  return settings.onVisible.apply($container, arguments);
151
164
  };
@@ -157,7 +170,7 @@ $.fn.calendar = function(parameters) {
157
170
  var onShow = function () {
158
171
  //reset the focus date onShow
159
172
  module.set.focusDate(module.get.date());
160
- module.set.mode(settings.startMode);
173
+ module.set.mode(module.get.validatedMode(settings.startMode));
161
174
  return settings.onShow.apply($container, arguments);
162
175
  };
163
176
  var on = module.setting('on');
@@ -177,6 +190,7 @@ $.fn.calendar = function(parameters) {
177
190
  if ($activator.length && !settings.inline) {
178
191
  return;
179
192
  }
193
+ settings.inline = true;
180
194
  $container = $('<div/>').addClass(className.calendar).appendTo($module);
181
195
  if (!$input.length) {
182
196
  $container.attr('tabindex', '0');
@@ -186,6 +200,7 @@ $.fn.calendar = function(parameters) {
186
200
  if (settings.touchReadonly && $input.length && isTouch) {
187
201
  $input.prop('readonly', true);
188
202
  }
203
+ module.check.disabled();
189
204
  },
190
205
  date: function () {
191
206
  var date;
@@ -197,6 +212,21 @@ $.fn.calendar = function(parameters) {
197
212
  date = parser.date($input.val(), settings);
198
213
  }
199
214
  module.set.date(date, settings.formatInput, false);
215
+ module.set.mode(module.get.mode(), false);
216
+ }
217
+ },
218
+
219
+ trigger: {
220
+ change: function() {
221
+ var
222
+ inputElement = $input[0]
223
+ ;
224
+ if(inputElement) {
225
+ var events = document.createEvent('HTMLEvents');
226
+ module.verbose('Triggering native change event');
227
+ events.initEvent('change', true, false);
228
+ inputElement.dispatchEvent(events);
229
+ }
200
230
  }
201
231
  },
202
232
 
@@ -278,7 +308,10 @@ $.fn.calendar = function(parameters) {
278
308
  if (isDay && settings.showWeekNumbers){
279
309
  tempMode += ' andweek';
280
310
  }
281
- var table = $('<table/>').addClass(className.table).addClass(tempMode).appendTo(container);
311
+ var table = $('<table/>').addClass(className.table).addClass(tempMode).addClass(numberText[columns] + ' column').appendTo(container);
312
+ if(isInverted){
313
+ table.addClass(className.inverted);
314
+ }
282
315
  var textColumns = columns;
283
316
  //no header for time-only mode
284
317
  if (!isTimeOnly) {
@@ -344,27 +377,40 @@ $.fn.calendar = function(parameters) {
344
377
  cell.data(metadata.date, cellDate);
345
378
  var adjacent = isDay && cellDate.getMonth() !== ((month + 12) % 12);
346
379
  var disabled = (!settings.selectAdjacentDays && adjacent) || !module.helper.isDateInRange(cellDate, mode) || settings.isDisabled(cellDate, mode) || module.helper.isDisabled(cellDate, mode) || !module.helper.isEnabled(cellDate, mode);
380
+ var eventDate;
347
381
  if (disabled) {
348
382
  var disabledDate = module.helper.findDayAsObject(cellDate, mode, settings.disabledDates);
349
383
  if (disabledDate !== null && disabledDate[metadata.message]) {
350
384
  cell.attr("data-tooltip", disabledDate[metadata.message]);
351
- cell.attr("data-position", tooltipPosition);
385
+ cell.attr("data-position", disabledDate[metadata.position] || tooltipPosition);
386
+ if(disabledDate[metadata.inverted] || (isInverted && disabledDate[metadata.inverted] === undefined)) {
387
+ cell.attr("data-inverted", '');
388
+ }
389
+ if(disabledDate[metadata.variation]) {
390
+ cell.attr("data-variation", disabledDate[metadata.variation]);
391
+ }
352
392
  }
353
393
  } else {
354
- var eventDate = module.helper.findDayAsObject(cellDate, mode, settings.eventDates);
394
+ eventDate = module.helper.findDayAsObject(cellDate, mode, settings.eventDates);
355
395
  if (eventDate !== null) {
356
396
  cell.addClass(eventDate[metadata.class] || settings.eventClass);
357
397
  if (eventDate[metadata.message]) {
358
398
  cell.attr("data-tooltip", eventDate[metadata.message]);
359
- cell.attr("data-position", tooltipPosition);
399
+ cell.attr("data-position", eventDate[metadata.position] || tooltipPosition);
400
+ if(eventDate[metadata.inverted] || (isInverted && eventDate[metadata.inverted] === undefined)) {
401
+ cell.attr("data-inverted", '');
402
+ }
403
+ if(eventDate[metadata.variation]) {
404
+ cell.attr("data-variation", eventDate[metadata.variation]);
405
+ }
360
406
  }
361
407
  }
362
408
  }
363
409
  var active = module.helper.dateEqual(cellDate, date, mode);
364
410
  var isToday = module.helper.dateEqual(cellDate, today, mode);
365
- cell.toggleClass(className.adjacentCell, adjacent);
411
+ cell.toggleClass(className.adjacentCell, adjacent && !eventDate);
366
412
  cell.toggleClass(className.disabledCell, disabled);
367
- cell.toggleClass(className.activeCell, active && !adjacent);
413
+ cell.toggleClass(className.activeCell, active && !(adjacent && disabled));
368
414
  if (!isHour && !isMinute) {
369
415
  cell.toggleClass(className.todayCell, !adjacent && isToday);
370
416
  }
@@ -395,6 +441,10 @@ $.fn.calendar = function(parameters) {
395
441
  }
396
442
 
397
443
  module.update.focus(false, table);
444
+
445
+ if(settings.inline){
446
+ module.refreshTooltips();
447
+ }
398
448
  }
399
449
  }
400
450
  },
@@ -436,6 +486,20 @@ $.fn.calendar = function(parameters) {
436
486
  module.create.calendar();
437
487
  },
438
488
 
489
+ refreshTooltips: function() {
490
+ var winWidth = $(window).width();
491
+ $container.find('td[data-position]').each(function () {
492
+ var cell = $(this);
493
+ var tooltipWidth = window.getComputedStyle(cell[0], ':after').width.replace(/[^0-9\.]/g,'');
494
+ var tooltipPosition = cell.attr('data-position');
495
+ // use a fallback width of 250 (calendar width) for IE/Edge (which return "auto")
496
+ var calcPosition = (winWidth - cell.width() - (parseInt(tooltipWidth,10) || 250)) > cell.offset().left ? 'right' : 'left';
497
+ if(tooltipPosition.indexOf(calcPosition) === -1) {
498
+ cell.attr('data-position',tooltipPosition.replace(/(left|right)/,calcPosition));
499
+ }
500
+ });
501
+ },
502
+
439
503
  bind: {
440
504
  events: function () {
441
505
  module.debug('Binding events');
@@ -576,6 +640,57 @@ $.fn.calendar = function(parameters) {
576
640
  var text = formatter.datetime(date, settings);
577
641
  $input.val(text);
578
642
  }
643
+ if(selectionComplete){
644
+ module.trigger.change();
645
+ selectionComplete = false;
646
+ }
647
+ },
648
+ class: {
649
+ mutation: function(mutations) {
650
+ mutations.forEach(function(mutation) {
651
+ if(mutation.attributeName === "class") {
652
+ module.check.disabled();
653
+ }
654
+ });
655
+ }
656
+ }
657
+ },
658
+
659
+ observeChanges: function() {
660
+ if('MutationObserver' in window) {
661
+ classObserver = new MutationObserver(module.event.class.mutation);
662
+ module.debug('Setting up mutation observer', classObserver);
663
+ module.observe.class();
664
+ }
665
+ },
666
+
667
+ disconnect: {
668
+ classObserver: function() {
669
+ if($input.length && classObserver) {
670
+ classObserver.disconnect();
671
+ }
672
+ }
673
+ },
674
+
675
+ observe: {
676
+ class: function() {
677
+ if($input.length && classObserver) {
678
+ classObserver.observe($module[0], {
679
+ attributes : true
680
+ });
681
+ }
682
+ }
683
+ },
684
+
685
+ is: {
686
+ disabled: function() {
687
+ return $module.hasClass(className.disabled);
688
+ }
689
+ },
690
+
691
+ check: {
692
+ disabled: function(){
693
+ $input.attr('tabindex',module.is.disabled() ? -1 : 0);
579
694
  }
580
695
  },
581
696
 
@@ -622,6 +737,9 @@ $.fn.calendar = function(parameters) {
622
737
  mode: function () {
623
738
  //only returns valid modes for the current settings
624
739
  var mode = $module.data(metadata.mode) || settings.startMode;
740
+ return module.get.validatedMode(mode);
741
+ },
742
+ validatedMode: function(mode){
625
743
  var validModes = module.get.validModes();
626
744
  if ($.inArray(mode, validModes) >= 0) {
627
745
  return mode;
@@ -739,7 +857,7 @@ $.fn.calendar = function(parameters) {
739
857
  module.set.monthOffset(monthOffset, false);
740
858
  }
741
859
  }
742
- var changed = module.set.dataKeyValue(metadata.focusDate, date, refreshCalendar);
860
+ var changed = module.set.dataKeyValue(metadata.focusDate, date, !!date && refreshCalendar);
743
861
  updateFocus = (updateFocus !== false && changed && refreshCalendar === false) || focusDateUsedForRange != updateRange;
744
862
  focusDateUsedForRange = updateRange;
745
863
  if (updateFocus) {
@@ -798,15 +916,18 @@ $.fn.calendar = function(parameters) {
798
916
  (settings.type === 'year' && mode === 'year');
799
917
  if (complete) {
800
918
  var canceled = module.set.date(date) === false;
801
- if (!canceled && settings.closable) {
802
- module.popup('hide');
803
- //if this is a range calendar, focus the container or input. This will open the popup from its event listeners.
804
- var endModule = module.get.calendarModule(settings.endCalendar);
805
- if (endModule) {
806
- if (endModule.setting('on') !== 'focus') {
807
- endModule.popup('show');
919
+ if (!canceled) {
920
+ selectionComplete = true;
921
+ if(settings.closable) {
922
+ module.popup('hide');
923
+ //if this is a range calendar, focus the container or input. This will open the popup from its event listeners.
924
+ var endModule = module.get.calendarModule(settings.endCalendar);
925
+ if (endModule) {
926
+ if (endModule.setting('on') !== 'focus') {
927
+ endModule.popup('show');
928
+ }
929
+ endModule.focus();
808
930
  }
809
- endModule.focus();
810
931
  }
811
932
  }
812
933
  } else {
@@ -851,7 +972,7 @@ $.fn.calendar = function(parameters) {
851
972
 
852
973
  helper: {
853
974
  isDisabled: function(date, mode) {
854
- return (mode === 'day' || mode === 'month' || mode === 'year') && ((settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
975
+ return (mode === 'day' || mode === 'month' || mode === 'year') && ((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
855
976
  if(typeof d === 'string') {
856
977
  d = module.helper.sanitiseDate(d);
857
978
  }
@@ -953,14 +1074,11 @@ $.fn.calendar = function(parameters) {
953
1074
  return null;
954
1075
  },
955
1076
  sanitiseDate: function (date) {
956
- if (!date) {
957
- return undefined;
958
- }
959
1077
  if (!(date instanceof Date)) {
960
1078
  date = parser.date('' + date, settings);
961
1079
  }
962
- if (!date || date === null || isNaN(date.getTime())) {
963
- return undefined;
1080
+ if (!date || isNaN(date.getTime())) {
1081
+ return null;
964
1082
  }
965
1083
  return date;
966
1084
  },
@@ -1347,13 +1465,14 @@ $.fn.calendar.settings = {
1347
1465
  if (text.length === 0) {
1348
1466
  return null;
1349
1467
  }
1350
- if(text.match(/^[0-9]{4}[\/\-\.][0-9]{2}[\/\-\.][0-9]{2}$/)){
1351
- text += ' 00:00:00';
1468
+ if(text.match(/^[0-9]{4}[\/\-\.][0-9]{1,2}[\/\-\.][0-9]{1,2}$/)){
1469
+ text = text.replace(/[\/\-\.]/g,'/') + ' 00:00:00';
1352
1470
  }
1353
1471
  // Reverse date and month in some cases
1354
- text = settings.monthFirst || !text.match(/^[0-9]{2}[\/\-\.]/) ? text : text.replace(/[\/\-\.]/g,'/').replace(/([0-9]+)\/([0-9]+)/,'$2/$1');
1472
+ text = settings.monthFirst || !text.match(/^[0-9]{1,2}[\/\-\.]/) ? text : text.replace(/[\/\-\.]/g,'/').replace(/([0-9]+)\/([0-9]+)/,'$2/$1');
1355
1473
  var textDate = new Date(text);
1356
- if(!isNaN(textDate.getDate())) {
1474
+ var numberOnly = text.match(/^[0-9]+$/) !== null;
1475
+ if(!numberOnly && !isNaN(textDate.getDate())) {
1357
1476
  return textDate;
1358
1477
  }
1359
1478
  text = text.toLowerCase();
@@ -1610,6 +1729,7 @@ $.fn.calendar.settings = {
1610
1729
  grid: 'ui equal width grid',
1611
1730
  column: 'column',
1612
1731
  table: 'ui celled center aligned unstackable table',
1732
+ inverted: 'inverted',
1613
1733
  prev: 'prev link',
1614
1734
  next: 'next link',
1615
1735
  prevIcon: 'chevron left icon',
@@ -1623,7 +1743,8 @@ $.fn.calendar.settings = {
1623
1743
  rangeCell: 'range',
1624
1744
  focusCell: 'focus',
1625
1745
  todayCell: 'today',
1626
- today: 'today link'
1746
+ today: 'today link',
1747
+ disabled: 'disabled'
1627
1748
  },
1628
1749
 
1629
1750
  metadata: {
@@ -1638,6 +1759,9 @@ $.fn.calendar.settings = {
1638
1759
  monthOffset: 'monthOffset',
1639
1760
  message: 'message',
1640
1761
  class: 'class',
1762
+ inverted: 'inverted',
1763
+ variation: 'variation',
1764
+ position: 'position',
1641
1765
  month: 'month',
1642
1766
  year: 'year'
1643
1767
  },
@@ -556,10 +556,10 @@ $.fn.checkbox = function(parameters) {
556
556
  trigger: {
557
557
  change: function() {
558
558
  var
559
- events = document.createEvent('HTMLEvents'),
560
559
  inputElement = $input[0]
561
560
  ;
562
561
  if(inputElement) {
562
+ var events = document.createEvent('HTMLEvents');
563
563
  module.verbose('Triggering native change event');
564
564
  events.initEvent('change', true, false);
565
565
  inputElement.dispatchEvent(events);
@@ -155,7 +155,7 @@ $.fn.dimmer = function(parameters) {
155
155
 
156
156
  event: {
157
157
  click: function(event) {
158
- module.verbose('Determining if event occured on dimmer', event);
158
+ module.verbose('Determining if event occurred on dimmer', event);
159
159
  if( $dimmer.find(event.target).length === 0 || $(event.target).is(selector.content) ) {
160
160
  module.hide();
161
161
  event.stopImmediatePropagation();
@@ -255,7 +255,7 @@ $.fn.dimmer = function(parameters) {
255
255
  displayType : settings.useFlex
256
256
  ? 'flex'
257
257
  : 'block',
258
- animation : settings.transition + ' in',
258
+ animation : (settings.transition.showMethod || settings.transition) + ' in',
259
259
  queue : false,
260
260
  duration : module.get.duration(),
261
261
  useFailSafe : true,
@@ -302,7 +302,7 @@ $.fn.dimmer = function(parameters) {
302
302
  displayType : settings.useFlex
303
303
  ? 'flex'
304
304
  : 'block',
305
- animation : settings.transition + ' out',
305
+ animation : (settings.transition.hideMethod || settings.transition) + ' out',
306
306
  queue : false,
307
307
  duration : module.get.duration(),
308
308
  useFailSafe : true,
@@ -335,15 +335,12 @@ $.fn.dimmer = function(parameters) {
335
335
  return $dimmer;
336
336
  },
337
337
  duration: function() {
338
- if(typeof settings.duration == 'object') {
339
- if( module.is.active() ) {
340
- return settings.duration.hide;
341
- }
342
- else {
343
- return settings.duration.show;
344
- }
338
+ if( module.is.active() ) {
339
+ return settings.transition.hideDuration || settings.duration.hide || settings.duration;
340
+ }
341
+ else {
342
+ return settings.transition.showDuration || settings.duration.show || settings.duration;
345
343
  }
346
- return settings.duration;
347
344
  }
348
345
  },
349
346
 
@@ -408,11 +405,11 @@ $.fn.dimmer = function(parameters) {
408
405
  var
409
406
  color = $dimmer.css('background-color'),
410
407
  colorArray = color.split(','),
411
- isRGB = (colorArray && colorArray.length == 3),
412
- isRGBA = (colorArray && colorArray.length == 4)
408
+ isRGB = (colorArray && colorArray.length >= 3)
413
409
  ;
414
410
  opacity = settings.opacity === 0 ? 0 : settings.opacity || opacity;
415
- if(isRGB || isRGBA) {
411
+ if(isRGB) {
412
+ colorArray[2] = colorArray[2].replace(')','');
416
413
  colorArray[3] = opacity + ')';
417
414
  color = colorArray.join(',');
418
415
  }