summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/issuable
diff options
context:
space:
mode:
authorValery Sizov <valery@gitlab.com>2017-05-05 16:59:31 +0300
committerValery Sizov <valery@gitlab.com>2017-05-05 16:59:31 +0300
commit5004579b15b0585c0a26231d7422fb1d8086bd66 (patch)
treeb9d0096b88813af0d2cb38c173485f56aa62ebc7 /app/assets/javascripts/issuable
parent79b8323d11cc06911b996f327c6e06fd29cafea4 (diff)
parent10c1bf2d77fd0ab21309d0b136cbc0ac11f56c77 (diff)
downloadgitlab-ce-5004579b15b0585c0a26231d7422fb1d8086bd66.tar.gz
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into mia_backort[ci skip]
Diffstat (limited to 'app/assets/javascripts/issuable')
-rw-r--r--app/assets/javascripts/issuable/auto_width_dropdown_select.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/app/assets/javascripts/issuable/auto_width_dropdown_select.js b/app/assets/javascripts/issuable/auto_width_dropdown_select.js
new file mode 100644
index 00000000000..2203a56315e
--- /dev/null
+++ b/app/assets/javascripts/issuable/auto_width_dropdown_select.js
@@ -0,0 +1,38 @@
+let instanceCount = 0;
+
+class AutoWidthDropdownSelect {
+ constructor(selectElement) {
+ this.$selectElement = $(selectElement);
+ this.dropdownClass = `js-auto-width-select-dropdown-${instanceCount}`;
+ instanceCount += 1;
+ }
+
+ init() {
+ const dropdownClass = this.dropdownClass;
+ this.$selectElement.select2({
+ dropdownCssClass: dropdownClass,
+ dropdownCss() {
+ let resultantWidth = 'auto';
+ const $dropdown = $(`.${dropdownClass}`);
+
+ // We have to look at the parent because
+ // `offsetParent` on a `display: none;` is `null`
+ const offsetParentWidth = $(this).parent().offsetParent().width();
+ // Reset any width to let it naturally flow
+ $dropdown.css('width', 'auto');
+ if ($dropdown.outerWidth(false) > offsetParentWidth) {
+ resultantWidth = offsetParentWidth;
+ }
+
+ return {
+ width: resultantWidth,
+ maxWidth: offsetParentWidth,
+ };
+ },
+ });
+
+ return this;
+ }
+}
+
+export default AutoWidthDropdownSelect;