less-rails-semantic_ui 2.2.13.0 → 2.3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.eot +0 -0
- data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.svg +946 -2670
- data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.ttf +0 -0
- data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.woff +0 -0
- data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.woff2 +0 -0
- data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +7 -7
- data/assets/javascripts/semantic_ui/definitions/behaviors/visibility.js +2 -2
- data/assets/javascripts/semantic_ui/definitions/modules/accordion.js +5 -2
- data/assets/javascripts/semantic_ui/definitions/modules/dimmer.js +2 -0
- data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +48 -10
- data/assets/javascripts/semantic_ui/definitions/modules/modal.js +34 -42
- data/assets/javascripts/semantic_ui/definitions/modules/popup.js +49 -12
- data/assets/javascripts/semantic_ui/definitions/modules/search.js +71 -18
- data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +9 -0
- data/assets/stylesheets/semantic_ui/definitions/collections/table.less +7 -2
- data/assets/stylesheets/semantic_ui/definitions/elements/button.less +1 -1
- data/assets/stylesheets/semantic_ui/definitions/elements/header.less +1 -1
- data/assets/stylesheets/semantic_ui/definitions/elements/icon.less +2 -2
- data/assets/stylesheets/semantic_ui/definitions/elements/image.less +4 -0
- data/assets/stylesheets/semantic_ui/definitions/elements/input.less +35 -35
- data/assets/stylesheets/semantic_ui/definitions/elements/label.less +1 -0
- data/assets/stylesheets/semantic_ui/definitions/elements/list.less +14 -14
- data/assets/stylesheets/semantic_ui/definitions/elements/reveal.less +8 -0
- data/assets/stylesheets/semantic_ui/definitions/globals/site.less +1 -0
- data/assets/stylesheets/semantic_ui/definitions/modules/dimmer.less +22 -9
- data/assets/stylesheets/semantic_ui/definitions/modules/dropdown.less +1 -1
- data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +16 -21
- data/assets/stylesheets/semantic_ui/definitions/modules/popup.less +1 -1
- data/assets/stylesheets/semantic_ui/definitions/modules/rating.less +1 -1
- data/assets/stylesheets/semantic_ui/definitions/modules/search.less +34 -17
- data/assets/stylesheets/semantic_ui/themes/default/collections/breadcrumb.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/collections/form.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +20 -20
- data/assets/stylesheets/semantic_ui/themes/default/collections/message.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/collections/table.variables +7 -6
- data/assets/stylesheets/semantic_ui/themes/default/elements/button.variables +4 -4
- data/assets/stylesheets/semantic_ui/themes/default/elements/divider.variables +2 -2
- data/assets/stylesheets/semantic_ui/themes/default/elements/flag.overrides +4 -0
- data/assets/stylesheets/semantic_ui/themes/default/elements/header.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/elements/icon.overrides +1263 -879
- data/assets/stylesheets/semantic_ui/themes/default/elements/label.variables +3 -3
- data/assets/stylesheets/semantic_ui/themes/default/elements/list.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/elements/reveal.variables +2 -1
- data/assets/stylesheets/semantic_ui/themes/default/elements/step.variables +3 -3
- data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +7 -2
- data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.overrides +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/modules/checkbox.variables +2 -2
- data/assets/stylesheets/semantic_ui/themes/default/modules/dimmer.variables +2 -5
- data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.variables +6 -6
- data/assets/stylesheets/semantic_ui/themes/default/modules/modal.variables +33 -29
- data/assets/stylesheets/semantic_ui/themes/default/modules/popup.variables +4 -3
- data/assets/stylesheets/semantic_ui/themes/default/modules/progress.variables +2 -2
- data/assets/stylesheets/semantic_ui/themes/default/modules/search.variables +8 -5
- data/assets/stylesheets/semantic_ui/themes/default/modules/transition.overrides +54 -2
- data/assets/stylesheets/semantic_ui/themes/default/views/ad.variables +2 -2
- data/assets/stylesheets/semantic_ui/themes/default/views/card.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/views/comment.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/views/feed.variables +4 -4
- data/assets/stylesheets/semantic_ui/themes/default/views/item.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/views/statistic.variables +4 -4
- data/lib/less/rails/semantic_ui/version.rb +1 -1
- metadata +4 -3
Binary file
|
Binary file
|
Binary file
|
@@ -358,7 +358,7 @@ $.fn.form = function(parameters) {
|
|
358
358
|
module.validate.field( validationRules );
|
359
359
|
}
|
360
360
|
}
|
361
|
-
else if(settings.on == 'blur'
|
361
|
+
else if(settings.on == 'blur') {
|
362
362
|
if(validationRules) {
|
363
363
|
module.validate.field( validationRules );
|
364
364
|
}
|
@@ -603,9 +603,9 @@ $.fn.form = function(parameters) {
|
|
603
603
|
}
|
604
604
|
else {
|
605
605
|
if(isRadio) {
|
606
|
-
if(values[name] === undefined) {
|
606
|
+
if(values[name] === undefined || values[name] == false) {
|
607
607
|
values[name] = (isChecked)
|
608
|
-
? true
|
608
|
+
? value || true
|
609
609
|
: false
|
610
610
|
;
|
611
611
|
}
|
@@ -1263,10 +1263,10 @@ $.fn.form.settings = {
|
|
1263
1263
|
isExactly : '{name} must be exactly "{ruleValue}"',
|
1264
1264
|
not : '{name} cannot be set to "{ruleValue}"',
|
1265
1265
|
notExactly : '{name} cannot be set to exactly "{ruleValue}"',
|
1266
|
-
contain : '{name}
|
1267
|
-
containExactly : '{name}
|
1268
|
-
doesntContain : '{name}
|
1269
|
-
doesntContainExactly : '{name}
|
1266
|
+
contain : '{name} must contain "{ruleValue}"',
|
1267
|
+
containExactly : '{name} must contain exactly "{ruleValue}"',
|
1268
|
+
doesntContain : '{name} cannot contain "{ruleValue}"',
|
1269
|
+
doesntContainExactly : '{name} cannot contain exactly "{ruleValue}"',
|
1270
1270
|
minLength : '{name} must be at least {ruleValue} characters',
|
1271
1271
|
length : '{name} must be at least {ruleValue} characters',
|
1272
1272
|
exactLength : '{name} must be exactly {ruleValue} characters',
|
@@ -927,8 +927,8 @@ $.fn.visibility = function(parameters) {
|
|
927
927
|
// visibility
|
928
928
|
element.topPassed = (screen.top >= element.top);
|
929
929
|
element.bottomPassed = (screen.top >= element.bottom);
|
930
|
-
element.topVisible = (screen.bottom >= element.top) && !element.
|
931
|
-
element.bottomVisible = (screen.bottom >= element.bottom) && !element.
|
930
|
+
element.topVisible = (screen.bottom >= element.top) && !element.topPassed;
|
931
|
+
element.bottomVisible = (screen.bottom >= element.bottom) && !element.bottomPassed;
|
932
932
|
element.pixelsPassed = 0;
|
933
933
|
element.percentagePassed = 0;
|
934
934
|
|
@@ -169,6 +169,7 @@ $.fn.accordion = function(parameters) {
|
|
169
169
|
}
|
170
170
|
module.debug('Opening accordion content', $activeTitle);
|
171
171
|
settings.onOpening.call($activeContent);
|
172
|
+
settings.onChanging.call($activeContent);
|
172
173
|
if(settings.exclusive) {
|
173
174
|
module.closeOthers.call($activeTitle);
|
174
175
|
}
|
@@ -232,6 +233,7 @@ $.fn.accordion = function(parameters) {
|
|
232
233
|
if((isActive || isOpening) && !isClosing) {
|
233
234
|
module.debug('Closing accordion content', $activeContent);
|
234
235
|
settings.onClosing.call($activeContent);
|
236
|
+
settings.onChanging.call($activeContent);
|
235
237
|
$activeTitle
|
236
238
|
.removeClass(className.active)
|
237
239
|
;
|
@@ -574,10 +576,11 @@ $.fn.accordion.settings = {
|
|
574
576
|
duration : 350, // duration of animation
|
575
577
|
easing : 'easeOutQuad', // easing equation for animation
|
576
578
|
|
577
|
-
|
578
579
|
onOpening : function(){}, // callback before open animation
|
579
|
-
onOpen : function(){}, // callback after open animation
|
580
580
|
onClosing : function(){}, // callback before closing animation
|
581
|
+
onChanging : function(){}, // callback before closing or opening animation
|
582
|
+
|
583
|
+
onOpen : function(){}, // callback after open animation
|
581
584
|
onClose : function(){}, // callback after closing animation
|
582
585
|
onChange : function(){}, // callback after closing or opening animation
|
583
586
|
|
@@ -238,6 +238,7 @@ $.fn.dimmer = function(parameters) {
|
|
238
238
|
}
|
239
239
|
$dimmer
|
240
240
|
.transition({
|
241
|
+
displayType : 'flex',
|
241
242
|
animation : settings.transition + ' in',
|
242
243
|
queue : false,
|
243
244
|
duration : module.get.duration(),
|
@@ -282,6 +283,7 @@ $.fn.dimmer = function(parameters) {
|
|
282
283
|
module.verbose('Hiding dimmer with css');
|
283
284
|
$dimmer
|
284
285
|
.transition({
|
286
|
+
displayType : 'flex',
|
285
287
|
animation : settings.transition + ' out',
|
286
288
|
queue : false,
|
287
289
|
duration : module.get.duration(),
|
@@ -496,7 +496,7 @@ $.fn.dropdown = function(parameters) {
|
|
496
496
|
? callback
|
497
497
|
: function(){}
|
498
498
|
;
|
499
|
-
if( module.is.active() ) {
|
499
|
+
if( module.is.active() && !module.is.animatingOutward() ) {
|
500
500
|
module.debug('Hiding dropdown');
|
501
501
|
if(settings.onHide.call(element) !== false) {
|
502
502
|
module.animate.hide(function() {
|
@@ -2435,7 +2435,6 @@ $.fn.dropdown = function(parameters) {
|
|
2435
2435
|
var
|
2436
2436
|
escapedValue = module.escape.value(value),
|
2437
2437
|
hasInput = ($input.length > 0),
|
2438
|
-
isAddition = !module.has.value(value),
|
2439
2438
|
currentValue = module.get.values(),
|
2440
2439
|
stringValue = (value !== undefined)
|
2441
2440
|
? String(value)
|
@@ -2538,8 +2537,8 @@ $.fn.dropdown = function(parameters) {
|
|
2538
2537
|
module.save.remoteData(selectedText, selectedValue);
|
2539
2538
|
}
|
2540
2539
|
if(settings.useLabels) {
|
2541
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2542
2540
|
module.add.label(selectedValue, selectedText, shouldAnimate);
|
2541
|
+
module.add.value(selectedValue, selectedText, $selected);
|
2543
2542
|
module.set.activeItem($selected);
|
2544
2543
|
module.filterActive();
|
2545
2544
|
module.select.nextAvailable($selectedItem);
|
@@ -2587,8 +2586,8 @@ $.fn.dropdown = function(parameters) {
|
|
2587
2586
|
;
|
2588
2587
|
$label = settings.onLabelCreate.call($label, escapedValue, text);
|
2589
2588
|
|
2590
|
-
if(module.has.
|
2591
|
-
module.debug('
|
2589
|
+
if(module.has.value(value)) {
|
2590
|
+
module.debug('User selection already exists, skipping', escapedValue);
|
2592
2591
|
return;
|
2593
2592
|
}
|
2594
2593
|
if(settings.label.variation) {
|
@@ -2727,6 +2726,10 @@ $.fn.dropdown = function(parameters) {
|
|
2727
2726
|
currentValue = module.get.values(),
|
2728
2727
|
newValue
|
2729
2728
|
;
|
2729
|
+
if(module.has.value(addedValue)) {
|
2730
|
+
module.debug('Value already selected');
|
2731
|
+
return;
|
2732
|
+
}
|
2730
2733
|
if(addedValue === '') {
|
2731
2734
|
module.debug('Cannot select blank values from multiselect');
|
2732
2735
|
return;
|
@@ -3058,6 +3061,12 @@ $.fn.dropdown = function(parameters) {
|
|
3058
3061
|
return (module.get.query() !== '');
|
3059
3062
|
},
|
3060
3063
|
value: function(value) {
|
3064
|
+
return (settings.ignoreCase)
|
3065
|
+
? module.has.valueIgnoringCase(value)
|
3066
|
+
: module.has.valueMatchingCase(value)
|
3067
|
+
;
|
3068
|
+
},
|
3069
|
+
valueMatchingCase: function(value) {
|
3061
3070
|
var
|
3062
3071
|
values = module.get.values(),
|
3063
3072
|
hasValue = $.isArray(values)
|
@@ -3068,6 +3077,22 @@ $.fn.dropdown = function(parameters) {
|
|
3068
3077
|
? true
|
3069
3078
|
: false
|
3070
3079
|
;
|
3080
|
+
},
|
3081
|
+
valueIgnoringCase: function(value) {
|
3082
|
+
var
|
3083
|
+
values = module.get.values(),
|
3084
|
+
hasValue = false
|
3085
|
+
;
|
3086
|
+
if(!$.isArray(values)) {
|
3087
|
+
values = [values];
|
3088
|
+
}
|
3089
|
+
$.each(values, function(index, existingValue) {
|
3090
|
+
if(String(value).toLowerCase() == String(existingValue).toLowerCase()) {
|
3091
|
+
hasValue = true;
|
3092
|
+
return false;
|
3093
|
+
}
|
3094
|
+
});
|
3095
|
+
return hasValue;
|
3071
3096
|
}
|
3072
3097
|
},
|
3073
3098
|
|
@@ -3075,6 +3100,12 @@ $.fn.dropdown = function(parameters) {
|
|
3075
3100
|
active: function() {
|
3076
3101
|
return $module.hasClass(className.active);
|
3077
3102
|
},
|
3103
|
+
animatingInward: function() {
|
3104
|
+
return $menu.transition('is inward');
|
3105
|
+
},
|
3106
|
+
animatingOutward: function() {
|
3107
|
+
return $menu.transition('is outward');
|
3108
|
+
},
|
3078
3109
|
bubbledLabelClick: function(event) {
|
3079
3110
|
return $(event.target).is('select, input') && $module.closest('label').length > 0;
|
3080
3111
|
},
|
@@ -3210,6 +3241,9 @@ $.fn.dropdown = function(parameters) {
|
|
3210
3241
|
;
|
3211
3242
|
calculations = {
|
3212
3243
|
context: {
|
3244
|
+
offset : ($context.get(0) === window)
|
3245
|
+
? { top: 0, left: 0}
|
3246
|
+
: $context.offset(),
|
3213
3247
|
scrollTop : $context.scrollTop(),
|
3214
3248
|
height : $context.outerHeight()
|
3215
3249
|
},
|
@@ -3222,8 +3256,8 @@ $.fn.dropdown = function(parameters) {
|
|
3222
3256
|
calculations.menu.offset.top += calculations.context.scrollTop;
|
3223
3257
|
}
|
3224
3258
|
onScreen = {
|
3225
|
-
above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.menu.height,
|
3226
|
-
below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top + calculations.menu.height
|
3259
|
+
above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
|
3260
|
+
below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height
|
3227
3261
|
};
|
3228
3262
|
if(onScreen.below) {
|
3229
3263
|
module.verbose('Dropdown can fit in context downward', onScreen);
|
@@ -3252,6 +3286,9 @@ $.fn.dropdown = function(parameters) {
|
|
3252
3286
|
;
|
3253
3287
|
calculations = {
|
3254
3288
|
context: {
|
3289
|
+
offset : ($context.get(0) === window)
|
3290
|
+
? { top: 0, left: 0}
|
3291
|
+
: $context.offset(),
|
3255
3292
|
scrollLeft : $context.scrollLeft(),
|
3256
3293
|
width : $context.outerWidth()
|
3257
3294
|
},
|
@@ -3263,7 +3300,7 @@ $.fn.dropdown = function(parameters) {
|
|
3263
3300
|
if(module.is.horizontallyScrollableContext()) {
|
3264
3301
|
calculations.menu.offset.left += calculations.context.scrollLeft;
|
3265
3302
|
}
|
3266
|
-
isOffscreenRight = (calculations.menu.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
|
3303
|
+
isOffscreenRight = (calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
|
3267
3304
|
if(isOffscreenRight) {
|
3268
3305
|
module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
|
3269
3306
|
canOpenRightward = false;
|
@@ -3369,7 +3406,7 @@ $.fn.dropdown = function(parameters) {
|
|
3369
3406
|
duration : settings.duration,
|
3370
3407
|
debug : settings.debug,
|
3371
3408
|
verbose : settings.verbose,
|
3372
|
-
queue :
|
3409
|
+
queue : false,
|
3373
3410
|
onStart : start,
|
3374
3411
|
onComplete : function() {
|
3375
3412
|
callback.call(element);
|
@@ -3657,7 +3694,8 @@ $.fn.dropdown.settings = {
|
|
3657
3694
|
forceSelection : true, // force a choice on blur with search selection
|
3658
3695
|
|
3659
3696
|
allowAdditions : false, // whether multiple select should allow user added values
|
3660
|
-
|
3697
|
+
ignoreCase : false, // whether to consider values not matching in case to be the same
|
3698
|
+
hideAdditions : true, // whether or not to hide special message prompting a user they can enter a value
|
3661
3699
|
|
3662
3700
|
maxSelections : false, // When set to a number limits the number of selections to this count
|
3663
3701
|
useLabels : true, // whether multiple select should filter currently active selections from choices
|
@@ -108,6 +108,10 @@ $.fn.modal = function(parameters) {
|
|
108
108
|
var
|
109
109
|
defaultSettings = {
|
110
110
|
debug : settings.debug,
|
111
|
+
variation : settings.centered
|
112
|
+
? false
|
113
|
+
: 'top aligned'
|
114
|
+
,
|
111
115
|
dimmerName : 'modals'
|
112
116
|
},
|
113
117
|
dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)
|
@@ -165,7 +169,6 @@ $.fn.modal = function(parameters) {
|
|
165
169
|
module.cacheSizes();
|
166
170
|
module.set.screenHeight();
|
167
171
|
module.set.type();
|
168
|
-
module.set.position();
|
169
172
|
},
|
170
173
|
|
171
174
|
refreshModals: function() {
|
@@ -238,21 +241,23 @@ $.fn.modal = function(parameters) {
|
|
238
241
|
module.hide();
|
239
242
|
},
|
240
243
|
click: function(event) {
|
244
|
+
if(!settings.closable) {
|
245
|
+
module.verbose('Dimmer clicked but closable setting is disabled');
|
246
|
+
return;
|
247
|
+
}
|
241
248
|
var
|
242
249
|
$target = $(event.target),
|
243
250
|
isInModal = ($target.closest(selector.modal).length > 0),
|
244
251
|
isInDOM = $.contains(document.documentElement, event.target)
|
245
252
|
;
|
246
|
-
if(!isInModal && isInDOM) {
|
253
|
+
if(!isInModal && isInDOM && module.is.active()) {
|
247
254
|
module.debug('Dimmer clicked, hiding all modals');
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
module.hideAll();
|
255
|
-
}
|
255
|
+
module.remove.clickaway();
|
256
|
+
if(settings.allowMultiple) {
|
257
|
+
module.hide();
|
258
|
+
}
|
259
|
+
else {
|
260
|
+
module.hideAll();
|
256
261
|
}
|
257
262
|
}
|
258
263
|
},
|
@@ -320,7 +325,6 @@ $.fn.modal = function(parameters) {
|
|
320
325
|
|
321
326
|
module.showDimmer();
|
322
327
|
module.cacheSizes();
|
323
|
-
module.set.position();
|
324
328
|
module.set.screenHeight();
|
325
329
|
module.set.type();
|
326
330
|
module.set.clickaway();
|
@@ -487,7 +491,13 @@ $.fn.modal = function(parameters) {
|
|
487
491
|
|
488
492
|
save: {
|
489
493
|
focus: function() {
|
490
|
-
|
494
|
+
var
|
495
|
+
$activeElement = $(document.activeElement),
|
496
|
+
inCurrentModal = $activeElement.closest($module).length > 0
|
497
|
+
;
|
498
|
+
if(!inCurrentModal) {
|
499
|
+
$focusedElement = $(document.activeElement).blur();
|
500
|
+
}
|
491
501
|
}
|
492
502
|
},
|
493
503
|
|
@@ -504,11 +514,9 @@ $.fn.modal = function(parameters) {
|
|
504
514
|
$module.removeClass(className.active);
|
505
515
|
},
|
506
516
|
clickaway: function() {
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
;
|
511
|
-
}
|
517
|
+
$dimmer
|
518
|
+
.off('click' + elementEventNamespace)
|
519
|
+
;
|
512
520
|
},
|
513
521
|
bodyStyle: function() {
|
514
522
|
if($body.attr('style') === '') {
|
@@ -606,11 +614,9 @@ $.fn.modal = function(parameters) {
|
|
606
614
|
}
|
607
615
|
},
|
608
616
|
clickaway: function() {
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
;
|
613
|
-
}
|
617
|
+
$dimmer
|
618
|
+
.on('click' + elementEventNamespace, module.event.click)
|
619
|
+
;
|
614
620
|
},
|
615
621
|
dimmerSettings: function() {
|
616
622
|
if($.fn.dimmer === undefined) {
|
@@ -621,8 +627,11 @@ $.fn.modal = function(parameters) {
|
|
621
627
|
defaultSettings = {
|
622
628
|
debug : settings.debug,
|
623
629
|
dimmerName : 'modals',
|
624
|
-
variation : false,
|
625
630
|
closable : 'auto',
|
631
|
+
variation : settings.centered
|
632
|
+
? false
|
633
|
+
: 'top aligned'
|
634
|
+
,
|
626
635
|
duration : {
|
627
636
|
show : settings.duration,
|
628
637
|
hide : settings.duration
|
@@ -678,25 +687,6 @@ $.fn.modal = function(parameters) {
|
|
678
687
|
module.set.scrolling();
|
679
688
|
}
|
680
689
|
},
|
681
|
-
position: function() {
|
682
|
-
module.verbose('Centering modal on page', module.cache);
|
683
|
-
if(module.can.fit()) {
|
684
|
-
$module
|
685
|
-
.css({
|
686
|
-
top: '',
|
687
|
-
marginTop: module.cache.topOffset
|
688
|
-
})
|
689
|
-
;
|
690
|
-
}
|
691
|
-
else {
|
692
|
-
$module
|
693
|
-
.css({
|
694
|
-
marginTop : '',
|
695
|
-
top : $document.scrollTop()
|
696
|
-
})
|
697
|
-
;
|
698
|
-
}
|
699
|
-
},
|
700
690
|
undetached: function() {
|
701
691
|
$dimmable.addClass(className.undetached);
|
702
692
|
}
|
@@ -905,6 +895,8 @@ $.fn.modal.settings = {
|
|
905
895
|
inverted : false,
|
906
896
|
blurring : false,
|
907
897
|
|
898
|
+
centered : true,
|
899
|
+
|
908
900
|
dimmerSettings : {
|
909
901
|
closable : false,
|
910
902
|
useCSS : true
|
@@ -488,7 +488,7 @@ $.fn.popup = function(parameters) {
|
|
488
488
|
},
|
489
489
|
content: function() {
|
490
490
|
$module.removeData(metadata.content);
|
491
|
-
return $module.data(metadata.content) || $module.attr('title')
|
491
|
+
return $module.data(metadata.content) || settings.content || $module.attr('title');
|
492
492
|
},
|
493
493
|
variation: function() {
|
494
494
|
$module.removeData(metadata.variation);
|
@@ -502,9 +502,10 @@ $.fn.popup = function(parameters) {
|
|
502
502
|
},
|
503
503
|
calculations: function() {
|
504
504
|
var
|
505
|
-
|
506
|
-
|
507
|
-
|
505
|
+
$popupOffsetParent = module.get.offsetParent($popup),
|
506
|
+
targetElement = $target[0],
|
507
|
+
isWindow = ($boundary[0] == window),
|
508
|
+
targetPosition = (settings.inline || (settings.popup && settings.movePopup))
|
508
509
|
? $target.position()
|
509
510
|
: $target.offset(),
|
510
511
|
screenPosition = (isWindow)
|
@@ -549,6 +550,17 @@ $.fn.popup = function(parameters) {
|
|
549
550
|
}
|
550
551
|
};
|
551
552
|
|
553
|
+
// if popup offset context is not same as target, then adjust calculations
|
554
|
+
if($popupOffsetParent.get(0) !== $offsetParent.get(0)) {
|
555
|
+
var
|
556
|
+
popupOffset = $popupOffsetParent.offset()
|
557
|
+
;
|
558
|
+
calculations.target.top -= popupOffset.top;
|
559
|
+
calculations.target.left -= popupOffset.left;
|
560
|
+
calculations.parent.width = $popupOffsetParent.outerWidth();
|
561
|
+
calculations.parent.height = $popupOffsetParent.outerHeight();
|
562
|
+
}
|
563
|
+
|
552
564
|
// add in container calcs if fluid
|
553
565
|
if( settings.setFluidWidth && module.is.fluid() ) {
|
554
566
|
calculations.container = {
|
@@ -625,11 +637,11 @@ $.fn.popup = function(parameters) {
|
|
625
637
|
}
|
626
638
|
return distanceFromBoundary;
|
627
639
|
},
|
628
|
-
offsetParent: function($
|
640
|
+
offsetParent: function($element) {
|
629
641
|
var
|
630
|
-
element = ($
|
631
|
-
? $
|
632
|
-
: $
|
642
|
+
element = ($element !== undefined)
|
643
|
+
? $element[0]
|
644
|
+
: $target[0],
|
633
645
|
parentNode = element.parentNode,
|
634
646
|
$node = $(parentNode)
|
635
647
|
;
|
@@ -637,14 +649,14 @@ $.fn.popup = function(parameters) {
|
|
637
649
|
var
|
638
650
|
is2D = ($node.css('transform') === 'none'),
|
639
651
|
isStatic = ($node.css('position') === 'static'),
|
640
|
-
|
652
|
+
isBody = $node.is('body')
|
641
653
|
;
|
642
|
-
while(parentNode && !
|
654
|
+
while(parentNode && !isBody && isStatic && is2D) {
|
643
655
|
parentNode = parentNode.parentNode;
|
644
656
|
$node = $(parentNode);
|
645
657
|
is2D = ($node.css('transform') === 'none');
|
646
658
|
isStatic = ($node.css('position') === 'static');
|
647
|
-
|
659
|
+
isBody = $node.is('body');
|
648
660
|
}
|
649
661
|
}
|
650
662
|
return ($node && $node.length > 0)
|
@@ -753,6 +765,18 @@ $.fn.popup = function(parameters) {
|
|
753
765
|
popup = calculations.popup;
|
754
766
|
parent = calculations.parent;
|
755
767
|
|
768
|
+
if(module.should.centerArrow(calculations)) {
|
769
|
+
module.verbose('Adjusting offset to center arrow on small target element');
|
770
|
+
if(position == 'top left' || position == 'bottom left') {
|
771
|
+
offset += (target.width / 2)
|
772
|
+
offset -= settings.arrowPixelsFromEdge;
|
773
|
+
}
|
774
|
+
if(position == 'top right' || position == 'bottom right') {
|
775
|
+
offset -= (target.width / 2)
|
776
|
+
offset += settings.arrowPixelsFromEdge;
|
777
|
+
}
|
778
|
+
}
|
779
|
+
|
756
780
|
if(target.width === 0 && target.height === 0 && !module.is.svg(target.element)) {
|
757
781
|
module.debug('Popup target is hidden, no action taken');
|
758
782
|
return false;
|
@@ -1046,6 +1070,12 @@ $.fn.popup = function(parameters) {
|
|
1046
1070
|
}
|
1047
1071
|
},
|
1048
1072
|
|
1073
|
+
should: {
|
1074
|
+
centerArrow: function(calculations) {
|
1075
|
+
return !module.is.basic() && calculations.target.width <= (settings.arrowPixelsFromEdge * 2);
|
1076
|
+
}
|
1077
|
+
},
|
1078
|
+
|
1049
1079
|
is: {
|
1050
1080
|
offstage: function(distanceFromBoundary, position) {
|
1051
1081
|
var
|
@@ -1068,6 +1098,9 @@ $.fn.popup = function(parameters) {
|
|
1068
1098
|
svg: function(element) {
|
1069
1099
|
return module.supports.svg() && (element instanceof SVGGraphicsElement);
|
1070
1100
|
},
|
1101
|
+
basic: function() {
|
1102
|
+
return $module.hasClass(className.basic);
|
1103
|
+
},
|
1071
1104
|
active: function() {
|
1072
1105
|
return $module.hasClass(className.active);
|
1073
1106
|
},
|
@@ -1380,8 +1413,11 @@ $.fn.popup.settings = {
|
|
1380
1413
|
// specify position to appear even if it doesn't fit
|
1381
1414
|
lastResort : false,
|
1382
1415
|
|
1416
|
+
// number of pixels from edge of popup to pointing arrow center (used from centering)
|
1417
|
+
arrowPixelsFromEdge: 20,
|
1418
|
+
|
1383
1419
|
// delay used to prevent accidental refiring of animations due to user error
|
1384
|
-
delay
|
1420
|
+
delay : {
|
1385
1421
|
show : 50,
|
1386
1422
|
hide : 70
|
1387
1423
|
},
|
@@ -1425,6 +1461,7 @@ $.fn.popup.settings = {
|
|
1425
1461
|
|
1426
1462
|
className : {
|
1427
1463
|
active : 'active',
|
1464
|
+
basic : 'basic',
|
1428
1465
|
animating : 'animating',
|
1429
1466
|
dropdown : 'dropdown',
|
1430
1467
|
fluid : 'fluid',
|