{"version":3,"sources":["webpack:////build/source/node_modules/@gitlab/ui/dist/components/shared_components/clear_icon_button/clear_icon_button.js","webpack:////build/source/node_modules/lodash/clamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/node_modules/lodash/isNil.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_search_input.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/intersection_observer/intersection_observer.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_type/search_box_by_type.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/constants.js","webpack:///./vue_shared/components/badges/protected_badge.vue","webpack:///./vue_shared/components/badges/protected_badge.vue?c1cd","webpack:///vue_shared/components/badges/protected_badge.vue","webpack:///./vue_shared/components/badges/protected_badge.vue?cfc8","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js"],"names":["__vue_script__","name","components","GlButton","directives","GlTooltip","props","title","type","String","required","default","tooltipContainer","validator","value","HTMLElement","__vue_component__","render","_h","this","$createElement","_self","_c","_g","rawName","container","expression","modifiers","staticClass","attrs","$listeners","staticRenderFns","undefined","baseClamp","toNumber","module","exports","number","lower","upper","isOption","item","Boolean","isGroup","options","arguments","length","Array","isArray","every","hasNoDuplicates","array","Set","size","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","map","_ref","hasUniqueValues","filter","_ref2","text","hasUniqueGroups","callbacks","Map","activeEventTypes","lastMousedown","globalListener","event","forEach","element","callback","eventTypes","originalEvent","contains","target","includes","e","onMousedown","OutsideDirective","bind","el","bindings","_ref3","arg","modifiersList","Object","keys","parseBinding","has","set","eventType","document","addEventListener","capture","add","startListening","unbind","entry","get","eventTypesToUnbind","delete","values","removeEventListener","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","ARROW_DOWN","ARROW_UP","END","ENTER","HOME","SPACE","POSITION_ABSOLUTE","POSITION_FIXED","GL_DROPDOWN_CONTENTS_CLASS","GlClearIconButton","GlIcon","model","prop","placeholder","computed","input","$emit","methods","focusInput","$refs","focus","_vm","_v","ref","domProps","inputListeners","on","$event","stopPropagation","clearInput","apply","_e","textSrOnly","nameId","class","_t","_s","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","events","GlBaseDropdown","GlListboxItem","GlListboxGroup","GlSearchBoxByType","GlListboxSearchInput","GlLoadingIcon","GlIntersectionObserver","selected","Number","multiple","toggleText","headerText","category","primary","variant","icon","disabled","loading","toggleClass","noCaret","placement","isCheckCentered","toggleAriaLabelledBy","listAriaLabelledBy","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","searchPlaceholder","resetButtonLabel","showSelectAllButtonLabel","block","dropdownOffset","fluidWidth","positioningStrategy","strategy","startOpened","srOnlyResultsLabel","Function","data","selectedValues","toggleId","listboxId","nextFocusedItemIndex","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","find","findIndex","sort","showNoResultsText","showSelectAllButton","$scopedSlots","toggle","toggleClasses","hasSelection","push","footer","watch","immediate","newSelected","$nextTick","observeScroll","searchHasOptions","open","_this$scrollObserver","scrollObserver","disconnect","baseDropdown","close","groupClasses","index","_this$selectedIndices","focusSearchInput","focusItem","selectedIndices","getFocusableListItemElements","code","elements","stop","isSearchInput","matches","indexOf","focusNextItem","onSelect","_this$$refs$list","list","querySelectorAll","from","offset","currentIndex","nextIndex","_elements$index","searchBox","isSelected","onMultiSelect","onSingleSelect","some","closeAndFocus","selectedValue","searchTerm","_this$scrollObserver2","rootMargin","root","threshold","observer","IntersectionObserver","entries","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","observe","listboxToggleText","toggleButtonClasses","_d","$options","onShow","onHide","scopedSlots","_u","key","fn","proxy","headerId","onResetButtonClicked","onSelectAllButtonClicked","search","_k","keyCode","preventDefault","onKeydown","$$v","tag","listboxClasses","itemTag","hasHeader","_l","_b","isHighlighted","isFocused","listboxItemMoreItemsAriaAttributes","option","onIntersectionObserverAppear","hasFooter","getObserver","$_gl_intersectionHandler","$el","$_gl_intersectionObserver","unobserve","GlFormInput","inheritAttrs","borderless","clearButtonTitle","isLoading","attributes","$attrs","onInput","focusin","onFocusin","focusout","onFocusout","hasValue","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","BASE_DROPDOWN_CLASS","Outside","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","visible","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","is","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","listeners","keydown","click","toggleOptions","_this$$refs$toggle","firstElementChild","isFixed","alignment","split","middleware","allowedPlacements","dropdownArrow","_this$nonScrollableCo","availableHeight","contentsEl","floating","querySelector","contentsAvailableHeight","nonScrollableContentHeight","assign","style","maxHeight","Math","max","deep","toggleElement","setAttribute","checkToggleFocusable","stopFloating","actualPlacement","offsetConfigs","top","staticSide","rotation","bottom","left","right","calculateNonScrollableAreaHeight","MutationObserver","content","childList","subtree","stopAutoUpdate","async","result","floatingUIConfig","x","y","middlewareData","getArrowOffsets","arrow","arrowX","arrowY","toggleRect","getBoundingClientRect","contentRect","clampedArrowX","width","min","transform","_this$observer","_this$stopAutoUpdate","call","prevented","startFloating","hadFocusWithin","activeElement","hasToggled","focusToggle","tagName","toggleOnEnter","toggleOnSpace","_this$$refs$content","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","height","toggleComponent","toggleAttributes","toggleListeners","panelClasses","GlBadge","GlTooltipDirective","tooltipText","component","__","toggleSelection","checkedClasses"],"mappings":"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","file":"commons-pages.groups.packages-pages.groups.registry.repositories-pages.groups.security.policies.edit-429ebfda.daa705c1.chunk.js","sourcesContent":["import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlButton from '../../base/button/button';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'ClearIconButton',\n components: {\n GlButton\n },\n directives: {\n GlTooltip: GlTooltipDirective\n },\n props: {\n title: {\n type: String,\n required: false,\n default: () => translate('ClearIconButton.title', 'Clear')\n },\n tooltipContainer: {\n required: false,\n default: false,\n validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button',_vm._g({directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:({ container: _vm.tooltipContainer }),expression:\"{ container: tooltipContainer }\",modifiers:{\"hover\":true}}],staticClass:\"gl-clear-icon-button\",attrs:{\"variant\":\"default\",\"category\":\"tertiary\",\"size\":\"small\",\"name\":\"clear\",\"icon\":\"clear\",\"title\":_vm.title,\"aria-label\":_vm.title}},_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","import isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nconst isOption = item => Boolean(item) && (isString(item.value) || isNumber(item.value));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isGroup = function () {\n let {\n options\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Array.isArray(options) && options.every(isOption);\n};\nconst hasNoDuplicates = array => array.length === new Set(array).size;\nconst flattenedOptions = items => items.flatMap(item => isOption(item) ? item : item.options);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isAllOptionsOrAllGroups = items => items.every(isOption) || items.every(isGroup);\nconst hasUniqueValues = items => hasNoDuplicates(flattenedOptions(items).map(_ref => {\n let {\n value\n } = _ref;\n return value;\n}));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst hasUniqueGroups = items => hasNoDuplicates(items.filter(isGroup).map(_ref2 => {\n let {\n text\n } = _ref2;\n return text;\n}));\nconst itemsValidator = items => isAllOptionsOrAllGroups(items) && hasUniqueValues(items) && hasUniqueGroups(items);\n\nexport { flattenedOptions, isOption, itemsValidator };\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","/**\n * Map }>\n */\nconst callbacks = new Map();\nconst click = 'click';\nconst focusin = 'focusin';\nconst supportedEventTypes = [click, focusin];\nconst defaultEventType = click;\n\n/**\n * A Set to keep track of currently active event types.\n * This ensures that event listeners are only added for the event types that are in use.\n *\n * @type {Set}\n */\nconst activeEventTypes = new Set();\nlet lastMousedown = null;\nconst globalListener = event => {\n callbacks.forEach((_ref, element) => {\n let {\n callback,\n eventTypes\n } = _ref;\n const originalEvent = event.type === click ? lastMousedown || event : event;\n if (\n // Ignore events that aren't targeted outside the element\n element.contains(originalEvent.target) ||\n // Ignore events that aren't the specified types for this element\n !eventTypes.includes(event.type)) {\n return;\n }\n try {\n callback(event);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n });\n if (event.type === click) {\n lastMousedown = null;\n }\n};\n\n// We need to listen for mouse events because text selection fires click event only when selection ends.\n// This means that the click event target could differ from the element where it originally started.\n// As example: if we use mouse events we could guarantee that selecting text within a dropdown won't close it.\nconst onMousedown = event => {\n lastMousedown = event;\n};\nconst startListening = eventTypes => {\n eventTypes.forEach(eventType => {\n if (!activeEventTypes.has(eventType)) {\n // Listening to mousedown events, ensures that a text selection doesn't trigger the\n // GlOutsideDirective 'click' callback if the selection started within the target element.\n if (eventType === click) {\n document.addEventListener('mousedown', onMousedown);\n }\n\n // Added { capture: true } to all event types to prevent the behavior discussed in https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/1686#note_412545027\n // Ensures the event listener handles the event in the capturing phase, avoiding issues encountered previously.\n // Cannot be tested with Jest or Cypress, but can be tested with Playwright in the future: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4272#note_1947425384\n document.addEventListener(eventType, globalListener, {\n capture: true\n });\n activeEventTypes.add(eventType);\n }\n });\n lastMousedown = null;\n};\nconst stopListening = eventTypesToUnbind => {\n eventTypesToUnbind.forEach(eventType => {\n if (activeEventTypes.has(eventType)) {\n if ([...callbacks.values()].every(_ref2 => {\n let {\n eventTypes\n } = _ref2;\n return !eventTypes.includes(eventType);\n })) {\n document.removeEventListener(eventType, globalListener);\n activeEventTypes.delete(eventType);\n }\n }\n });\n if (eventTypesToUnbind.includes(click) && !activeEventTypes.has(click)) {\n document.removeEventListener('mousedown', onMousedown);\n }\n};\nfunction parseBinding(_ref3) {\n let {\n arg,\n value,\n modifiers\n } = _ref3;\n const modifiersList = Object.keys(modifiers);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof value !== 'function') {\n throw new Error(`[GlOutsideDirective] Value must be a function; got ${typeof value}!`);\n }\n if (typeof arg !== 'undefined') {\n throw new Error(`[GlOutsideDirective] Arguments are not supported. Consider using modifiers instead.`);\n }\n const unsupportedModifiers = modifiersList.filter(modifier => !supportedEventTypes.includes(modifier));\n if (unsupportedModifiers.length > 0) {\n throw new Error(`[GlOutsideDirective] Cannot bind ${unsupportedModifiers.join(', ')} events; supported event types are: ${supportedEventTypes.join(', ')}`);\n }\n }\n return {\n callback: value,\n eventTypes: modifiersList.length > 0 ? modifiersList : [defaultEventType]\n };\n}\nconst bind = (el, bindings) => {\n const {\n callback,\n eventTypes\n } = parseBinding(bindings);\n if (callbacks.has(el)) {\n // This element is already bound. This is possible if two components, which\n // share the same root node, (i.e., one is a higher-order component\n // wrapping another) _both_ have this directive applied.\n //\n // Because Vue binds directives in the direction towards the root, only the\n // deepest instance of this directive will be bound.\n //\n // A future iteration may add support for binding all instances on a given\n // element.\n return;\n }\n callbacks.set(el, {\n callback,\n eventTypes\n });\n startListening(eventTypes);\n};\nconst unbind = el => {\n const entry = callbacks.get(el);\n if (entry) {\n callbacks.delete(el);\n stopListening(entry.eventTypes);\n }\n};\nconst OutsideDirective = {\n bind,\n unbind\n};\n\nexport { OutsideDirective };\n","// base dropdown events\nconst GL_DROPDOWN_SHOWN = 'shown';\nconst GL_DROPDOWN_HIDDEN = 'hidden';\nconst GL_DROPDOWN_BEFORE_CLOSE = 'beforeClose';\nconst GL_DROPDOWN_FOCUS_CONTENT = 'focusContent';\n\n// KEY Codes\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_UP = 'ArrowUp';\nconst END = 'End';\nconst ENTER = 'Enter';\nconst HOME = 'Home';\nconst SPACE = 'Space';\n\n// Positioning strategies\n// https://floating-ui.com/docs/computePosition#strategy\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\nconst GL_DROPDOWN_CONTENTS_CLASS = 'gl-new-dropdown-contents';\n\nexport { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };\n","import GlClearIconButton from '../../../shared_components/clear_icon_button/clear_icon_button';\nimport GlIcon from '../../icon/icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxSearchInput',\n components: {\n GlClearIconButton,\n GlIcon\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n /**\n * If provided, used as value of search input\n */\n value: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Search input placeholder text and aria-label\n */\n placeholder: {\n type: String,\n required: false,\n default: 'Search'\n }\n },\n computed: {\n hasValue() {\n return Boolean(this.value.length);\n },\n inputListeners() {\n return {\n ...this.$listeners,\n input: event => {\n this.$emit('input', event.target.value);\n }\n };\n }\n },\n methods: {\n clearInput() {\n this.$emit('input', '');\n this.focusInput();\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-listbox-search\"},[_c('gl-icon',{staticClass:\"gl-listbox-search-icon\",attrs:{\"name\":\"search-sm\",\"size\":12}}),_vm._v(\" \"),_c('input',_vm._g({ref:\"input\",staticClass:\"gl-listbox-search-input\",attrs:{\"type\":\"search\",\"aria-label\":_vm.placeholder,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value}},_vm.inputListeners)),_vm._v(\" \"),(_vm.hasValue)?_c('gl-clear-icon-button',{staticClass:\"gl-listbox-search-clear-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)}}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxGroup',\n props: {\n name: {\n type: String,\n required: true\n },\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n created() {\n this.nameId = uniqueId('gl-listbox-group-');\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"gl-mb-0 gl-pl-0\",attrs:{\"role\":\"group\",\"aria-labelledby\":_vm.nameId}},[_c('li',{staticClass:\"gl-pb-2 gl-pl-4 gl-pt-3 gl-text-sm gl-font-bold gl-text-strong\",class:{ 'gl-sr-only': _vm.textSrOnly },attrs:{\"id\":_vm.nameId,\"role\":\"presentation\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.name))]})],2),_vm._v(\" \"),_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport isNil from 'lodash/isNil';\nimport { stopEvent } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, HOME, END, ARROW_UP, ARROW_DOWN, ENTER } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport GlLoadingIcon from '../../loading_icon/loading_icon';\nimport GlIntersectionObserver from '../../../utilities/intersection_observer/intersection_observer';\nimport GlSearchBoxByType from '../../search_box_by_type/search_box_by_type';\nimport GlBaseDropdown from '../base_dropdown/base_dropdown';\nimport { translatePlural } from '../../../../utils/i18n';\nimport GlListboxItem from './listbox_item';\nimport GlListboxSearchInput from './listbox_search_input';\nimport GlListboxGroup from './listbox_group';\nimport { itemsValidator, isOption, flattenedOptions } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst ITEM_SELECTOR = '[role=\"option\"]';\nconst HEADER_ITEMS_BORDER_CLASSES = ['gl-border-b-1', 'gl-border-b-solid', 'gl-border-b-dropdown-divider'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t-1', 'gl-border-t-solid', 'gl-border-t-dropdown-divider', 'gl-pt-1', 'gl-mt-2'];\nconst SEARCH_INPUT_SELECTOR = '.gl-listbox-search-input';\nvar script = {\n name: 'GlCollapsibleListbox',\n HEADER_ITEMS_BORDER_CLASSES,\n events: {\n GL_DROPDOWN_SHOWN,\n GL_DROPDOWN_HIDDEN\n },\n components: {\n GlBaseDropdown,\n GlListboxItem,\n GlListboxGroup,\n GlButton,\n GlSearchBoxByType,\n GlListboxSearchInput,\n GlLoadingIcon,\n GlIntersectionObserver\n },\n model: {\n prop: 'selected',\n event: 'select'\n },\n props: {\n /**\n * Items to display in the dropdown\n */\n items: {\n type: Array,\n required: false,\n default: () => [],\n validator: itemsValidator\n },\n /**\n * Array of selected items values for multi-select and selected item value for single-select\n */\n selected: {\n type: [Array, String, Number],\n required: false,\n default: () => []\n },\n /**\n * Allow multi-selection\n */\n multiple: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Toggle button text\n */\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Toggle text to be read by screen readers only\n */\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n /** The header text */\n headerText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Styling option - dropdown's toggle category\n */\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => value in buttonCategoryOptions\n },\n /**\n * Styling option - dropdown's toggle variant\n */\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => value in dropdownVariantOptions\n },\n /**\n * The size of the dropdown toggle\n */\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => value in buttonSizeOptions\n },\n /**\n * Icon name that will be rendered in the toggle button\n */\n icon: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Set to \"true\" to disable the dropdown\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when dropdown content (items) is loading\n * It will render a small loader in the dropdown toggle and make it disabled\n */\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Additional CSS classes to customize toggle appearance\n */\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n /**\n * Set to \"true\" to hide the caret\n */\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Align listbox menu with respect to the toggle button\n */\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => Object.keys(dropdownPlacements).includes(value)\n },\n /**\n * Center selected item checkmark\n */\n isCheckCentered: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * The `aria-labelledby` attribute value for the toggle button\n * Provide the string of ids seperated by space\n */\n toggleAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The `aria-labelledby` attribute value for the list of options\n * Provide the string of ids seperated by space\n */\n listAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Enable search\n */\n searchable: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when items search is in progress.\n * It will display loading icon below the search input\n */\n searching: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Enables infinite scroll.\n * When set to `true`, the `@bottom-reached` event will be fired when\n * the bottom of the listbox is scrolled to.\n * Does not support groups.\n */\n infiniteScroll: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * This prop is used for infinite scroll.\n * It represents the total number of items that exist,\n * even if they have not yet been loaded.\n * Do not set this prop if the total number of items is unknown.\n */\n totalItems: {\n type: Number,\n required: false,\n default: null\n },\n /**\n * This prop is used for infinite scroll.\n * Set to `true` when more items are being loaded.\n */\n infiniteScrollLoading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Message to be displayed when filtering produced no results\n */\n noResultsText: {\n type: String,\n required: false,\n default: 'No results found'\n },\n /**\n * Search input placeholder text and aria-label\n */\n searchPlaceholder: {\n type: String,\n required: false,\n default: 'Search'\n },\n /**\n * The reset button's label, to be rendered in the header. If this is omitted, the button is not\n * rendered.\n * The reset button requires a header to be set, so this prop should be used in conjunction with\n * headerText.\n */\n resetButtonLabel: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * The select all button's label, to be rendered in the header. If this is omitted, the button is not\n * rendered.\n * The select all button requires a header to be set, so this prop should be used in conjunction with\n * headerText.\n */\n showSelectAllButtonLabel: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Render the toggle button as a block element\n */\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Custom offset to be applied to Floating UI's offset middleware.\n * https://floating-ui.com/docs/offset\n */\n dropdownOffset: {\n type: [Number, Object],\n required: false,\n default: undefined\n },\n /**\n * Lets the dropdown extend to match its content's width, up to a maximum width\n * defined by the `$gl-new-dropdown-max-width` variable.\n */\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n * fit in, setting this to fixed will let it position itself above its container.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n },\n /**\n * Opens dropdown on render\n */\n startOpened: {\n type: Boolean,\n required: false,\n default: false\n },\n srOnlyResultsLabel: {\n type: Function,\n required: false,\n default: translatePlural('GlCollapsibleListbox.srOnlyResultsLabel', '%d result', '%d results')\n }\n },\n data() {\n return {\n selectedValues: [],\n toggleId: uniqueId('dropdown-toggle-btn-'),\n listboxId: uniqueId('listbox-'),\n nextFocusedItemIndex: null,\n searchStr: '',\n topBoundaryVisible: true,\n bottomBoundaryVisible: true\n };\n },\n computed: {\n listboxTag() {\n if (!this.hasItems || isOption(this.items[0])) return 'ul';\n return 'div';\n },\n listboxClasses() {\n return {\n 'top-scrim-visible': !this.topBoundaryVisible,\n 'bottom-scrim-visible': !this.bottomBoundaryVisible,\n [GL_DROPDOWN_CONTENTS_CLASS]: true\n };\n },\n itemTag() {\n return this.listboxTag === 'ul' ? 'li' : 'div';\n },\n flattenedOptions() {\n return flattenedOptions(this.items);\n },\n searchHasOptions() {\n return this.flattenedOptions.length > 0 && this.searchStr;\n },\n hasItems() {\n return this.items.length > 0;\n },\n listboxToggleText() {\n if (!this.toggleText) {\n if (!this.multiple && this.selectedValues.length) {\n var _this$flattenedOption;\n return (_this$flattenedOption = this.flattenedOptions.find(_ref => {\n let {\n value\n } = _ref;\n return value === this.selectedValues[0];\n })) === null || _this$flattenedOption === void 0 ? void 0 : _this$flattenedOption.text;\n }\n return '';\n }\n return this.toggleText;\n },\n selectedIndices() {\n return this.selectedValues.map(selected => this.flattenedOptions.findIndex(_ref2 => {\n let {\n value\n } = _ref2;\n return value === selected;\n })).sort();\n },\n showList() {\n return this.flattenedOptions.length && !this.searching;\n },\n showNoResultsText() {\n return !this.flattenedOptions.length && !this.searching;\n },\n announceSRSearchResults() {\n return this.searchable && !this.showNoResultsText;\n },\n headerId() {\n return this.headerText && uniqueId('listbox-header-');\n },\n showResetButton() {\n if (!this.resetButtonLabel) {\n return false;\n }\n\n /**\n * if dropdown has no items\n * reset all should be hidden\n */\n if (!this.hasItems) {\n return false;\n }\n\n // hide if no selection\n if (!this.selected || this.selected.length === 0) {\n return false;\n }\n\n // only show reset button if show all button is not there\n return !this.showSelectAllButton;\n },\n showSelectAllButton() {\n if (!this.showSelectAllButtonLabel) {\n return false;\n }\n if (!this.multiple) {\n return false;\n }\n\n /**\n * if dropdown has no items\n * select all should be hidden\n */\n if (!this.hasItems) {\n return false;\n }\n return this.selected.length !== this.flattenedOptions.length;\n },\n showIntersectionObserver() {\n return this.infiniteScroll && !this.infiniteScrollLoading && !this.loading && !this.searching;\n },\n hasCustomToggle() {\n return Boolean(this.$scopedSlots.toggle);\n },\n hasSelection() {\n return Boolean(this.selectedValues.length);\n },\n toggleButtonClasses() {\n const toggleClasses = [this.toggleClass];\n if (!this.hasSelection) {\n toggleClasses.push('!gl-text-subtle');\n }\n return toggleClasses;\n },\n hasHeader() {\n return this.headerText || this.searchable;\n },\n hasFooter() {\n return Boolean(this.$scopedSlots.footer);\n }\n },\n watch: {\n selected: {\n immediate: true,\n handler(newSelected) {\n if (Array.isArray(newSelected)) {\n if (process.env.NODE_ENV !== 'production' && !this.multiple && newSelected.length) {\n throw new Error('To allow multi-selection, please, set \"multiple\" property to \"true\"');\n }\n this.selectedValues = [...newSelected];\n } else {\n this.selectedValues = isNil(newSelected) ? [] : [newSelected];\n }\n }\n },\n items: {\n handler() {\n this.$nextTick(() => {\n /* Every time the list of items changes (on search),\n * the observed elements are recreated, thus we need to start obesrving them again */\n this.observeScroll();\n\n /**\n * Every time the list of items changes, and there is a search string,\n * we want to visually highlight the first item\n */\n if (this.searchHasOptions) {\n this.nextFocusedItemIndex = 0;\n } else {\n this.nextFocusedItemIndex = null;\n }\n });\n }\n },\n ...(process.env.NODE_ENV !== 'production' ? {\n resetButtonLabel: {\n immediate: true,\n handler(newResetButtonLabel) {\n if (newResetButtonLabel && !this.headerText) {\n throw new Error('The reset button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the resetButtonLabel prop.');\n }\n }\n },\n showSelectAllButtonLabel: {\n immediate: true,\n handler(showSelectAllButtonLabel) {\n if (showSelectAllButtonLabel && !this.headerText) {\n throw new Error('The select all button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the showSelectAllButtonLabel prop.');\n }\n }\n },\n infiniteScroll: {\n immediate: true,\n handler(newValue) {\n if (newValue && this.items.some(item => !isOption(item))) {\n // eslint-disable-next-line no-console\n console.warn('When using grouped options infinite scroll can only be used on the last group.');\n }\n }\n }\n } : {})\n },\n mounted() {\n if (this.startOpened) {\n this.open();\n }\n this.observeScroll();\n },\n beforeDestroy() {\n var _this$scrollObserver;\n (_this$scrollObserver = this.scrollObserver) === null || _this$scrollObserver === void 0 ? void 0 : _this$scrollObserver.disconnect();\n },\n methods: {\n open() {\n this.$refs.baseDropdown.open();\n },\n close() {\n this.$refs.baseDropdown.close();\n },\n groupClasses(index) {\n return index === 0 ? null : GROUP_TOP_BORDER_CLASSES;\n },\n onShow() {\n if (this.searchable) {\n this.focusSearchInput();\n\n /**\n * If the search string is not empty, highlight the first item\n */\n if (this.searchHasOptions) {\n this.nextFocusedItemIndex = 0;\n }\n } else {\n var _this$selectedIndices;\n this.focusItem((_this$selectedIndices = this.selectedIndices[0]) !== null && _this$selectedIndices !== void 0 ? _this$selectedIndices : 0, this.getFocusableListItemElements());\n }\n /**\n * Emitted when dropdown is shown\n *\n * @event shown\n */\n this.$emit(GL_DROPDOWN_SHOWN);\n },\n onHide() {\n /**\n * Emitted when dropdown is hidden\n *\n * @event hidden\n */\n this.$emit(GL_DROPDOWN_HIDDEN);\n this.nextFocusedItemIndex = null;\n },\n onKeydown(event) {\n const {\n code,\n target\n } = event;\n const elements = this.getFocusableListItemElements();\n if (elements.length < 1) return;\n let stop = true;\n const isSearchInput = target.matches(SEARCH_INPUT_SELECTOR);\n if (code === HOME) {\n if (isSearchInput) {\n return;\n }\n this.focusItem(0, elements);\n } else if (code === END) {\n if (isSearchInput) {\n return;\n }\n this.focusItem(elements.length - 1, elements);\n } else if (code === ARROW_UP) {\n if (isSearchInput) {\n return;\n }\n if (this.searchable && elements.indexOf(target) === 0) {\n this.focusSearchInput();\n if (!this.searchHasOptions) {\n this.nextFocusedItemIndex = null;\n }\n } else {\n this.focusNextItem(event, elements, -1);\n }\n } else if (code === ARROW_DOWN) {\n if (isSearchInput) {\n this.focusItem(0, elements);\n } else {\n this.focusNextItem(event, elements, 1);\n }\n } else if (code === ENTER && isSearchInput) {\n if (this.searchHasOptions && elements.length > 0) {\n this.onSelect(this.flattenedOptions[0], true);\n }\n stop = true;\n } else {\n stop = false;\n }\n if (stop) {\n stopEvent(event);\n }\n },\n getFocusableListItemElements() {\n var _this$$refs$list;\n const items = (_this$$refs$list = this.$refs.list) === null || _this$$refs$list === void 0 ? void 0 : _this$$refs$list.querySelectorAll(ITEM_SELECTOR);\n return Array.from(items || []);\n },\n focusNextItem(event, elements, offset) {\n const {\n target\n } = event;\n const currentIndex = elements.indexOf(target);\n const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n this.focusItem(nextIndex, elements);\n },\n focusItem(index, elements) {\n var _elements$index;\n this.nextFocusedItemIndex = index;\n (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n },\n focusSearchInput() {\n this.$refs.searchBox.focusInput();\n },\n onSelect(item, isSelected) {\n if (this.multiple) {\n this.onMultiSelect(item.value, isSelected);\n } else {\n this.onSingleSelect(item.value, isSelected);\n }\n },\n isHighlighted(item) {\n return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n },\n isSelected(item) {\n return this.selectedValues.some(value => value === item.value);\n },\n isFocused(item) {\n return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n },\n onSingleSelect(value, isSelected) {\n if (isSelected) {\n /**\n * Emitted when selection is changed\n *\n * @event select\n */\n this.$emit('select', value);\n }\n this.closeAndFocus();\n },\n onMultiSelect(value, isSelected) {\n if (isSelected) {\n this.$emit('select', [...this.selectedValues, value]);\n } else {\n this.$emit('select', this.selectedValues.filter(selectedValue => selectedValue !== value));\n }\n },\n search(searchTerm) {\n /**\n * Emitted when the search query string is changed\n *\n * @event search\n * @type {string}\n */\n this.$emit('search', searchTerm);\n },\n onResetButtonClicked() {\n /**\n * Emitted when the reset button is clicked\n *\n * @event reset\n */\n this.$emit('reset');\n },\n onSelectAllButtonClicked() {\n /**\n * Emitted when the select all button is clicked\n *\n * @event select-all\n */\n this.$emit('select-all');\n },\n closeAndFocus() {\n this.$refs.baseDropdown.closeAndFocus();\n },\n onIntersectionObserverAppear() {\n /**\n * Emitted when bottom of listbox has been scrolled to.\n * Used for infinite scroll.\n *\n * @event bottom-reached\n */\n this.$emit('bottom-reached');\n },\n listboxItemMoreItemsAriaAttributes(index) {\n if (this.totalItems === null) {\n return {};\n }\n return {\n 'aria-setsize': this.totalItems,\n 'aria-posinset': index + 1\n };\n },\n observeScroll() {\n var _this$scrollObserver2;\n const root = this.$refs.list;\n const options = {\n rootMargin: '8px',\n root,\n threshold: 1.0\n };\n (_this$scrollObserver2 = this.scrollObserver) === null || _this$scrollObserver2 === void 0 ? void 0 : _this$scrollObserver2.disconnect();\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n var _entry$target;\n this[(_entry$target = entry.target) === null || _entry$target === void 0 ? void 0 : _entry$target.$__visibilityProp] = entry.isIntersecting;\n });\n }, options);\n const topBoundary = this.$refs['top-boundary'];\n const bottomBoundary = this.$refs['bottom-boundary'];\n if (topBoundary) {\n topBoundary.$__visibilityProp = 'topBoundaryVisible';\n observer.observe(topBoundary);\n }\n if (bottomBoundary) {\n bottomBoundary.$__visibilityProp = 'bottomBoundaryVisible';\n observer.observe(bottomBoundary);\n }\n this.scrollObserver = observer;\n },\n isOption\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",attrs:{\"aria-haspopup\":\"listbox\",\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"block\":_vm.block,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.listboxToggleText,\"toggle-class\":_vm.toggleButtonClasses,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.headerText)?_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center !gl-p-4\",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:\"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.headerId,\"data-testid\":\"listbox-header-text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.headerText)+\"\\n \")]),_vm._v(\" \"),(_vm.showResetButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-reset-button\"},on:{\"click\":_vm.onResetButtonClicked}},[_vm._v(\"\\n \"+_vm._s(_vm.resetButtonLabel)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-select-all-button\"},on:{\"click\":_vm.onSelectAllButtonClicked}},[_vm._v(\"\\n \"+_vm._s(_vm.showSelectAllButtonLabel)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:\"searchBox\",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{\"data-testid\":\"listbox-search-input\",\"placeholder\":_vm.searchPlaceholder},on:{\"input\":_vm.search,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:\"searchStr\"}}),_vm._v(\" \"),(_vm.searching)?_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-search-loader\",\"size\":\"md\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showList)?_c(_vm.listboxTag,{ref:\"list\",tag:\"component\",staticClass:\"gl-new-dropdown-contents gl-new-dropdown-contents-with-scrim-overlay\",class:_vm.listboxClasses,attrs:{\"id\":_vm.listboxId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,\"role\":\"listbox\",\"tabindex\":\"0\"},on:{\"keydown\":_vm.onKeydown}},[_c(_vm.itemTag,{tag:\"component\",staticClass:\"top-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"top-scrim\"}},[_c('div',{staticClass:\"top-scrim\",class:{ 'top-scrim-light': !_vm.hasHeader, 'top-scrim-dark': _vm.hasHeader }})]),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"top-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{\"data-testid\":(\"listbox-item-\" + (item.value)),\"is-highlighted\":_vm.isHighlighted(item),\"is-selected\":_vm.isSelected(item),\"is-focused\":_vm.isFocused(item),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(item.text)+\"\\n \")]},{\"item\":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{\"name\":item.text,\"text-sr-only\":item.textSrOnly},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{\"data-testid\":(\"listbox-item-\" + (option.value)),\"is-highlighted\":_vm.isHighlighted(option),\"is-selected\":_vm.isSelected(option),\"is-focused\":_vm.isFocused(option),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(option, $event)}}},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(option.text)+\"\\n \")]},{\"item\":option})],2)})],2)]]}),_vm._v(\" \"),(_vm.infiniteScrollLoading)?_c(_vm.itemTag,{tag:\"component\"},[_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-infinite-scroll-loader\",\"size\":\"md\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showIntersectionObserver)?_c('gl-intersection-observer',{on:{\"appear\":_vm.onIntersectionObserverAppear}}):_vm._e(),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"bottom-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c(_vm.itemTag,{tag:\"component\",staticClass:\"bottom-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"bottom-scrim\"}},[_c('div',{staticClass:\"bottom-scrim\",class:{ '!gl-rounded-none': _vm.hasFooter }})])],2):_vm._e(),_vm._v(\" \"),(_vm.announceSRSearchResults)?_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"listbox-number-of-results\",\"aria-live\":\"assertive\"}},[_vm._t(\"search-summary-sr-only\",function(){return [_vm._v(\"\\n \"+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+\"\\n \")]})],2):(_vm.showNoResultsText)?_c('div',{staticClass:\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle\",attrs:{\"aria-live\":\"assertive\",\"data-testid\":\"listbox-no-results-text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.noResultsText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { ITEM_SELECTOR, SEARCH_INPUT_SELECTOR };\n","import memoize from 'lodash/memoize';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst getObserver = memoize(options => new IntersectionObserver(entries => {\n entries.forEach(entry => {\n entry.target.$_gl_intersectionHandler(entry);\n });\n}, options || {}));\nvar script = {\n name: 'GlIntersectionObserver',\n props: {\n /**\n * Extra options to pass directly to the intersection observer API.\n */\n options: {\n type: Object,\n required: false,\n default: null\n }\n },\n mounted() {\n const observer = getObserver(this.options);\n this.$el.$_gl_intersectionHandler = entry => {\n /**\n * Emitted when the element's visibility changes\n */\n this.$emit('update', entry);\n if (entry.isIntersecting) {\n /**\n * Emitted when the element appears on the page\n */\n this.$emit('appear');\n } else {\n /**\n * Emitted when the element disappears from the page\n */\n this.$emit('disappear');\n }\n };\n this.$el.$_gl_intersectionObserver = observer;\n observer.observe(this.$el);\n },\n destroyed() {\n this.$el.$_gl_intersectionObserver.unobserve(this.$el);\n delete this.$el.$_gl_intersectionHandler;\n delete this.$el.$_gl_intersectionObserver;\n },\n // Expose getObserver method for tests\n getObserver\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlSearchBoxByType',\n components: {\n GlClearIconButton,\n GlIcon,\n GlFormInput,\n GlLoadingIcon\n },\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n /**\n * If provided, used as value of search input\n */\n value: {\n type: String,\n required: false,\n default: ''\n },\n borderless: {\n type: Boolean,\n required: false,\n default: false\n },\n clearButtonTitle: {\n type: String,\n required: false,\n default: () => translate('GlSearchBoxByType.clearButtonTitle', 'Clear')\n },\n /**\n * If provided and true, disables the input and controls\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Puts search box into loading state, rendering spinner\n */\n isLoading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Container for tooltip. Valid values: DOM node, selector string or `false` for default\n */\n tooltipContainer: {\n required: false,\n default: false,\n validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n }\n },\n computed: {\n inputAttributes() {\n const attributes = {\n type: 'search',\n placeholder: translate('GlSearchBoxByType.input.placeholder', 'Search'),\n ...this.$attrs\n };\n if (!attributes['aria-label']) {\n attributes['aria-label'] = attributes.placeholder;\n }\n return attributes;\n },\n hasValue() {\n return Boolean(this.value.length);\n },\n inputListeners() {\n return {\n ...this.$listeners,\n input: this.onInput,\n focusin: this.onFocusin,\n focusout: this.onFocusout\n };\n },\n showClearButton() {\n return this.hasValue && !this.disabled;\n }\n },\n methods: {\n isInputOrClearButton(element) {\n var _this$$refs$input, _this$$refs$clearButt;\n return element === ((_this$$refs$input = this.$refs.input) === null || _this$$refs$input === void 0 ? void 0 : _this$$refs$input.$el) || element === ((_this$$refs$clearButt = this.$refs.clearButton) === null || _this$$refs$clearButt === void 0 ? void 0 : _this$$refs$clearButt.$el);\n },\n clearInput() {\n this.onInput('');\n this.focusInput();\n },\n focusInput() {\n this.$refs.input.$el.focus();\n },\n onInput(value) {\n this.$emit('input', value);\n },\n onFocusout(event) {\n const {\n relatedTarget\n } = event;\n if (this.isInputOrClearButton(relatedTarget)) {\n return;\n }\n this.$emit('focusout', event);\n },\n onFocusin(event) {\n const {\n relatedTarget\n } = event;\n if (this.isInputOrClearButton(relatedTarget)) {\n return;\n }\n this.$emit('focusin', event);\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-search-box-by-type\"},[_c('gl-icon',{staticClass:\"gl-search-box-by-type-search-icon\",attrs:{\"name\":\"search\",\"variant\":\"subtle\"}}),_vm._v(\" \"),_c('gl-form-input',_vm._g(_vm._b({ref:\"input\",class:{\n 'gl-search-box-by-type-input': !_vm.borderless,\n 'gl-search-box-by-type-input-borderless': _vm.borderless,\n },attrs:{\"value\":_vm.value,\"disabled\":_vm.disabled}},'gl-form-input',_vm.inputAttributes,false),_vm.inputListeners)),_vm._v(\" \"),(_vm.isLoading || _vm.showClearButton)?_c('div',{staticClass:\"gl-search-box-by-type-right-icons\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-search-box-by-type-loading-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.showClearButton)?_c('gl-clear-icon-button',{ref:\"clearButton\",staticClass:\"gl-search-box-by-type-clear gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)},\"focusin\":_vm.onFocusin,\"focusout\":_vm.onFocusout}}):_vm._e()],1):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport { offset, autoPlacement, shift, arrow, size, autoUpdate, computePosition } from '@floating-ui/dom';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';\nimport { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';\nimport { logWarning, isElementFocusable, isElementTabbable } from '../../../../utils/utils';\nimport { OutsideDirective } from '../../../../directives/outside/outside';\nimport GlButton from '../../button/button';\nimport GlIcon from '../../icon/icon';\nimport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS, ARROW_X_MINIMUM } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BASE_DROPDOWN_CLASS = 'gl-new-dropdown';\nvar script = {\n name: 'BaseDropdown',\n BASE_DROPDOWN_CLASS,\n components: {\n GlButton,\n GlIcon\n },\n directives: {\n Outside: OutsideDirective\n },\n props: {\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => Object.keys(buttonCategoryOptions).includes(value)\n },\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => Object.keys(dropdownVariantOptions).includes(value)\n },\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => Object.keys(buttonSizeOptions).includes(value)\n },\n icon: {\n type: String,\n required: false,\n default: ''\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => {\n if (['left', 'center', 'right'].includes(value)) {\n logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: \"${value}\" placement is deprecated.\n Use ${dropdownPlacements[value]} instead.`);\n }\n return Object.keys(dropdownPlacements).includes(value);\n }\n },\n // ARIA props\n ariaHaspopup: {\n type: [String, Boolean],\n required: false,\n default: false,\n validator: value => {\n return ['menu', 'listbox', 'tree', 'grid', 'dialog', true, false].includes(value);\n }\n },\n /**\n * Id that will be referenced by `aria-labelledby` attribute of the dropdown content`\n */\n toggleId: {\n type: String,\n required: true\n },\n /**\n * The `aria-labelledby` attribute value for the toggle `button`\n */\n ariaLabelledby: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Custom value to be passed to the offset middleware.\n * https://floating-ui.com/docs/offset\n */\n offset: {\n type: [Number, Object],\n required: false,\n default: () => ({\n mainAxis: DEFAULT_OFFSET\n })\n },\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position\n * needs to be set to fixed in CSS as well.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n }\n },\n data() {\n return {\n openedYet: false,\n visible: false,\n baseDropdownId: uniqueId('base-dropdown-')\n };\n },\n computed: {\n hasNoVisibleToggleText() {\n var _this$toggleText;\n return !((_this$toggleText = this.toggleText) !== null && _this$toggleText !== void 0 && _this$toggleText.length) || this.textSrOnly;\n },\n isIconOnly() {\n return Boolean(this.icon && this.hasNoVisibleToggleText);\n },\n isEllipsisButton() {\n return this.isIconOnly && this.icon === 'ellipsis_h';\n },\n isCaretOnly() {\n return !this.noCaret && !this.icon && this.hasNoVisibleToggleText;\n },\n ariaAttributes() {\n return {\n 'aria-haspopup': this.ariaHaspopup,\n 'aria-expanded': String(this.visible),\n 'aria-controls': this.baseDropdownId,\n 'aria-labelledby': this.toggleLabelledBy\n };\n },\n toggleButtonClasses() {\n return [this.toggleClass, {\n 'gl-new-dropdown-toggle': true,\n 'button-ellipsis-horizontal': this.isEllipsisButton,\n 'gl-new-dropdown-icon-only btn-icon': this.isIconOnly && !this.isEllipsisButton,\n 'gl-new-dropdown-toggle-no-caret': this.noCaret,\n 'gl-new-dropdown-caret-only btn-icon': this.isCaretOnly\n }];\n },\n toggleButtonTextClasses() {\n return this.block ? 'gl-w-full' : '';\n },\n toggleLabelledBy() {\n return this.ariaLabelledby ? `${this.ariaLabelledby} ${this.toggleId}` : this.toggleId;\n },\n isDefaultToggle() {\n return !this.$scopedSlots.toggle;\n },\n toggleOptions() {\n if (this.isDefaultToggle) {\n return {\n is: GlButton,\n icon: this.icon,\n block: this.block,\n buttonTextClasses: this.toggleButtonTextClasses,\n category: this.category,\n variant: this.variant,\n size: this.size,\n disabled: this.disabled,\n loading: this.loading,\n class: this.toggleButtonClasses,\n ...this.ariaAttributes,\n listeners: {\n keydown: event => this.onKeydown(event),\n click: event => this.toggle(event)\n }\n };\n }\n return {\n is: 'div',\n class: 'gl-new-dropdown-custom-toggle',\n listeners: {\n keydown: event => this.onKeydown(event),\n click: event => this.toggle(event)\n }\n };\n },\n toggleListeners() {\n return this.toggleOptions.listeners;\n },\n toggleAttributes() {\n const {\n listeners,\n is,\n ...attributes\n } = this.toggleOptions;\n return attributes;\n },\n toggleComponent() {\n return this.toggleOptions.is;\n },\n toggleElement() {\n var _this$$refs$toggle;\n return this.$refs.toggle.$el || ((_this$$refs$toggle = this.$refs.toggle) === null || _this$$refs$toggle === void 0 ? void 0 : _this$$refs$toggle.firstElementChild);\n },\n panelClasses() {\n return {\n '!gl-block': this.visible,\n [FIXED_WIDTH_CLASS]: !this.fluidWidth,\n 'gl-fixed': this.openedYet && this.isFixed,\n 'gl-absolute': this.openedYet && !this.isFixed\n };\n },\n isFixed() {\n return this.positioningStrategy === POSITION_FIXED;\n },\n floatingUIConfig() {\n const placement = dropdownPlacements[this.placement];\n const [, alignment] = placement.split('-');\n return {\n placement,\n strategy: this.positioningStrategy,\n middleware: [offset(this.offset), autoPlacement({\n alignment,\n allowedPlacements: dropdownAllowedAutoPlacements[this.placement]\n }), shift(), arrow({\n element: this.$refs.dropdownArrow\n }), size({\n apply: _ref => {\n var _this$nonScrollableCo;\n let {\n availableHeight,\n elements\n } = _ref;\n const contentsEl = elements.floating.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n if (!contentsEl) return;\n const contentsAvailableHeight = availableHeight - ((_this$nonScrollableCo = this.nonScrollableContentHeight) !== null && _this$nonScrollableCo !== void 0 ? _this$nonScrollableCo : 0) - DEFAULT_OFFSET;\n Object.assign(contentsEl.style, {\n maxHeight: `${Math.max(contentsAvailableHeight, 0)}px`\n });\n }\n })]\n };\n }\n },\n watch: {\n ariaAttributes: {\n deep: true,\n handler(ariaAttributes) {\n if (this.$scopedSlots.toggle) {\n Object.keys(ariaAttributes).forEach(key => {\n this.toggleElement.setAttribute(key, ariaAttributes[key]);\n });\n }\n }\n }\n },\n mounted() {\n this.checkToggleFocusable();\n },\n beforeDestroy() {\n this.stopFloating();\n },\n methods: {\n checkToggleFocusable() {\n if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {\n logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: Toggle is missing a 'tabindex' and cannot be focused.\n Use 'a' or 'button' element instead or make sure to add 'role=\"button\"' along with 'tabindex' otherwise.`, this.$el);\n }\n },\n getArrowOffsets(actualPlacement) {\n // Try to extract the base direction (top, bottom, left, right) from the placement\n const direction = actualPlacement === null || actualPlacement === void 0 ? void 0 : actualPlacement.split('-')[0];\n const offsetConfigs = {\n top: {\n staticSide: 'bottom',\n rotation: '225deg'\n },\n bottom: {\n staticSide: 'top',\n rotation: '45deg'\n },\n left: {\n staticSide: 'right',\n rotation: '135deg'\n },\n right: {\n staticSide: 'left',\n rotation: '315deg'\n }\n };\n return offsetConfigs[direction] || offsetConfigs.bottom;\n },\n async startFloating() {\n this.calculateNonScrollableAreaHeight();\n this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);\n this.observer.observe(this.$refs.content, {\n childList: true,\n subtree: true\n });\n this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {\n const result = await computePosition(this.toggleElement, this.$refs.content, this.floatingUIConfig);\n\n /**\n * Due to the asynchronous nature of computePosition, it's technically possible for the\n * component to have been destroyed by the time the promise resolves. In such case, we exit\n * early to prevent a TypeError.\n */\n if (!this.$refs.content) return;\n const {\n x,\n y,\n middlewareData,\n placement\n } = result;\n\n // Get offsets based on actual placement, not requested placement\n const {\n rotation,\n staticSide\n } = this.getArrowOffsets(placement);\n\n // Assign dropdown window position\n Object.assign(this.$refs.content.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n\n // Assign arrow position\n if (middlewareData && middlewareData.arrow) {\n const {\n x: arrowX,\n y: arrowY\n } = middlewareData.arrow;\n\n /**\n * Clamp arrow X position to a minimum of 24px from the edge of the dropdown.\n * This prevents wide toggles from pushing the arrow to the very edge of the dropdown.\n */\n const toggleRect = this.toggleElement.getBoundingClientRect();\n const contentRect = this.$refs.content.getBoundingClientRect();\n const clampedArrowX = toggleRect.width > contentRect.width ? Math.min(Math.max(arrowX, ARROW_X_MINIMUM), contentRect.width - ARROW_X_MINIMUM) : arrowX;\n Object.assign(this.$refs.dropdownArrow.style, {\n left: arrowX != null ? `${clampedArrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [staticSide]: '-4px',\n transform: `rotate(${rotation})`\n });\n }\n });\n },\n stopFloating() {\n var _this$observer, _this$stopAutoUpdate;\n (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();\n (_this$stopAutoUpdate = this.stopAutoUpdate) === null || _this$stopAutoUpdate === void 0 ? void 0 : _this$stopAutoUpdate.call(this);\n },\n async toggle(event) {\n if (event && this.visible) {\n let prevented = false;\n this.$emit(GL_DROPDOWN_BEFORE_CLOSE, {\n originalEvent: event,\n preventDefault() {\n prevented = true;\n }\n });\n if (prevented) return false;\n }\n this.visible = !this.visible;\n if (this.visible) {\n // The dropdown needs to be actually visible before we compute its position with Floating UI.\n await this.$nextTick();\n this.openedYet = true;\n /**\n * We wait until the dropdown's position has been computed before emitting the `shown` event.\n * This ensures that, if the parent component attempts to focus an inner element, the dropdown\n * is already properly placed in the page. Otherwise, the page would scroll back to the top.\n */\n this.startFloating();\n this.$emit(GL_DROPDOWN_SHOWN);\n } else {\n this.stopFloating();\n this.$emit(GL_DROPDOWN_HIDDEN);\n }\n\n // this is to check whether `toggle` was prevented or not\n return true;\n },\n open() {\n if (this.visible) {\n return;\n }\n this.toggle();\n },\n close(event) {\n if (!this.visible) {\n return;\n }\n this.toggle(event);\n },\n /**\n * Closes the dropdown and returns the focus to the toggle unless it has has moved outside\n * of the dropdown, meaning that the consumer needed to put some other element in focus.\n *\n * @param {KeyboardEvent?} event The keyboard event that caused the dropdown to close.\n */\n async closeAndFocus(event) {\n if (!this.visible) {\n return;\n }\n const hadFocusWithin = this.$el.contains(document.activeElement);\n const hasToggled = await this.toggle(event);\n if (!hadFocusWithin) {\n return;\n }\n if (hasToggled) {\n this.focusToggle();\n }\n },\n focusToggle() {\n this.toggleElement.focus();\n },\n onKeydown(event) {\n const {\n code,\n target: {\n tagName\n }\n } = event;\n let toggleOnEnter = true;\n let toggleOnSpace = true;\n if (tagName === 'BUTTON') {\n toggleOnEnter = false;\n toggleOnSpace = false;\n } else if (tagName === 'A') {\n toggleOnEnter = false;\n }\n if (code === ENTER && toggleOnEnter || code === SPACE && toggleOnSpace) {\n this.toggle(event);\n }\n if (code === ARROW_DOWN) {\n this.$emit(GL_DROPDOWN_FOCUS_CONTENT, event);\n }\n },\n calculateNonScrollableAreaHeight() {\n var _this$$refs$content;\n const scrollableArea = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n if (!scrollableArea) return;\n const floatingElementBoundingBox = this.$refs.content.getBoundingClientRect();\n const scrollableAreaBoundingBox = scrollableArea.getBoundingClientRect();\n this.nonScrollableContentHeight = floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"outside\",rawName:\"v-outside.click.focusin\",value:(_vm.close),expression:\"close\",modifiers:{\"click\":true,\"focusin\":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:\"toggle\",tag:\"component\",attrs:{\"id\":_vm.toggleId,\"data-testid\":\"base-dropdown-toggle\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.close.apply(null, arguments)}}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t(\"toggle\",function(){return [_c('span',{staticClass:\"gl-new-dropdown-button-text\",class:{ 'gl-sr-only': _vm.textSrOnly }},[_vm._v(\"\\n \"+_vm._s(_vm.toggleText)+\"\\n \")]),_vm._v(\" \"),(!_vm.noCaret)?_c('gl-icon',{staticClass:\"gl-button-icon gl-new-dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}}):_vm._e()]})],2),_vm._v(\" \"),_c('div',{ref:\"content\",staticClass:\"gl-new-dropdown-panel\",class:_vm.panelClasses,attrs:{\"id\":_vm.baseDropdownId,\"data-testid\":\"base-dropdown-menu\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{ref:\"dropdownArrow\",staticClass:\"gl-new-dropdown-arrow\"}),_vm._v(\" \"),_c('div',{staticClass:\"gl-new-dropdown-inner\"},[_vm._t(\"default\")],2)])],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { BASE_DROPDOWN_CLASS };\n","const FIXED_WIDTH_CLASS = '!gl-w-31';\nconst DEFAULT_OFFSET = 8;\nconst ARROW_X_MINIMUM = 24;\n\nexport { ARROW_X_MINIMUM, DEFAULT_OFFSET, FIXED_WIDTH_CLASS };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.tooltipText,\"size\":\"sm\",\"variant\":\"neutral\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('protected'))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./protected_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./protected_badge.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./protected_badge.vue?vue&type=template&id=a4bb36b6\"\nimport script from \"./protected_badge.vue?vue&type=script&lang=js\"\nexport * from \"./protected_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GlIcon from '../../icon/icon';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxItem',\n components: {\n GlIcon\n },\n props: {\n isSelected: {\n type: Boolean,\n default: false,\n required: false\n },\n isFocused: {\n type: Boolean,\n default: false,\n required: false\n },\n isCheckCentered: {\n type: Boolean,\n required: false,\n default: false\n },\n isHighlighted: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n computed: {\n checkedClasses() {\n if (this.isCheckCentered) {\n return '';\n }\n return 'gl-mt-3 gl-self-start';\n }\n },\n methods: {\n toggleSelection() {\n this.$emit('select', !this.isSelected);\n },\n onKeydown(event) {\n const {\n code\n } = event;\n if (code === ENTER || code === SPACE) {\n stopEvent(event);\n this.toggleSelection();\n }\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:['gl-new-dropdown-item', { 'gl-new-dropdown-item-highlighted': _vm.isHighlighted }],attrs:{\"role\":\"option\",\"tabindex\":_vm.isFocused ? 0 : -1,\"aria-selected\":_vm.isSelected},on:{\"click\":_vm.toggleSelection,\"keydown\":_vm.onKeydown}},[_c('span',{staticClass:\"gl-new-dropdown-item-content\"},[_c('gl-icon',{class:[\n 'gl-new-dropdown-item-check-icon',\n { 'gl-invisible': !_vm.isSelected },\n _vm.checkedClasses ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"default\")],2)],1)])};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n"],"sourceRoot":""}