{"version":3,"sources":["webpack:///./invite_members/init_invite_members_trigger.js","webpack:///./helpers/event_hub_factory.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:///./invite_members/event_hub.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:///./invite_members/components/invite_members_trigger.vue","webpack:///./invite_members/components/invite_members_trigger.vue?f47d","webpack:///invite_members/components/invite_members_trigger.vue","webpack:///./invite_members/components/invite_members_trigger.vue?c527","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/disclosure/disclosure_dropdown_item.js","webpack:///./invite_members/constants.js"],"names":["initInviteMembersTrigger","triggers","document","querySelectorAll","forEach","el","Vue","name","render","createElement","InviteMembersTrigger","props","dataset","EventHub","constructor","this","$_all","Map","dispose","clear","$on","type","handler","handlers","get","push","set","$off","newHandlers","filter","x","length","delete","$once","_this","wrapHandler","args","$emit","isItem","item","Boolean","_item$text","text","Array","isArray","items","itemValidator","isGroup","group","every","itemsValidator","hasOnlyListItemsVue2","defaultSlot","nodes","tags","vNode","tag","_vNode$componentOptio","componentOptions","includes","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","find","node","children","trim","_vNode$type","isValidSlotTagVue3","hasOnlyListItems","version","startsWith","createEventHub","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","top","bottom","components","GlButton","GlLink","GlDropdownItem","GlDisclosureDropdownItem","displayText","String","required","default","s__","icon","classes","variant","undefined","category","triggerSource","triggerElement","computed","componentAttributes","class","isButtonTrigger","TRIGGER_ELEMENT_BUTTON","isWithEmojiTrigger","TRIGGER_ELEMENT_WITH_EMOJI","isDropdownWithEmojiTrigger","TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI","isDisclosureTrigger","TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN","methods","openModal","eventHub","source","handleDisclosureDropdownAction","component","_vm","_c","_self","_b","attrs","on","_v","_s","staticClass","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","ITEM_CLASS","__vue_script__","BLink","Object","validator","_this$item","_this$item2","href","to","$scopedSlots","isLink","is","extraAttrs","listeners","click","action","_item$action","call","_this$item3","_this$item3$extraAttr","disabled","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","keydown","onKeydown","isCustomContent","event","code","e","MouseEvent","bubbles","cancelable","_this$$refs$item","$refs","$el","dispatchEvent","__vue_component__","_h","$createElement","_g","$options","listIndex","wrapperListeners","_t","itemComponent","ref","componentIndex","staticRenderFns","PROJECT_SELECT_LABEL_ID","SEARCH_DELAY","VALID_TOKEN_BACKGROUND","WARNING_TOKEN_BACKGROUND","INVALID_TOKEN_BACKGROUND","TOAST_MESSAGE_LOCALSTORAGE_KEY","MEMBERS_WITH_QUEUED_STATUS_LOCALSTORAGE_KEY","GROUP_FILTERS","ALL","DESCENDANT_GROUPS","USERS_FILTER_ALL","USERS_FILTER_SAML_PROVIDER_ID","TOP_NAV_INVITE_MEMBERS_COMPONENT","INVITE_MEMBER_MODAL_TRACKING_CATEGORY","IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_CATEGORY","IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_LABEL","MEMBERS_MODAL_DEFAULT_TITLE","MEMBERS_MODAL_CELEBRATE_TITLE","MEMBERS_MODAL_CELEBRATE_INTRO","MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT","MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT","MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT","MEMBERS_SEARCH_FIELD","MEMBERS_PLACEHOLDER","GROUP_MODAL_DEFAULT_TITLE","GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT","GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT","GROUP_MODAL_TO_GROUP_ALERT_BODY","GROUP_MODAL_TO_GROUP_ALERT_LINK","helpPagePath","anchor","GROUP_MODAL_TO_PROJECT_ALERT_BODY","GROUP_MODAL_TO_PROJECT_ALERT_LINK","GROUP_SEARCH_FIELD","GROUP_PLACEHOLDER","ACCESS_LEVEL","ACCESS_EXPIRE_DATE","TOAST_MESSAGE_SUCCESSFUL","QUEUED_MESSAGE_SUCCESSFUL","INVALID_FEEDBACK_MESSAGE_DEFAULT","READ_MORE_TEXT","READ_MORE_ACCESS_EXPIRATION_TEXT","INVITE_BUTTON_TEXT","INVITE_BUTTON_TEXT_DISABLED","CANCEL_BUTTON_TEXT","HEADER_CLOSE_LABEL","MEMBER_ERROR_LIST_TEXT","COLLAPSED_ERRORS","EXPANDED_ERRORS","EMPTY_INVITES_ALERT_TEXT","MEMBER_MODAL_LABELS","modal","title","celebrate","intro","toGroup","introText","toProject","searchField","placeHolder","toastMessageSuccessful","memberErrorListText","collapsedErrors","expandedErrors","emptyInvitesAlertText","GROUP_MODAL_LABELS","notificationText","notificationLink","ON_SHOW_TRACK_LABEL","ON_CELEBRATION_TRACK_LABEL","WARNING_ALERT_TITLE","DANGER_ALERT_TITLE","REACHED_LIMIT_VARIANT","CLOSE_TO_LIMIT_VARIANT","REACHED_LIMIT_UPGRADE_SUGGESTION_MESSAGE","concat","CLOSE_TO_LIMIT_MESSAGE","BLOCKED_SEAT_OVERAGES_BODY","BLOCKED_SEAT_OVERAGES_CTA","BLOCKED_SEAT_OVERAGES_CTA_DOCS","BLOCKED_SEAT_OVERAGES_ERROR_REASON"],"mappings":"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","file":"initInviteMembersTrigger.60d01e17.chunk.js","sourcesContent":["import Vue from 'vue';\nimport InviteMembersTrigger from '~/invite_members/components/invite_members_trigger.vue';\n\nexport default function initInviteMembersTrigger() {\n  const triggers = document.querySelectorAll('.js-invite-members-trigger');\n\n  if (!triggers) {\n    return false;\n  }\n\n  return triggers.forEach((el) => {\n    return new Vue({\n      el,\n      name: 'InviteMembersTriggerRoot',\n      render: (createElement) =>\n        createElement(InviteMembersTrigger, {\n          props: {\n            ...el.dataset,\n          },\n        }),\n    });\n  });\n}\n","/**\n * An event hub with a Vue instance like API\n *\n * NOTE: This is a derivative work from [mitt][1] v1.2.0 which is licensed by\n * [MIT License][2] © [Jason Miller][3]\n *\n * [1]: https://github.com/developit/mitt\n * [2]: https://opensource.org/licenses/MIT\n * [3]: https://jasonformat.com/\n */\nclass EventHub {\n  constructor() {\n    this.$_all = new Map();\n  }\n\n  dispose() {\n    this.$_all.clear();\n  }\n\n  /**\n   * Register an event handler for the given type.\n   *\n   * @param {string|symbol} type Type of event to listen for\n   * @param {Function} handler Function to call in response to given event\n   */\n  $on(type, handler) {\n    const handlers = this.$_all.get(type);\n    const added = handlers && handlers.push(handler);\n\n    if (!added) {\n      this.$_all.set(type, [handler]);\n    }\n  }\n\n  /**\n   * Remove an event handler or all handlers for the given type.\n   *\n   * @param {string|symbol} type Type of event to unregister `handler`\n   * @param {Function} handler Handler function to remove\n   */\n  $off(type, handler) {\n    const handlers = this.$_all.get(type) || [];\n\n    const newHandlers = handler ? handlers.filter((x) => x !== handler) : [];\n\n    if (newHandlers.length) {\n      this.$_all.set(type, newHandlers);\n    } else {\n      this.$_all.delete(type);\n    }\n  }\n\n  /**\n   * Add an event listener to type but only trigger it once\n   *\n   * @param {string|symbol} type Type of event to listen for\n   * @param {Function} handler Handler function to call in response to event\n   */\n  $once(type, handler) {\n    const wrapHandler = (...args) => {\n      this.$off(type, wrapHandler);\n      handler(...args);\n    };\n    this.$on(type, wrapHandler);\n  }\n\n  /**\n   * Invoke all handlers for the given type.\n   *\n   * @param {string|symbol} type The event type to invoke\n   * @param {Any} [evt] Any value passed to each handler\n   */\n  $emit(type, ...args) {\n    const handlers = this.$_all.get(type) || [];\n\n    handlers.forEach((handler) => {\n      handler(...args);\n    });\n  }\n}\n\n/**\n * Return a Vue like event hub\n *\n * - $on\n * - $off\n * - $once\n * - $emit\n *\n * We'd like to shy away from using a full fledged Vue instance from this in the future.\n */\nexport default () => {\n  return new EventHub();\n};\n","import Vue from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\n\nconst itemValidator = item => {\n  var _item$text;\n  return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);\n};\nconst isItem = item => Boolean(item) && itemValidator(item);\nconst isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) &&\n// eslint-disable-next-line unicorn/no-array-callback-reference\ngroup.items.every(isItem);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst itemsValidator = items => items.every(isItem) || items.every(isGroup);\nconst isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);\nconst isValidSlotTagVue2 = vNode => {\n  var _vNode$componentOptio;\n  return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);\n};\nconst isValidSlotTagVue3 = vNode => {\n  var _vNode$type;\n  return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';\n};\nconst hasOnlyListItemsVue2 = defaultSlot => {\n  const nodes = defaultSlot();\n  if (!Array.isArray(nodes)) {\n    return false;\n  }\n  const tags = nodes.filter(vNode => vNode.tag);\n  return tags.length && tags.every(tag => isValidSlotTagVue2(tag));\n};\nconst hasOnlyListItemsVue3 = defaultSlot => {\n  const nodes = defaultSlot();\n  const fragment = nodes.find(node => Array.isArray(node.children) && node.children.length);\n  const targetNodes = fragment ? fragment.children : nodes;\n  return targetNodes\n  // Remove empty text vNodes\n  .filter(vNode => !isString(vNode.text) || vNode.text.trim().length > 0).every(vNode => isValidSlotTagVue3(vNode));\n};\nconst hasOnlyListItems = defaultSlot => {\n  if (!isFunction(defaultSlot)) {\n    return false;\n  }\n  if (Vue.version.startsWith('3')) {\n    return hasOnlyListItemsVue3(defaultSlot);\n  }\n  return hasOnlyListItemsVue2(defaultSlot);\n};\n\nexport { hasOnlyListItems, isGroup, isItem, itemsValidator };\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n  top: 'top',\n  bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isButtonTrigger)?_c('gl-button',_vm._b({attrs:{\"variant\":_vm.variant,\"category\":_vm.category,\"icon\":_vm.icon},on:{\"click\":_vm.openModal}},'gl-button',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n\")]):(_vm.isWithEmojiTrigger)?_c('gl-link',_vm._b({on:{\"click\":_vm.openModal}},'gl-link',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n  \"),_c('gl-emoji',{staticClass:\"gl-mr-1 gl-align-baseline gl-text-size-reset\",attrs:{\"data-name\":_vm.icon}})],1):(_vm.isDropdownWithEmojiTrigger)?_c('gl-dropdown-item',_vm._b({on:{\"click\":_vm.openModal}},'gl-dropdown-item',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n  \"),_c('gl-emoji',{staticClass:\"gl-mr-1 gl-align-baseline gl-text-size-reset\",attrs:{\"data-name\":_vm.icon}})],1):(_vm.isDisclosureTrigger)?_c('gl-disclosure-dropdown-item',_vm._b({attrs:{\"item\":_vm.item},on:{\"action\":_vm.handleDisclosureDropdownAction}},'gl-disclosure-dropdown-item',_vm.componentAttributes,false)):_c('gl-link',_vm._b({attrs:{\"data-is-link\":\"true\"},on:{\"click\":_vm.openModal}},'gl-link',_vm.componentAttributes,false),[_vm._v(\"\\n  \"+_vm._s(_vm.displayText)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./invite_members_trigger.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./invite_members_trigger.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink, GlDropdownItem, GlDisclosureDropdownItem } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport eventHub from '../event_hub';\nimport {\n  TRIGGER_ELEMENT_BUTTON,\n  TRIGGER_ELEMENT_WITH_EMOJI,\n  TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI,\n  TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN,\n} from '../constants';\n\nexport default {\n  components: { GlButton, GlLink, GlDropdownItem, GlDisclosureDropdownItem },\n  props: {\n    displayText: {\n      type: String,\n      required: false,\n      default: s__('InviteMembers|Invite team members'),\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    classes: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    category: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    triggerSource: {\n      type: String,\n      required: true,\n    },\n    triggerElement: {\n      type: String,\n      required: false,\n      default: 'button',\n    },\n  },\n  computed: {\n    componentAttributes() {\n      return {\n        class: this.classes,\n        'data-testid': 'invite-members-button',\n      };\n    },\n    item() {\n      return { text: this.displayText };\n    },\n    isButtonTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_BUTTON;\n    },\n    isWithEmojiTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_WITH_EMOJI;\n    },\n    isDropdownWithEmojiTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI;\n    },\n    isDisclosureTrigger() {\n      return this.triggerElement === TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN;\n    },\n  },\n  methods: {\n    openModal() {\n      eventHub.$emit('openModal', { source: this.triggerSource });\n    },\n    handleDisclosureDropdownAction() {\n      this.openModal();\n      this.$emit('modal-opened');\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button\n    v-if=\"isButtonTrigger\"\n    v-bind=\"componentAttributes\"\n    :variant=\"variant\"\n    :category=\"category\"\n    :icon=\"icon\"\n    @click=\"openModal\"\n  >\n    {{ displayText }}\n  </gl-button>\n  <gl-link v-else-if=\"isWithEmojiTrigger\" v-bind=\"componentAttributes\" @click=\"openModal\">\n    {{ displayText }}\n    <gl-emoji class=\"gl-mr-1 gl-align-baseline gl-text-size-reset\" :data-name=\"icon\" />\n  </gl-link>\n  <gl-dropdown-item\n    v-else-if=\"isDropdownWithEmojiTrigger\"\n    v-bind=\"componentAttributes\"\n    @click=\"openModal\"\n  >\n    {{ displayText }}\n    <gl-emoji class=\"gl-mr-1 gl-align-baseline gl-text-size-reset\" :data-name=\"icon\" />\n  </gl-dropdown-item>\n  <gl-disclosure-dropdown-item\n    v-else-if=\"isDisclosureTrigger\"\n    v-bind=\"componentAttributes\"\n    :item=\"item\"\n    @action=\"handleDisclosureDropdownAction\"\n  />\n  <gl-link v-else v-bind=\"componentAttributes\" data-is-link=\"true\" @click=\"openModal\">\n    {{ displayText }}\n  </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./invite_members_trigger.vue?vue&type=template&id=cb0ec660\"\nimport script from \"./invite_members_trigger.vue?vue&type=script&lang=js\"\nexport * from \"./invite_members_trigger.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","// 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 { BLink } from '../../../../vendor/bootstrap-vue/src/components/link/link';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport { isItem } from './utils';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst ITEM_CLASS = 'gl-new-dropdown-item';\nvar script = {\n  name: DISCLOSURE_DROPDOWN_ITEM_NAME,\n  ITEM_CLASS,\n  components: {\n    BLink\n  },\n  props: {\n    item: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isItem\n    }\n  },\n  computed: {\n    isLink() {\n      var _this$item, _this$item2;\n      return typeof ((_this$item = this.item) === null || _this$item === void 0 ? void 0 : _this$item.href) === 'string' || typeof ((_this$item2 = this.item) === null || _this$item2 === void 0 ? void 0 : _this$item2.to) === 'string';\n    },\n    isCustomContent() {\n      return Boolean(this.$scopedSlots.default);\n    },\n    itemComponent() {\n      const {\n        item\n      } = this;\n      if (this.isLink) return {\n        is: BLink,\n        attrs: {\n          href: item.href,\n          to: item.to,\n          ...item.extraAttrs\n        },\n        listeners: {\n          click: this.action\n        }\n      };\n      return {\n        is: 'button',\n        attrs: {\n          ...(item === null || item === void 0 ? void 0 : item.extraAttrs),\n          type: 'button'\n        },\n        listeners: {\n          click: () => {\n            var _item$action;\n            item === null || item === void 0 ? void 0 : (_item$action = item.action) === null || _item$action === void 0 ? void 0 : _item$action.call(undefined, item);\n            this.action();\n          }\n        }\n      };\n    },\n    listIndex() {\n      var _this$item3, _this$item3$extraAttr;\n      return (_this$item3 = this.item) !== null && _this$item3 !== void 0 && (_this$item3$extraAttr = _this$item3.extraAttrs) !== null && _this$item3$extraAttr !== void 0 && _this$item3$extraAttr.disabled ? null : 0;\n    },\n    componentIndex() {\n      var _this$item4, _this$item4$extraAttr;\n      return (_this$item4 = this.item) !== null && _this$item4 !== void 0 && (_this$item4$extraAttr = _this$item4.extraAttrs) !== null && _this$item4$extraAttr !== void 0 && _this$item4$extraAttr.disabled ? null : -1;\n    },\n    wrapperClass() {\n      var _this$item$wrapperCla, _this$item5;\n      return (_this$item$wrapperCla = (_this$item5 = this.item) === null || _this$item5 === void 0 ? void 0 : _this$item5.wrapperClass) !== null && _this$item$wrapperCla !== void 0 ? _this$item$wrapperCla : '';\n    },\n    wrapperListeners() {\n      const listeners = {\n        keydown: this.onKeydown\n      };\n      if (this.isCustomContent) {\n        listeners.click = this.action;\n      }\n      return listeners;\n    }\n  },\n  methods: {\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        if (this.isCustomContent) {\n          this.action();\n        } else {\n          stopEvent(event);\n          /** Instead of simply navigating or calling the action, we want\n           * the `a/button` to be the target of the event as it might have additional attributes.\n           * E.g. `a` might have `target` attribute.\n           */\n          const e = new MouseEvent('click', {\n            bubbles: true,\n            cancelable: true\n          });\n          if (this.isLink) {\n            this.$refs.item.$el.dispatchEvent(e);\n          } else {\n            var _this$$refs$item;\n            (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : _this$$refs$item.dispatchEvent(e);\n          }\n        }\n      }\n    },\n    action() {\n      this.$emit('action', this.item);\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',_vm._g({class:[_vm.$options.ITEM_CLASS, _vm.wrapperClass],attrs:{\"tabindex\":_vm.listIndex,\"data-testid\":\"disclosure-dropdown-item\"}},_vm.wrapperListeners),[_vm._t(\"default\",function(){return [_c(_vm.itemComponent.is,_vm._g(_vm._b({ref:\"item\",tag:\"component\",staticClass:\"gl-new-dropdown-item-content\",attrs:{\"tabindex\":_vm.componentIndex}},'component',_vm.itemComponent.attrs,false),_vm.itemComponent.listeners),[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.item.text)+\"\\n        \")]})],2)])]})],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_CLASS };\n","import { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport const PROJECT_SELECT_LABEL_ID = 'project-select';\nexport const SEARCH_DELAY = 200;\nexport const VALID_TOKEN_BACKGROUND = 'gl-bg-green-100';\nexport const WARNING_TOKEN_BACKGROUND = 'gl-bg-orange-100';\nexport const INVALID_TOKEN_BACKGROUND = 'gl-bg-red-100';\nexport const TOAST_MESSAGE_LOCALSTORAGE_KEY = 'members_invited_successfully';\nexport const MEMBERS_WITH_QUEUED_STATUS_LOCALSTORAGE_KEY = 'members_queued_successfully';\n\nexport const GROUP_FILTERS = {\n  ALL: 'all',\n  DESCENDANT_GROUPS: 'descendant_groups',\n};\n\nexport const USERS_FILTER_ALL = 'all';\nexport const USERS_FILTER_SAML_PROVIDER_ID = 'saml_provider_id';\nexport const TRIGGER_ELEMENT_BUTTON = 'button';\nexport const TOP_NAV_INVITE_MEMBERS_COMPONENT = 'invite_members';\nexport const TRIGGER_ELEMENT_WITH_EMOJI = 'text-emoji';\nexport const TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI = 'dropdown-text-emoji';\nexport const TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN = 'dropdown-text';\nexport const INVITE_MEMBER_MODAL_TRACKING_CATEGORY = 'invite_members_modal';\nexport const IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_CATEGORY = 'invite_project_members_modal';\nexport const IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_LABEL = 'project-members-page';\nexport const MEMBERS_MODAL_DEFAULT_TITLE = s__('InviteMembersModal|Invite members');\nexport const MEMBERS_MODAL_CELEBRATE_TITLE = s__(\n  'InviteMembersModal|GitLab is better with colleagues!',\n);\nexport const MEMBERS_MODAL_CELEBRATE_INTRO = s__(\n  'InviteMembersModal|How about inviting a colleague or two to join you?',\n);\nexport const MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting members to the %{strongStart}%{name}%{strongEnd} group.\",\n);\n\nexport const MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting members to the %{strongStart}%{name}%{strongEnd} project.\",\n);\nexport const MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT = s__(\n  \"InviteMembersModal|Congratulations on creating your project, you're almost there!\",\n);\nexport const MEMBERS_SEARCH_FIELD = s__('InviteMembersModal|Username, name or email address');\nexport const MEMBERS_PLACEHOLDER = s__(\n  'InviteMembersModal|Select from GitLab usernames or enter email addresses',\n);\n\nexport const GROUP_MODAL_DEFAULT_TITLE = s__('InviteMembersModal|Invite a group');\nexport const GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting a group to the %{strongStart}%{name}%{strongEnd} group.\",\n);\nexport const GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT = s__(\n  \"InviteMembersModal|You're inviting a group to the %{strongStart}%{name}%{strongEnd} project.\",\n);\n\nexport const GROUP_MODAL_TO_GROUP_ALERT_BODY = s__(\n  'InviteMembersModal|Inviting a group %{linkStart}adds its members to your group%{linkEnd}, including members who join after the invite. This might put your group over the free %{count} user limit.',\n);\nexport const GROUP_MODAL_TO_GROUP_ALERT_LINK = helpPagePath(\n  'user/project/members/sharing_projects_groups',\n  {\n    anchor: 'invite-a-group-to-a-group',\n  },\n);\nexport const GROUP_MODAL_TO_PROJECT_ALERT_BODY = s__(\n  'InviteMembersModal|Inviting a group %{linkStart}adds its members to your project%{linkEnd}, including members who join after the invite. This might put your group over the free %{count} user limit.',\n);\nexport const GROUP_MODAL_TO_PROJECT_ALERT_LINK = helpPagePath(\n  'user/project/members/sharing_projects_groups',\n  {\n    anchor: 'invite-a-group-to-a-project',\n  },\n);\n\nexport const GROUP_SEARCH_FIELD = s__('InviteMembersModal|Select a group to invite');\nexport const GROUP_PLACEHOLDER = s__('InviteMembersModal|Search for a group to invite');\n\nexport const ACCESS_LEVEL = s__('InviteMembersModal|Select maximum role');\nexport const ACCESS_EXPIRE_DATE = s__('InviteMembersModal|Access expiration date (optional)');\nexport const TOAST_MESSAGE_SUCCESSFUL = s__('InviteMembersModal|Members were successfully added.');\nexport const QUEUED_MESSAGE_SUCCESSFUL = s__(\n  'InviteMembersModal|Some invitations have been queued for administrator approval.',\n);\nexport const INVALID_FEEDBACK_MESSAGE_DEFAULT = s__('InviteMembersModal|Something went wrong');\nexport const READ_MORE_TEXT = s__(\n  `InviteMembersModal|%{linkStart}Read more%{linkEnd} about role permissions. You can change this later. Invited members are limited to this role or their current group role, whichever is lower.`,\n);\nexport const READ_MORE_ACCESS_EXPIRATION_TEXT = s__(\n  `InviteMembersModal|%{linkStart}Read more%{linkEnd} about access expiration`,\n);\nexport const INVITE_BUTTON_TEXT = s__('InviteMembersModal|Invite');\nexport const INVITE_BUTTON_TEXT_DISABLED = s__('InviteMembersModal|Manage members');\nexport const CANCEL_BUTTON_TEXT = s__('InviteMembersModal|Cancel');\nexport const HEADER_CLOSE_LABEL = s__('InviteMembersModal|Close invite team members');\nexport const MEMBER_ERROR_LIST_TEXT = s__(\n  'InviteMembersModal|Review the invite errors and try again:',\n);\nexport const COLLAPSED_ERRORS = s__('InviteMembersModal|Show more (%{count})');\nexport const EXPANDED_ERRORS = s__('InviteMembersModal|Show less');\nexport const EMPTY_INVITES_ALERT_TEXT = s__('InviteMembersModal|Please add members to invite');\n\nexport const MEMBER_MODAL_LABELS = {\n  modal: {\n    default: {\n      title: MEMBERS_MODAL_DEFAULT_TITLE,\n    },\n    celebrate: {\n      title: MEMBERS_MODAL_CELEBRATE_TITLE,\n      intro: MEMBERS_MODAL_CELEBRATE_INTRO,\n    },\n  },\n  toGroup: {\n    default: {\n      introText: MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT,\n    },\n  },\n  toProject: {\n    default: {\n      introText: MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT,\n    },\n    celebrate: {\n      introText: MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT,\n    },\n  },\n  searchField: MEMBERS_SEARCH_FIELD,\n  placeHolder: MEMBERS_PLACEHOLDER,\n  toastMessageSuccessful: TOAST_MESSAGE_SUCCESSFUL,\n  memberErrorListText: MEMBER_ERROR_LIST_TEXT,\n  collapsedErrors: COLLAPSED_ERRORS,\n  expandedErrors: EXPANDED_ERRORS,\n  emptyInvitesAlertText: EMPTY_INVITES_ALERT_TEXT,\n};\n\nexport const GROUP_MODAL_LABELS = {\n  title: GROUP_MODAL_DEFAULT_TITLE,\n  toGroup: {\n    introText: GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT,\n    notificationText: GROUP_MODAL_TO_GROUP_ALERT_BODY,\n    notificationLink: GROUP_MODAL_TO_GROUP_ALERT_LINK,\n  },\n  toProject: {\n    introText: GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT,\n    notificationText: GROUP_MODAL_TO_PROJECT_ALERT_BODY,\n    notificationLink: GROUP_MODAL_TO_PROJECT_ALERT_LINK,\n  },\n  searchField: GROUP_SEARCH_FIELD,\n  placeHolder: GROUP_PLACEHOLDER,\n  toastMessageSuccessful: TOAST_MESSAGE_SUCCESSFUL,\n};\n\nexport const ON_SHOW_TRACK_LABEL = 'over_limit_modal_viewed';\nexport const ON_CELEBRATION_TRACK_LABEL = 'invite_celebration_modal';\n\nexport const WARNING_ALERT_TITLE = s__(\n  'InviteMembersModal|You only have space for %{count} more %{members} in %{name}',\n);\nexport const DANGER_ALERT_TITLE = s__(\n  \"InviteMembersModal|You've reached your %{count} %{members} limit for %{name}\",\n);\n\nexport const REACHED_LIMIT_VARIANT = 'reached';\nexport const CLOSE_TO_LIMIT_VARIANT = 'close';\n\nexport const REACHED_LIMIT_MESSAGE = s__(\n  'InviteMembersModal|To invite new users to this top-level group, you must remove existing users. You can still add existing users from the top-level group, including any subgroups and projects.',\n);\n\nexport const REACHED_LIMIT_UPGRADE_SUGGESTION_MESSAGE = REACHED_LIMIT_MESSAGE.concat(\n  s__(\n    'InviteMembersModal| To get more members, the owner of this top-level group can %{trialLinkStart}start a trial%{trialLinkEnd} or %{upgradeLinkStart}upgrade%{upgradeLinkEnd} to a paid tier.',\n  ),\n);\n\nexport const CLOSE_TO_LIMIT_MESSAGE = s__(\n  'InviteMembersModal|To get more members an owner of the group can %{trialLinkStart}start a trial%{trialLinkEnd} or %{upgradeLinkStart}upgrade%{upgradeLinkEnd} to a paid tier.',\n);\nexport const BLOCKED_SEAT_OVERAGES_BODY = s__(\n  'InviteMembersModal|You must purchase more seats for your subscription before this amount of users can be added.',\n);\nexport const BLOCKED_SEAT_OVERAGES_CTA = s__('InviteMembersModal|Purchase more seats');\nexport const BLOCKED_SEAT_OVERAGES_CTA_DOCS = s__('InviteMembersModal|Learn how to add seats');\nexport const BLOCKED_SEAT_OVERAGES_ERROR_REASON = 'seat_limit_exceeded_error';\n"],"sourceRoot":""}