{"version":3,"sources":["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/@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/listbox/listbox_item.js"],"names":["isOption","item","Boolean","value","isGroup","options","arguments","length","undefined","Array","isArray","every","hasNoDuplicates","array","Set","size","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","map","_ref","hasUniqueValues","filter","_ref2","text","hasUniqueGroups","module","exports","__vue_script__","name","components","GlClearIconButton","GlIcon","model","prop","event","props","type","String","required","default","placeholder","computed","this","$listeners","input","$emit","target","methods","focusInput","$refs","focus","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","_g","ref","domProps","inputListeners","on","$event","stopPropagation","clearInput","apply","_e","staticRenderFns","textSrOnly","nameId","class","_t","_s","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","events","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GlBaseDropdown","GlListboxItem","GlListboxGroup","GlButton","GlSearchBoxByType","GlListboxSearchInput","GlLoadingIcon","GlIntersectionObserver","validator","selected","Number","multiple","toggleText","headerText","category","primary","variant","icon","disabled","loading","toggleClass","Object","noCaret","placement","keys","includes","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","open","_this$scrollObserver","scrollObserver","disconnect","baseDropdown","close","groupClasses","index","_this$selectedIndices","focusSearchInput","focusItem","selectedIndices","getFocusableListItemElements","code","elements","stop","isSearchInput","matches","indexOf","focusNextItem","_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","forEach","entry","_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","callback","$$v","expression","tag","listboxClasses","itemTag","hasHeader","_l","_b","isFocused","onSelect","listboxItemMoreItemsAriaAttributes","option","onIntersectionObserverAppear","hasFooter","getObserver","$_gl_intersectionHandler","$el","$_gl_intersectionObserver","unobserve","__vue_component__","GlFormInput","inheritAttrs","borderless","clearButtonTitle","isLoading","tooltipContainer","HTMLElement","attributes","$attrs","onInput","focusin","onFocusin","focusout","onFocusout","hasValue","element","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","toggleSelection","checkedClasses"],"mappings":"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","file":"56.74841c95.chunk.js","sourcesContent":["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","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 } 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'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-border-t-dropdown', '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    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    },\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            throw new Error('Infinite scroll does not support groups. Please set the \"infiniteScroll\" prop to \"false\"');\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      } 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        } 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 {\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    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-shadow-inner-2-blue-400\",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-shadow-inner-2-blue-400\",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-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-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 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  },\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',{staticClass:\"gl-new-dropdown-item\",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":""}