@atlassian/aui
Version:
Atlassian User Interface Framework
83 lines (70 loc) • 2.62 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['module', 'exports', './jquery', './internal/globalize'], factory);
} else if (typeof exports !== "undefined") {
factory(module, exports, require('./jquery'), require('./internal/globalize'));
} else {
var mod = {
exports: {}
};
factory(mod, mod.exports, global.jquery, global.globalize);
global.containDropdown = mod.exports;
}
})(this, function (module, exports, _jquery, _globalize) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _jquery2 = _interopRequireDefault(_jquery);
var _globalize2 = _interopRequireDefault(_globalize);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function containDropdown(dropdown, containerSelector, dynamic) {
function getDropdownOffset() {
return dropdown.$.offset().top - (0, _jquery2.default)(containerSelector).offset().top;
}
var container;
var ddOffset;
var availableArea;
var shadowOffset = 25;
if (dropdown.$.parents(containerSelector).length !== -1) {
container = (0, _jquery2.default)(containerSelector);
ddOffset = getDropdownOffset();
shadowOffset = 30;
availableArea = container.outerHeight() - ddOffset - shadowOffset;
if (availableArea <= parseInt(dropdown.$.attr('scrollHeight'), 10)) {
containDropdown.containHeight(dropdown, availableArea);
} else if (dynamic) {
containDropdown.releaseContainment(dropdown);
}
dropdown.reset();
}
};
containDropdown.containHeight = function (dropdown, availableArea) {
dropdown.$.css({
height: availableArea
});
if (dropdown.$.css('overflowY') !== 'scroll') {
dropdown.$.css({
width: 15 + dropdown.$.attr('scrollWidth'),
overflowY: 'scroll',
overflowX: 'hidden'
});
}
};
containDropdown.releaseContainment = function (dropdown) {
dropdown.$.css({
height: '',
width: '',
overflowY: '',
overflowX: ''
});
};
(0, _globalize2.default)('containDropdown', containDropdown);
exports.default = containDropdown;
module.exports = exports['default'];
});
//# sourceMappingURL=contain-dropdown.js.map