{"version":3,"sources":["webpack:///./deprecated_jquery_dropdown/gl_dropdown_filter.js","webpack:///./deprecated_jquery_dropdown/gl_dropdown_input.js","webpack:///./deprecated_jquery_dropdown/gl_dropdown_remote.js","webpack:///./deprecated_jquery_dropdown/render.js","webpack:///./deprecated_jquery_dropdown/gl_dropdown.js","webpack:///./deprecated_jquery_dropdown/index.js"],"names":["BLUR_KEYCODES","GitLabDropdownFilter","constructor","input","options","_this","ref","this","clear","bind","filterInputBlur","$inputContainer","parent","$clearButton","find","filterRemoteDebounced","_debounce","instance","dropdown","trigger","addClass","query","val","data","removeClass","callback","on","e","which","elIsInput","preventDefault","hasClass","remote","filter","keyCode","indexOf","searchText","_this2","group","results","tmp","onFilter","filterByText","Array","isArray","fuzzaldrinPlus","key","keys","isObject","Object","forEach","length","map","item","elements","each","$el","$","matches","match","text","trim","is","show","hide","toggleClass","stopPropagation","focus","GitLabDropdownInput","fieldName","currentTarget","value","inputFieldName","split","join","replace","toLowerCase","cb","closest","onInput","GitLabDropdownRemote","dataEndpoint","execute","fetchData","beforeSend","success","axios","get","then","renderersByType","divider","element","classList","add","separator","header","innerHTML","content","getPropertyWithDefault","property","defaultValue","result","getHighlightTextBuilder","highlight","template","highlightTemplate","highlightText","getIconTextBuilder","icon","wrappedText","getOptionValue","renderRow","id","String","assignTextToLink","el","reduce","acc","fn","getLinkText","textContent","renderLink","row","index","link","selected","document","createElement","href","trackSuggestionClickedLabel","dataset","trackAction","trackLabel","trackValue","trackProperty","slugify","category","toggle","createLink","querySelector","checkSelected","appendChild","params","renderer","type","li","getOptionRenderer","getRenderer","hideRow","shouldHide","style","display","currentIndex","SELECTABLE_CLASSES","mouseEventListenersAdded","mousedownTarget","mouseupTarget","GitLabDropdown","el1","selector","self","updateLabel","opened","hidden","shouldPropagate","addEventListener","target","filterInput","getElement","noFilterInput","Boolean","searchFields","search","fields","Function","dataType","toggleLoading","fullData","parseData","focusTextInput","filterable","plainInput","addInput","filterRemote","first","$dropdownMenu","$relatedTarget","relatedTarget","togglePage","selectable","rowClicked","selectedObj","isMarking","clicked","call","toggleLabel","menu","isLoading","contains","groupData","html","renderedData","noResults","name","push","renderItem","renderData","fullHtml","renderMenu","appendMenu","_this3","obj","$target","multiSelect","filteredFullData","r","prototype","hasOwnProperty","resetRows","addArrowKeyEvent","dropdownToggle","hasFilterBulkUpdate","shouldRefreshOnOpen","hasMultiSelect","inputValue","processData","contentHtml","showMenuAbove","positionMenuAbove","preserveContext","$menu","css","isIn","$possibleContainer","has","mousedownInsideDropdown","mouseupOutsideDropdown","removeArrowKeyEvent","$input","blur","append","clearMenu","containerSelector","empty","_this4","parentNode","highlightTextMatches","_escape","term","occurrences","character","i","field","groupName","selectedIndex","selectedObject","isInput","vue","toString","isSelectable","clearField","remove","initialScrollTop","window","scrollTop","single","attr","inputId","attribute","inputMeta","before","selectRowAtIndex","visitUrl","_this5","ARROW_KEY_CODES","$listItems","PREV_INDEX","currentKeyCode","stopImmediatePropagation","highlightRowAtIndex","off","$listItem","eq","$dropdownContent","dropdownScrollTop","dropdownContentHeight","outerHeight","dropdownContentTop","prop","dropdownContentBottom","listItemHeight","listItemTop","listItemBottom","toggleText","close","initDeprecatedJQueryDropdown","opts","GitLabDropdownInstance"],"mappings":"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","file":"commons-pages.dashboard.todos.index-pages.groups.merge_requests-pages.groups.roadmap.show-pages.grou-6cefecc0.6e81072c.chunk.js","sourcesContent":["import fuzzaldrinPlus from 'fuzzaldrin-plus';\nimport $ from 'jquery';\nimport { debounce } from 'lodash';\nimport { isObject } from '~/lib/utils/type_utility';\n\nconst BLUR_KEYCODES = [27, 40];\n\nconst HAS_VALUE_CLASS = 'has-value';\n\nexport class GitLabDropdownFilter {\n constructor(input, options) {\n let ref;\n this.input = input;\n this.options = options;\n this.clear = this.clear.bind(this);\n // eslint-disable-next-line no-cond-assign\n this.filterInputBlur = (ref = this.options.filterInputBlur) != null ? ref : true;\n const $inputContainer = this.input.parent();\n const $clearButton = $inputContainer.find('.js-dropdown-input-clear');\n const filterRemoteDebounced = debounce(() => {\n options.instance.dropdown.trigger('filtering.gl.dropdown');\n $inputContainer.parent().addClass('is-loading');\n\n return this.options.query(this.input.val(), (data) => {\n options.instance.dropdown.trigger('done.filtering.gl.dropdown');\n $inputContainer.parent().removeClass('is-loading');\n return this.options.callback(data);\n });\n }, 500);\n\n $clearButton.on('click', this.clear);\n // Key events\n this.input\n .on('keydown', (e) => {\n const keyCode = e.which;\n if (keyCode === 13 && !options.elIsInput) {\n e.preventDefault();\n }\n })\n .on('input', () => {\n if (this.input.val() !== '' && !$inputContainer.hasClass(HAS_VALUE_CLASS)) {\n $inputContainer.addClass(HAS_VALUE_CLASS);\n } else if (this.input.val() === '' && $inputContainer.hasClass(HAS_VALUE_CLASS)) {\n $inputContainer.removeClass(HAS_VALUE_CLASS);\n }\n // Only filter asynchronously only if option remote is set\n if (this.options.remote) {\n return filterRemoteDebounced();\n }\n return this.filter(this.input.val());\n });\n }\n\n static shouldBlur(keyCode) {\n return BLUR_KEYCODES.indexOf(keyCode) !== -1;\n }\n\n // eslint-disable-next-line consistent-return\n filter(searchText) {\n let group;\n let results;\n let tmp;\n if (this.options.onFilter) {\n this.options.onFilter(searchText);\n }\n const data = this.options.data();\n if (data != null && !this.options.filterByText) {\n results = data;\n if (searchText !== '') {\n // When data is an array of objects therefore [object Array] e.g.\n // [\n // { prop: 'foo' },\n // { prop: 'baz' }\n // ]\n if (Array.isArray(data)) {\n results = fuzzaldrinPlus.filter(data, searchText, {\n key: this.options.keys,\n });\n }\n // If data is grouped therefore an [object Object]. e.g.\n // {\n // groupName1: [\n // { prop: 'foo' },\n // { prop: 'baz' }\n // ],\n // groupName2: [\n // { prop: 'abc' },\n // { prop: 'def' }\n // ]\n // }\n else if (isObject(data)) {\n results = {};\n Object.keys(data).forEach((key) => {\n group = data[key];\n tmp = fuzzaldrinPlus.filter(group, searchText, {\n key: this.options.keys,\n });\n if (tmp.length) {\n results[key] = tmp.map((item) => item);\n }\n });\n }\n }\n return this.options.callback(results);\n }\n const elements = this.options.elements();\n if (searchText) {\n // eslint-disable-next-line func-names\n elements.each(function () {\n const $el = $(this);\n const matches = fuzzaldrinPlus.match($el.text().trim(), searchText);\n if (!$el.is('.dropdown-header')) {\n if (matches.length) {\n $el.show().removeClass('option-hidden');\n } else {\n $el.hide().addClass('option-hidden');\n }\n }\n });\n } else {\n elements.show().removeClass('option-hidden');\n }\n\n elements\n .parent()\n .find('.dropdown-menu-empty-item')\n .toggleClass('hidden', elements.is(':visible'));\n }\n\n clear(e) {\n if (this.input.val() === '') return;\n if (e) {\n // Clear click\n e.preventDefault();\n e.stopPropagation();\n }\n this.input.val('').trigger('input').focus();\n }\n}\n","export class GitLabDropdownInput {\n constructor(input, options) {\n this.input = input;\n this.options = options;\n this.fieldName = this.options.fieldName || 'field-name';\n const $inputContainer = this.input.parent();\n const $clearButton = $inputContainer.find('.js-dropdown-input-clear');\n $clearButton.on('click', (e) => {\n // Clear click\n e.preventDefault();\n e.stopPropagation();\n return this.input.val('').trigger('input').focus();\n });\n\n this.input\n .on('keydown', (e) => {\n const keyCode = e.which;\n if (keyCode === 13 && !options.elIsInput) {\n e.preventDefault();\n }\n })\n .on('input', (e) => {\n let val = e.currentTarget.value || this.options.inputFieldName;\n val = val\n .split(' ')\n .join('-') // replaces space with dash\n .replace(/[^a-zA-Z0-9 -]/g, '')\n .toLowerCase() // replace non alphanumeric\n .replace(/(-)\\1+/g, '-'); // replace repeated dashes\n this.cb(this.options.fieldName, val, {}, true);\n this.input.closest('.dropdown').find('.dropdown-toggle-text').text(val);\n });\n }\n\n onInput(cb) {\n this.cb = cb;\n }\n}\n","/* eslint-disable consistent-return */\n\nimport axios from '../lib/utils/axios_utils';\n\nexport class GitLabDropdownRemote {\n constructor(dataEndpoint, options) {\n this.dataEndpoint = dataEndpoint;\n this.options = options;\n }\n\n execute() {\n if (typeof this.dataEndpoint === 'string') {\n return this.fetchData();\n }\n if (typeof this.dataEndpoint === 'function') {\n if (this.options.beforeSend) {\n this.options.beforeSend();\n }\n return this.dataEndpoint('', (data) => {\n // Fetch the data by calling the data function\n if (this.options.success) {\n this.options.success(data);\n }\n if (this.options.beforeSend) {\n return this.options.beforeSend();\n }\n });\n }\n }\n\n fetchData() {\n if (this.options.beforeSend) {\n this.options.beforeSend();\n }\n\n // Fetch the data through ajax if the data is a string\n return axios.get(this.dataEndpoint).then(({ data }) => {\n if (this.options.success) {\n return this.options.success(data);\n }\n });\n }\n}\n","import { slugify } from '~/lib/utils/text_utility';\n\nconst renderersByType = {\n divider(element) {\n element.classList.add('divider');\n\n return element;\n },\n separator(element) {\n element.classList.add('separator');\n\n return element;\n },\n header(element, data) {\n element.classList.add('dropdown-header');\n // eslint-disable-next-line no-unsanitized/property\n element.innerHTML = data.content;\n\n return element;\n },\n};\n\n// eslint-disable-next-line max-params\nfunction getPropertyWithDefault(data, options, property, defaultValue = '') {\n let result;\n\n if (options[property] != null) {\n result = options[property](data);\n } else {\n result = data[property] != null ? data[property] : defaultValue;\n }\n\n return result;\n}\n\nfunction getHighlightTextBuilder(text, data, options) {\n if (options.highlight) {\n return data.template\n ? options.highlightTemplate(text, data.template)\n : options.highlightText(text);\n }\n\n return text;\n}\n\nfunction getIconTextBuilder(text, data, options) {\n if (options.icon) {\n const wrappedText = `${text}`;\n return data.icon ? `${data.icon}${wrappedText}` : wrappedText;\n }\n\n return text;\n}\n\nfunction getLinkText(data, options) {\n const text = getPropertyWithDefault(data, options, 'text');\n\n return [getHighlightTextBuilder, getIconTextBuilder].reduce(\n (acc, fn) => fn(acc, data, options),\n text,\n );\n}\n\nfunction escape(text) {\n return text ? String(text).replace(/'/g, \"\\\\'\") : text;\n}\n\nfunction getOptionValue(data, options) {\n if (options.renderRow) {\n return undefined;\n }\n\n return escape(options.id ? options.id(data) : data.id);\n}\n\nfunction shouldHide(data, { options }) {\n const value = getOptionValue(data, options);\n\n return options.hideRow && options.hideRow(value);\n}\n\nfunction hideElement(element) {\n element.style.display = 'none';\n\n return element;\n}\n\nfunction checkSelected(data, options) {\n const value = getOptionValue(data, options);\n\n if (!options.parent) {\n return !data.id;\n }\n if (value) {\n return (\n options.parent.querySelector(`input[name='${options.fieldName}'][value='${value}']`) != null\n );\n }\n\n return options.parent.querySelector(`input[name='${options.fieldName}']`) == null;\n}\n\n// eslint-disable-next-line max-params\nfunction createLink(data, selected, options, index) {\n const link = document.createElement('a');\n\n link.href = getPropertyWithDefault(data, options, 'url', '#');\n\n if (options.icon) {\n link.classList.add('gl-flex', 'align-items-center');\n }\n\n if (options.trackSuggestionClickedLabel) {\n link.dataset.trackAction = 'click_text';\n link.dataset.trackLabel = options.trackSuggestionClickedLabel;\n link.dataset.trackValue = index;\n link.dataset.trackProperty = slugify(data.category || 'no-category');\n }\n\n link.classList.toggle('is-active', selected);\n\n return link;\n}\n\nfunction assignTextToLink(el, data, options) {\n const text = getLinkText(data, options);\n\n if (options.icon || options.highlight) {\n // eslint-disable-next-line no-unsanitized/property\n el.innerHTML = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n\nfunction renderLink(row, data, { options, group, index }) {\n const selected = checkSelected(data, options);\n const link = createLink(data, selected, options, index);\n\n assignTextToLink(link, data, options);\n\n if (group) {\n link.dataset.group = group;\n link.dataset.index = index;\n }\n\n row.appendChild(link);\n\n return row;\n}\n\nfunction getOptionRenderer({ options, instance }) {\n return options.renderRow && ((li, data, params) => options.renderRow(data, instance, params));\n}\n\nfunction getRenderer(data, params) {\n return renderersByType[data.type] || getOptionRenderer(params) || renderLink;\n}\n\nexport default function item({ data, ...params }) {\n const renderer = getRenderer(data, params);\n const li = document.createElement('li');\n\n if (shouldHide(data, params)) {\n hideElement(li);\n }\n\n return renderer(li, data, params);\n}\n","/* eslint-disable consistent-return */\nimport fuzzaldrinPlus from 'fuzzaldrin-plus';\nimport $ from 'jquery';\nimport { escape } from 'lodash';\nimport { isObject } from '~/lib/utils/type_utility';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport { GitLabDropdownFilter } from './gl_dropdown_filter';\nimport { GitLabDropdownInput } from './gl_dropdown_input';\nimport { GitLabDropdownRemote } from './gl_dropdown_remote';\nimport renderItem from './render';\n\nconst LOADING_CLASS = 'is-loading';\n\nconst PAGE_TWO_CLASS = 'is-page-two';\n\nconst ACTIVE_CLASS = 'is-active';\n\nconst INDETERMINATE_CLASS = 'is-indeterminate';\n\nlet currentIndex = -1;\n\nconst NON_SELECTABLE_CLASSES = '.divider, .separator, .dropdown-header, .dropdown-menu-empty-item';\n\nconst SELECTABLE_CLASSES = `.dropdown-content li:not(${NON_SELECTABLE_CLASSES}, .option-hidden)`;\n\nconst CURSOR_SELECT_SCROLL_PADDING = 5;\n\nconst FILTER_INPUT = '.dropdown-input .dropdown-input-field:not(.dropdown-no-filter)';\n\nconst NO_FILTER_INPUT = '.dropdown-input .dropdown-input-field.dropdown-no-filter';\n\nlet mouseEventListenersAdded = false;\nlet mousedownTarget = null;\nlet mouseupTarget = null;\n\nfunction addGlobalMouseEventListeners() {\n // Remember mousedown and mouseup locations.\n // Required in the `hide.bs.dropdown` listener for\n // dropdown close prevention in some cases.\n document.addEventListener('mousedown', ({ target }) => {\n mousedownTarget = target;\n });\n document.addEventListener('mouseup', ({ target }) => {\n mouseupTarget = target;\n });\n document.addEventListener('click', () => {\n mousedownTarget = null;\n mouseupTarget = null;\n });\n}\n\nexport class GitLabDropdown {\n constructor(el1, options) {\n let selector;\n let self;\n this.el = el1;\n this.options = options;\n this.updateLabel = this.updateLabel.bind(this);\n this.opened = this.opened.bind(this);\n this.hide = this.hide.bind(this);\n this.hidden = this.hidden.bind(this);\n this.shouldPropagate = this.shouldPropagate.bind(this);\n if (!mouseEventListenersAdded) {\n addGlobalMouseEventListeners();\n mouseEventListenersAdded = true;\n }\n self = this;\n selector = $(this.el).data('target');\n this.dropdown = selector != null ? $(selector) : $(this.el).parent();\n // Set Defaults\n this.filterInput = this.options.filterInput || this.getElement(FILTER_INPUT);\n this.noFilterInput = this.options.noFilterInput || this.getElement(NO_FILTER_INPUT);\n this.highlight = Boolean(this.options.highlight);\n this.icon = Boolean(this.options.icon);\n this.filterInputBlur =\n this.options.filterInputBlur != null ? this.options.filterInputBlur : true;\n // If no input is passed create a default one\n self = this;\n // If selector was passed\n if (typeof this.filterInput === 'string') {\n this.filterInput = this.getElement(this.filterInput);\n }\n const searchFields = this.options.search ? this.options.search.fields : [];\n if (this.options.data) {\n // If we provided data\n // data could be an array of objects or a group of arrays\n if (typeof this.options.data === 'object' && !(this.options.data instanceof Function)) {\n this.fullData = this.options.data;\n currentIndex = -1;\n this.parseData(this.options.data);\n this.focusTextInput();\n } else {\n this.remote = new GitLabDropdownRemote(this.options.data, {\n dataType: this.options.dataType,\n beforeSend: this.toggleLoading.bind(this),\n success: (data) => {\n this.dropdown.trigger('done.remote.loading.gl.dropdown');\n this.fullData = data;\n this.parseData(this.fullData);\n this.focusTextInput();\n\n // Update dropdown position since remote data may have changed dropdown size\n this.dropdown.find('.dropdown-menu-toggle').dropdown('update');\n\n if (\n this.options.filterable &&\n this.filter &&\n this.filter.input &&\n this.filter.input.val() &&\n this.filter.input.val().trim() !== ''\n ) {\n return this.filter.input.trigger('input');\n }\n },\n instance: this,\n });\n }\n }\n if (this.noFilterInput.length) {\n this.plainInput = new GitLabDropdownInput(this.noFilterInput, this.options);\n this.plainInput.onInput(this.addInput.bind(this));\n }\n // Init filterable\n if (this.options.filterable) {\n this.filter = new GitLabDropdownFilter(this.filterInput, {\n elIsInput: $(this.el).is('input'),\n filterInputBlur: this.filterInputBlur,\n filterByText: this.options.filterByText,\n onFilter: this.options.onFilter,\n remote: this.options.filterRemote,\n query: this.options.data,\n keys: searchFields,\n instance: this,\n elements: () => {\n selector = `.dropdown-content li:not(${NON_SELECTABLE_CLASSES})`;\n if (this.dropdown.find('.dropdown-toggle-page').length) {\n selector = `.dropdown-page-one ${selector}`;\n }\n return $(selector, this.dropdown);\n },\n data: () => this.fullData,\n callback: (data) => {\n this.parseData(data);\n if (this.filterInput.val() !== '') {\n selector = SELECTABLE_CLASSES;\n if (this.dropdown.find('.dropdown-toggle-page').length) {\n selector = `.dropdown-page-one ${selector}`;\n }\n if ($(this.el).is('input')) {\n currentIndex = -1;\n } else {\n $(selector, this.dropdown).first().find('a').addClass('is-focused');\n currentIndex = 0;\n }\n }\n },\n });\n }\n // Event listeners\n this.dropdown.on('shown.bs.dropdown', this.opened);\n this.dropdown.on('hide.bs.dropdown', this.hide);\n this.dropdown.on('hidden.bs.dropdown', this.hidden);\n $(this.el).on('update.label', this.updateLabel);\n this.dropdown.on('click', '.dropdown-menu, .dropdown-menu-close', this.shouldPropagate);\n this.dropdown.on('keyup', (e) => {\n // Escape key\n if (e.which === 27) {\n return $('.dropdown-menu-close', this.dropdown).trigger('click');\n }\n });\n this.dropdown.on('blur', 'a', (e) => {\n let $dropdownMenu;\n let $relatedTarget;\n if (e.relatedTarget != null) {\n $relatedTarget = $(e.relatedTarget);\n $dropdownMenu = $relatedTarget.closest('.dropdown-menu');\n if ($dropdownMenu.length === 0) {\n return this.dropdown.removeClass('show');\n }\n }\n });\n if (this.dropdown.find('.dropdown-toggle-page').length) {\n this.dropdown.find('.dropdown-toggle-page, .dropdown-menu-back').on('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n return this.togglePage();\n });\n }\n if (this.options.selectable) {\n selector = '.dropdown-content a';\n if (this.dropdown.find('.dropdown-toggle-page').length) {\n selector = '.dropdown-page-one .dropdown-content a';\n }\n this.dropdown.on('click', selector, (e) => {\n const $el = $(e.currentTarget);\n const selected = self.rowClicked($el);\n const selectedObj = selected ? selected[0] : null;\n const isMarking = selected ? selected[1] : null;\n if (this.options.clicked) {\n this.options.clicked.call(this, {\n selectedObj,\n $el,\n e,\n isMarking,\n });\n }\n\n // Update label right after all modifications in dropdown has been done\n if (this.options.toggleLabel) {\n this.updateLabel(selectedObj, $el, this);\n }\n\n $el.trigger('blur');\n });\n }\n }\n\n // Finds an element inside wrapper element\n getElement(selector) {\n return this.dropdown.find(selector);\n }\n\n toggleLoading() {\n const menu = this.dropdown[0].querySelector('.dropdown-menu');\n const isLoading = menu.classList.contains(LOADING_CLASS);\n\n this.dropdown.trigger(`toggle.${isLoading ? 'off' : 'on'}.loading.gl.dropdown`);\n\n menu.classList.toggle(LOADING_CLASS);\n }\n\n togglePage() {\n const menu = $('.dropdown-menu', this.dropdown);\n if (menu.hasClass(PAGE_TWO_CLASS)) {\n if (this.remote) {\n this.remote.execute();\n }\n }\n menu.toggleClass(PAGE_TWO_CLASS);\n // Focus first visible input on active page\n return this.dropdown.find('[class^=\"dropdown-page-\"]:visible :text:visible:first').focus();\n }\n\n parseData(data) {\n let groupData;\n let html;\n this.renderedData = data;\n if (this.options.filterable && data.length === 0) {\n // render no matching results\n html = [this.noResults()];\n }\n // Handle array groups\n else if (isObject(data)) {\n html = [];\n\n Object.keys(data).forEach((name) => {\n groupData = data[name];\n html.push(\n this.renderItem(\n {\n content: name,\n type: 'header',\n },\n name,\n ),\n );\n this.renderData(groupData, name).map((item) => html.push(item));\n });\n } else {\n // Render each row\n html = this.renderData(data);\n }\n // Render the full menu\n const fullHtml = this.renderMenu(html);\n return this.appendMenu(fullHtml);\n }\n\n renderData(data, group) {\n return data.map((obj, index) => this.renderItem(obj, group || false, index));\n }\n\n shouldPropagate(e) {\n let $target;\n if (this.options.multiSelect || this.options.shouldPropagate === false) {\n $target = $(e.target);\n if (\n $target &&\n !$target.hasClass('dropdown-menu-close') &&\n !$target.hasClass('dropdown-menu-close-icon') &&\n !$target.is('use') &&\n !$target.data('isLink')\n ) {\n e.stopPropagation();\n\n // This prevents automatic scrolling to the top\n if ($target.closest('a').length) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n filteredFullData() {\n return this.fullData.filter(\n (r) =>\n typeof r === 'object' &&\n !Object.prototype.hasOwnProperty.call(r, 'beforeDivider') &&\n !Object.prototype.hasOwnProperty.call(r, 'header'),\n );\n }\n\n opened(e) {\n this.resetRows();\n this.addArrowKeyEvent();\n\n const dropdownToggle = this.dropdown.find('.dropdown-menu-toggle');\n const hasFilterBulkUpdate = dropdownToggle.hasClass('js-filter-bulk-update');\n const shouldRefreshOnOpen = dropdownToggle.hasClass('js-gl-dropdown-refresh-on-open');\n const hasMultiSelect = dropdownToggle.hasClass('js-multiselect');\n\n // Makes indeterminate items effective\n if (this.fullData && (shouldRefreshOnOpen || hasFilterBulkUpdate)) {\n this.parseData(this.fullData);\n }\n\n // Process the data to make sure rendered data\n // matches the correct layout\n const inputValue = this.filterInput.val();\n if (this.fullData && hasMultiSelect && this.options.processData && inputValue.length === 0) {\n this.options.processData.call(\n this.options,\n inputValue,\n this.filteredFullData(),\n this.parseData.bind(this),\n );\n }\n\n const contentHtml = $('.dropdown-content', this.dropdown).html();\n if (this.remote && contentHtml === '') {\n this.remote.execute();\n } else {\n this.focusTextInput();\n }\n\n if (this.options.showMenuAbove) {\n this.positionMenuAbove();\n }\n\n if (this.options.opened) {\n if (this.options.preserveContext) {\n this.options.opened(e);\n } else {\n this.options.opened.call(this, e);\n }\n }\n\n return this.dropdown.trigger('shown.gl.dropdown');\n }\n\n positionMenuAbove() {\n const $menu = this.dropdown.find('.dropdown-menu');\n\n $menu.addClass('dropdown-open-top');\n $menu.css('top', 'initial');\n $menu.css('bottom', '100%');\n }\n\n hide(e) {\n // Prevent dropdowns with a search from being closed when the\n // mousedown event happened inside the dropdown box and only\n // the mouseup event did not.\n if (this.options.search && mousedownTarget) {\n const isIn = (element, $possibleContainer) => Boolean($possibleContainer.has(element).length);\n const $menu = this.dropdown.find('.dropdown-menu');\n const mousedownInsideDropdown = isIn(mousedownTarget, $menu);\n const mouseupOutsideDropdown = !isIn(mouseupTarget, $menu);\n if (mousedownInsideDropdown && mouseupOutsideDropdown) {\n e.preventDefault();\n }\n }\n }\n\n hidden(e) {\n this.resetRows();\n this.removeArrowKeyEvent();\n const $input = this.dropdown.find('.dropdown-input-field');\n if (this.options.filterable) {\n $input.blur();\n }\n if (this.dropdown.find('.dropdown-toggle-page').length) {\n $('.dropdown-menu', this.dropdown).removeClass(PAGE_TWO_CLASS);\n }\n if (this.options.hidden) {\n this.options.hidden.call(this, e);\n }\n return this.dropdown.trigger('hidden.gl.dropdown');\n }\n\n // Render the full menu\n renderMenu(html) {\n if (this.options.renderMenu) {\n return this.options.renderMenu(html);\n }\n return $('