{"version":3,"sources":["webpack:///./member_expiration_date.js","webpack:///./members.js","webpack:///./users_select.js","webpack:///./pages/projects/project_members/index.js","webpack:///./groups_select.js"],"names":["memberExpirationDate","selector","arguments","length","undefined","toggleClearInput","jquery__WEBPACK_IMPORTED_MODULE_0___default","this","closest","toggleClass","val","inputs","each","i","el","$input","calendar","pikaday__WEBPACK_IMPORTED_MODULE_1___default","a","field","get","theme","format","minDate","Date","container","parent","parse","dateString","Object","_lib_utils_datefix__WEBPACK_IMPORTED_MODULE_2__","toString","date","onSelect","dateText","trigger","call","setDate","data","next","on","event","preventDefault","input","find","Members","_classCallCheck","addListeners","initGLDropdown","off","formSubmit","bind","formSuccess","gl","utils","disableButtonIfEmptyField","_this","btn","$btn","glDropdown","selectable","isSelectable","selected","$el","hasClass","fieldName","id","toggleLabel","text","clicked","options","e","$this","currentTarget","_getMemberListItems","getMemberListItems","$toggle","$dateInput","disable","_getMemberListItems2","enable","$memberListItem","is","$","UsersSelect","currentUser","els","$els","users","user","usersPath","userPath","_typeof","JSON","handleClick","dropdown","$block","$collapsedSidebar","$dropdown","$loading","$selectbox","$value","abilityName","assignTo","assigneeTemplate","collapsedAssigneeTemplate","defaultLabel","defaultNullUser","firstUser","issueURL","selectedId","selectedIdDefault","showAnyUser","showNullUser","showMenuAbove","projectId","groupId","showCurrentUser","todoFilter","todoStateFilter","authorId","fadeOut","assignYourself","unassignedSelected","remove","document","createElement","type","name","currentUserInfo","value","dataset","meta","underscore__WEBPACK_IMPORTED_MODULE_1___default","escape","before","after","addEventListener","getSelectedUserInputs","getSelected","map","index","parseInt","checkMaxSelect","maxSelect","firstSelectedId","emitSidebarEvent","getMultiSelectDropdownTitle","selectedUser","isSelected","selectedUsers","filter","u","otherSelected","s","hide","removeClass","gon","current_user_id","current_user_fullname","assignee_id","fadeIn","_lib_utils_axios_utils__WEBPACK_IMPORTED_MODULE_2__","put","then","_ref","tooltipTitle","assignee","username","avatar","avatar_url","_locale__WEBPACK_IMPORTED_MODULE_3__","html","attr","tooltip","template","term","callback","instance","processData","selectedInputs","uniq","userId","_input$dataset","avatarUrl","concat","anyUser","len","obj","showDivider","splice","unshift","beforeDivider","header","indexOf","sort","b","forEach","positionMenuAbove","filterable","filterRemote","search","fields","inputValue","filterInput","multiSelect","filteredFullData","parseData","addClass","hidden","css","inputMeta","isIssueIndex","isMRIndex","page","isMarking","selectedObj","isActive","previouslySelected","toLowerCase","element","addInput","show","isSelecting","_boards_stores_modal_store__WEBPACK_IMPORTED_MODULE_4__","store","Issuable","filterResults","submit","opened","highlightSelected","updateLabel","renderRow","img","default_avatar_url","select","showEmailUser","skipLdap","skipUsers","select2","placeholder","multiple","minimumInputLength","query","emailUser","nullUser","ref","results","match","trimmed","trim","invite","initSelection","args","slice","apply","formatResult","formatSelection","dropdownCssClass","escapeMarkup","m","window","noop","prototype","user_id","test","url","buildUrl","replace","_ref2","params","active","project_id","group_id","skip_ldap","todo_filter","todo_state_filter","current_user","author_id","skip_users","_ref3","relative_url_root","__webpack_exports__","member_expiration_date","GROUP_SELECT_PER_PAGE","jquery_default","$select","allAvailable","skipGroups","allowClear","ajax","api","groupsPath","dataType","quietMillis","transport","axios_utils","res","headers","common_utils","more","success","pagination","catch","error","per_page","all_available","groups","group","object","full_name","full_path","querySelector","style","height","Math","floor","scrollHeight","members","users_select"],"mappings":"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","file":"pages.projects.project_members.33cec59f.chunk.js","sourcesContent":["import $ from 'jquery';\nimport Pikaday from 'pikaday';\nimport { parsePikadayDate, pikadayToString } from './lib/utils/datefix';\n\n// Add datepickers to all `js-access-expiration-date` elements. If those elements are\n// children of an element with the `clearable-input` class, and have a sibling\n// `js-clear-input` element, then show that element when there is a value in the\n// datepicker, and make clicking on that element clear the field.\n//\nexport default function memberExpirationDate(selector = '.js-access-expiration-date') {\n function toggleClearInput() {\n $(this).closest('.clearable-input').toggleClass('has-value', $(this).val() !== '');\n }\n const inputs = $(selector);\n\n inputs.each((i, el) => {\n const $input = $(el);\n\n const calendar = new Pikaday({\n field: $input.get(0),\n theme: 'gitlab-theme animate-picker',\n format: 'yyyy-mm-dd',\n minDate: new Date(),\n container: $input.parent().get(0),\n parse: dateString => parsePikadayDate(dateString),\n toString: date => pikadayToString(date),\n onSelect(dateText) {\n $input.val(calendar.toString(dateText));\n\n $input.trigger('change');\n\n toggleClearInput.call($input);\n },\n });\n\n calendar.setDate(parsePikadayDate($input.val()));\n $input.data('pikaday', calendar);\n });\n\n inputs.next('.js-clear-input').on('click', function clicked(event) {\n event.preventDefault();\n\n const input = $(this).closest('.clearable-input').find(selector);\n const calendar = input.data('pikaday');\n\n calendar.setDate(null);\n input.trigger('change');\n toggleClearInput.call(input);\n });\n\n inputs.on('blur', toggleClearInput);\n\n inputs.each(toggleClearInput);\n}\n","import $ from 'jquery';\n\nexport default class Members {\n constructor() {\n this.addListeners();\n this.initGLDropdown();\n }\n\n addListeners() {\n $('.js-member-update-control').off('change').on('change', this.formSubmit.bind(this));\n $('.js-edit-member-form').off('ajax:success').on('ajax:success', this.formSuccess.bind(this));\n gl.utils.disableButtonIfEmptyField('#user_ids', 'input[name=commit]', 'change');\n }\n\n initGLDropdown() {\n $('.js-member-permissions-dropdown').each((i, btn) => {\n const $btn = $(btn);\n\n $btn.glDropdown({\n selectable: true,\n isSelectable(selected, $el) {\n return !$el.hasClass('is-active');\n },\n fieldName: $btn.data('fieldName'),\n id(selected, $el) {\n return $el.data('id');\n },\n toggleLabel(selected, $el) {\n return $el.text();\n },\n clicked: (options) => {\n this.formSubmit(null, options.$el);\n },\n });\n });\n }\n\n formSubmit(e, $el = null) {\n const $this = e ? $(e.currentTarget) : $el;\n const { $toggle, $dateInput } = this.getMemberListItems($this);\n\n $this.closest('form').trigger('submit.rails');\n\n $toggle.disable();\n $dateInput.disable();\n }\n\n formSuccess(e) {\n const { $toggle, $dateInput } = this.getMemberListItems($(e.currentTarget).closest('.member'));\n\n $toggle.enable();\n $dateInput.enable();\n }\n // eslint-disable-next-line class-methods-use-this\n getMemberListItems($el) {\n const $memberListItem = $el.is('.member') ? $el : $(`#${$el.data('elId')}`);\n\n return {\n $memberListItem,\n $toggle: $memberListItem.find('.dropdown-menu-toggle'),\n $dateInput: $memberListItem.find('.js-access-expiration-date'),\n };\n }\n}\n","/* eslint-disable func-names, one-var, no-var, prefer-rest-params, quotes, max-len, one-var-declaration-per-line, vars-on-top, prefer-arrow-callback, consistent-return, comma-dangle, object-shorthand, no-shadow, no-unused-vars, no-else-return, no-self-compare, prefer-template, no-unused-expressions, yoda, prefer-spread, no-void, camelcase, no-param-reassign */\n/* global Issuable */\n/* global emitSidebarEvent */\n\nimport $ from 'jquery';\nimport _ from 'underscore';\nimport axios from './lib/utils/axios_utils';\nimport { __ } from './locale';\nimport ModalStore from './boards/stores/modal_store';\n\n// TODO: remove eventHub hack after code splitting refactor\nwindow.emitSidebarEvent = window.emitSidebarEvent || $.noop;\n\nfunction UsersSelect(currentUser, els, options = {}) {\n var $els;\n this.users = this.users.bind(this);\n this.user = this.user.bind(this);\n this.usersPath = \"/autocomplete/users.json\";\n this.userPath = \"/autocomplete/users/:id.json\";\n if (currentUser != null) {\n if (typeof currentUser === 'object') {\n this.currentUser = currentUser;\n } else {\n this.currentUser = JSON.parse(currentUser);\n }\n }\n\n const { handleClick } = options;\n\n $els = $(els);\n\n if (!els) {\n $els = $('.js-user-search');\n }\n\n $els.each((function(_this) {\n return function(i, dropdown) {\n var options = {};\n var $block, $collapsedSidebar, $dropdown, $loading, $selectbox, $value, abilityName, assignTo, assigneeTemplate, collapsedAssigneeTemplate, defaultLabel, defaultNullUser, firstUser, issueURL, selectedId, selectedIdDefault, showAnyUser, showNullUser, showMenuAbove;\n $dropdown = $(dropdown);\n options.projectId = $dropdown.data('projectId');\n options.groupId = $dropdown.data('groupId');\n options.showCurrentUser = $dropdown.data('currentUser');\n options.todoFilter = $dropdown.data('todoFilter');\n options.todoStateFilter = $dropdown.data('todoStateFilter');\n showNullUser = $dropdown.data('nullUser');\n defaultNullUser = $dropdown.data('nullUserDefault');\n showMenuAbove = $dropdown.data('showMenuAbove');\n showAnyUser = $dropdown.data('anyUser');\n firstUser = $dropdown.data('firstUser');\n options.authorId = $dropdown.data('authorId');\n defaultLabel = $dropdown.data('defaultLabel');\n issueURL = $dropdown.data('issueUpdate');\n $selectbox = $dropdown.closest('.selectbox');\n $block = $selectbox.closest('.block');\n abilityName = $dropdown.data('abilityName');\n $value = $block.find('.value');\n $collapsedSidebar = $block.find('.sidebar-collapsed-user');\n $loading = $block.find('.block-loading').fadeOut();\n selectedIdDefault = (defaultNullUser && showNullUser) ? 0 : null;\n selectedId = $dropdown.data('selected');\n\n if (selectedId === undefined) {\n selectedId = selectedIdDefault;\n }\n\n const assignYourself = function () {\n const unassignedSelected = $dropdown.closest('.selectbox')\n .find(`input[name='${$dropdown.data('fieldName')}'][value=0]`);\n\n if (unassignedSelected) {\n unassignedSelected.remove();\n }\n\n // Save current selected user to the DOM\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = $dropdown.data('fieldName');\n\n const currentUserInfo = $dropdown.data('currentUserInfo');\n\n if (currentUserInfo) {\n input.value = currentUserInfo.id;\n input.dataset.meta = _.escape(currentUserInfo.name);\n } else if (_this.currentUser) {\n input.value = _this.currentUser.id;\n }\n\n if ($selectbox) {\n $dropdown.parent().before(input);\n } else {\n $dropdown.after(input);\n }\n };\n\n if ($block[0]) {\n $block[0].addEventListener('assignYourself', assignYourself);\n }\n\n const getSelectedUserInputs = function() {\n return $selectbox\n .find(`input[name=\"${$dropdown.data('fieldName')}\"]`);\n };\n\n const getSelected = function() {\n return getSelectedUserInputs()\n .map((index, input) => parseInt(input.value, 10))\n .get();\n };\n\n const checkMaxSelect = function() {\n const maxSelect = $dropdown.data('maxSelect');\n if (maxSelect) {\n const selected = getSelected();\n\n if (selected.length > maxSelect) {\n const firstSelectedId = selected[0];\n const firstSelected = $dropdown.closest('.selectbox')\n .find(`input[name='${$dropdown.data('fieldName')}'][value=${firstSelectedId}]`);\n\n firstSelected.remove();\n emitSidebarEvent('sidebar.removeAssignee', {\n id: firstSelectedId,\n });\n }\n }\n };\n\n const getMultiSelectDropdownTitle = function(selectedUser, isSelected) {\n const selectedUsers = getSelected()\n .filter(u => u !== 0);\n\n const firstUser = getSelectedUserInputs()\n .map((index, input) => ({\n name: input.dataset.meta,\n value: parseInt(input.value, 10),\n }))\n .filter(u => u.id !== 0)\n .get(0);\n\n if (selectedUsers.length === 0) {\n return '未指派';\n } else if (selectedUsers.length === 1) {\n return firstUser.name;\n } else if (isSelected) {\n const otherSelected = selectedUsers.filter(s => s !== selectedUser.id);\n return `${selectedUser.name} + ${otherSelected.length} more`;\n } else {\n return `${firstUser.name} + ${selectedUsers.length - 1} more`;\n }\n };\n\n $('.assign-to-me-link').on('click', (e) => {\n e.preventDefault();\n $(e.currentTarget).hide();\n\n if ($dropdown.data('multiSelect')) {\n assignYourself();\n checkMaxSelect();\n\n const currentUserInfo = $dropdown.data('currentUserInfo');\n $dropdown.find('.dropdown-toggle-text').text(getMultiSelectDropdownTitle(currentUserInfo)).removeClass('is-default');\n } else {\n const $input = $(`input[name=\"${$dropdown.data('fieldName')}\"]`);\n $input.val(gon.current_user_id);\n selectedId = $input.val();\n $dropdown.find('.dropdown-toggle-text').text(gon.current_user_fullname).removeClass('is-default');\n }\n });\n\n $block.on('click', '.js-assign-yourself', (e) => {\n e.preventDefault();\n return assignTo(_this.currentUser.id);\n });\n\n assignTo = function(selected) {\n var data;\n data = {};\n data[abilityName] = {};\n data[abilityName].assignee_id = selected != null ? selected : null;\n $loading.removeClass('hidden').fadeIn();\n $dropdown.trigger('loading.gl.dropdown');\n\n return axios.put(issueURL, data)\n .then(({ data }) => {\n var user, tooltipTitle;\n $dropdown.trigger('loaded.gl.dropdown');\n $loading.fadeOut();\n if (data.assignee) {\n user = {\n name: data.assignee.name,\n username: data.assignee.username,\n avatar: data.assignee.avatar_url\n };\n tooltipTitle = _.escape(user.name);\n } else {\n user = {\n name: '未指派',\n username: '',\n avatar: ''\n };\n tooltipTitle = __('Assignee');\n }\n $value.html(assigneeTemplate(user));\n $collapsedSidebar.attr('title', tooltipTitle).tooltip('_fixTitle');\n return $collapsedSidebar.html(collapsedAssigneeTemplate(user));\n });\n };\n collapsedAssigneeTemplate = _.template('<% if( avatar ) { %> \"> \"\"\"> <% } else { %> <% } %>');\n assigneeTemplate = _.template('<% if (username) { %> \"> <% if( avatar ) { %> \"\"\"> <% } %> <%- name %> @<%- username %> <% } else { %> No assignee - assign yourself <% } %>');\n return $dropdown.glDropdown({\n showMenuAbove: showMenuAbove,\n data: function(term, callback) {\n return _this.users(term, options, function(users) {\n // GitLabDropdownFilter returns this.instance\n // GitLabDropdownRemote returns this.options.instance\n const glDropdown = this.instance || this.options.instance;\n glDropdown.options.processData(term, users, callback);\n }.bind(this));\n },\n processData: function(term, data, callback) {\n let users = data;\n\n // Only show assigned user list when there is no search term\n if ($dropdown.hasClass('js-multiselect') && term.length === 0) {\n const selectedInputs = getSelectedUserInputs();\n\n // Potential duplicate entries when dealing with issue board\n // because issue board is also managed by vue\n const selectedUsers = _.uniq(selectedInputs, false, a => a.value)\n .filter((input) => {\n const userId = parseInt(input.value, 10);\n const inUsersArray = users.find(u => u.id === userId);\n\n return !inUsersArray && userId !== 0;\n })\n .map((input) => {\n const userId = parseInt(input.value, 10);\n const { avatarUrl, avatar_url, name, username } = input.dataset;\n return {\n avatar_url: avatarUrl || avatar_url,\n id: userId,\n name,\n username,\n };\n });\n\n users = data.concat(selectedUsers);\n }\n\n let anyUser;\n let index;\n let len;\n let name;\n let obj;\n let showDivider;\n if (term.length === 0) {\n showDivider = 0;\n if (firstUser) {\n // Move current user to the front of the list\n for (index = 0, len = users.length; index < len; index += 1) {\n obj = users[index];\n if (obj.username === firstUser) {\n users.splice(index, 1);\n users.unshift(obj);\n break;\n }\n }\n }\n if (showNullUser) {\n showDivider += 1;\n users.unshift({\n beforeDivider: true,\n name: '未指派',\n id: 0\n });\n }\n if (showAnyUser) {\n showDivider += 1;\n name = showAnyUser;\n if (name === true) {\n name = 'Any User';\n }\n anyUser = {\n beforeDivider: true,\n name: name,\n id: null\n };\n users.unshift(anyUser);\n }\n\n if (showDivider) {\n users.splice(showDivider, 0, 'divider');\n }\n\n if ($dropdown.hasClass('js-multiselect')) {\n const selected = getSelected().filter(i => i !== 0);\n\n if (selected.length > 0) {\n if ($dropdown.data('dropdownHeader')) {\n showDivider += 1;\n users.splice(showDivider, 0, {\n header: $dropdown.data('dropdownHeader'),\n });\n }\n\n const selectedUsers = users\n .filter(u => selected.indexOf(u.id) !== -1)\n .sort((a, b) => a.name > b.name);\n\n users = users.filter(u => selected.indexOf(u.id) === -1);\n\n selectedUsers.forEach((selectedUser) => {\n showDivider += 1;\n users.splice(showDivider, 0, selectedUser);\n });\n\n users.splice(showDivider + 1, 0, 'divider');\n }\n }\n }\n\n callback(users);\n if (showMenuAbove) {\n $dropdown.data('glDropdown').positionMenuAbove();\n }\n },\n filterable: true,\n filterRemote: true,\n search: {\n fields: ['name', 'username']\n },\n selectable: true,\n fieldName: $dropdown.data('fieldName'),\n toggleLabel: function(selected, el, glDropdown) {\n const inputValue = glDropdown.filterInput.val();\n\n if (this.multiSelect && inputValue === '') {\n // Remove non-users from the fullData array\n const users = glDropdown.filteredFullData();\n const callback = glDropdown.parseData.bind(glDropdown);\n\n // Update the data model\n this.processData(inputValue, users, callback);\n }\n\n if (this.multiSelect) {\n return getMultiSelectDropdownTitle(selected, $(el).hasClass('is-active'));\n }\n\n if (selected && 'id' in selected && $(el).hasClass('is-active')) {\n $dropdown.find('.dropdown-toggle-text').removeClass('is-default');\n if (selected.text) {\n return selected.text;\n } else {\n return selected.name;\n }\n } else {\n $dropdown.find('.dropdown-toggle-text').addClass('is-default');\n return defaultLabel;\n }\n },\n defaultLabel: defaultLabel,\n hidden: function(e) {\n if ($dropdown.hasClass('js-multiselect')) {\n emitSidebarEvent('sidebar.saveAssignees');\n }\n\n if (!$dropdown.data('alwaysShowSelectbox')) {\n $selectbox.hide();\n\n // Recalculate where .value is because vue might have changed it\n $block = $selectbox.closest('.block');\n $value = $block.find('.value');\n // display:block overrides the hide-collapse rule\n $value.css('display', '');\n }\n },\n multiSelect: $dropdown.hasClass('js-multiselect'),\n inputMeta: $dropdown.data('inputMeta'),\n clicked: function(options) {\n const { $el, e, isMarking } = options;\n const user = options.selectedObj;\n\n if ($dropdown.hasClass('js-multiselect')) {\n const isActive = $el.hasClass('is-active');\n const previouslySelected = $dropdown.closest('.selectbox')\n .find(\"input[name='\" + ($dropdown.data('fieldName')) + \"'][value!=0]\");\n\n // Enables support for limiting the number of users selected\n // Automatically removes the first on the list if more users are selected\n checkMaxSelect();\n\n if (user.beforeDivider && user.name.toLowerCase() === '未指派') {\n // Unassigned selected\n previouslySelected.each((index, element) => {\n const id = parseInt(element.value, 10);\n element.remove();\n });\n emitSidebarEvent('sidebar.removeAllAssignees');\n } else if (isActive) {\n // user selected\n emitSidebarEvent('sidebar.addAssignee', user);\n\n // Remove unassigned selection (if it was previously selected)\n const unassignedSelected = $dropdown.closest('.selectbox')\n .find(\"input[name='\" + ($dropdown.data('fieldName')) + \"'][value=0]\");\n\n if (unassignedSelected) {\n unassignedSelected.remove();\n }\n } else {\n if (previouslySelected.length === 0) {\n // Select unassigned because there is no more selected users\n this.addInput($dropdown.data('fieldName'), 0, {});\n }\n\n // User unselected\n emitSidebarEvent('sidebar.removeAssignee', user);\n }\n\n if (getSelected().find(u => u === gon.current_user_id)) {\n $('.assign-to-me-link').hide();\n } else {\n $('.assign-to-me-link').show();\n }\n }\n\n var isIssueIndex, isMRIndex, page, selected;\n page = $('body').attr('data-page');\n isIssueIndex = page === 'projects:issues:index';\n isMRIndex = (page === page && page === 'projects:merge_requests:index');\n if ($dropdown.hasClass('js-filter-bulk-update') || $dropdown.hasClass('js-issuable-form-dropdown')) {\n e.preventDefault();\n\n const isSelecting = (user.id !== selectedId);\n selectedId = isSelecting ? user.id : selectedIdDefault;\n\n if (selectedId === gon.current_user_id) {\n $('.assign-to-me-link').hide();\n } else {\n $('.assign-to-me-link').show();\n }\n return;\n }\n if ($el.closest('.add-issues-modal').length) {\n ModalStore.store.filter[$dropdown.data('fieldName')] = user.id;\n } else if (handleClick) {\n e.preventDefault();\n handleClick(user, isMarking);\n } else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {\n return Issuable.filterResults($dropdown.closest('form'));\n } else if ($dropdown.hasClass('js-filter-submit')) {\n return $dropdown.closest('form').submit();\n } else if (!$dropdown.hasClass('js-multiselect')) {\n selected = $dropdown.closest('.selectbox').find(\"input[name='\" + ($dropdown.data('fieldName')) + \"']\").val();\n return assignTo(selected);\n }\n\n // Automatically close dropdown after assignee is selected\n // since CE has no multiple assignees\n // EE does not have a max-select\n if ($dropdown.data('maxSelect') &&\n getSelected().length === $dropdown.data('maxSelect')) {\n // Close the dropdown\n $dropdown.dropdown('toggle');\n }\n },\n id: function (user) {\n return user.id;\n },\n opened: function(e) {\n const $el = $(e.currentTarget);\n const selected = getSelected();\n if ($dropdown.hasClass('js-issue-board-sidebar') && selected.length === 0) {\n this.addInput($dropdown.data('fieldName'), 0, {});\n }\n $el.find('.is-active').removeClass('is-active');\n\n function highlightSelected(id) {\n $el.find(`li[data-user-id=\"${id}\"] .dropdown-menu-user-link`).addClass('is-active');\n }\n\n if (selected.length > 0) {\n getSelected().forEach(selectedId => highlightSelected(selectedId));\n } else if ($dropdown.hasClass('js-issue-board-sidebar')) {\n highlightSelected(0);\n } else {\n highlightSelected(selectedId);\n }\n },\n updateLabel: $dropdown.data('dropdownTitle'),\n renderRow: function(user) {\n var avatar, img, listClosingTags, listWithName, listWithUserName, username;\n username = user.username ? \"@\" + user.username : \"\";\n avatar = user.avatar_url ? user.avatar_url : gon.default_avatar_url;\n\n let selected = false;\n\n if (this.multiSelect) {\n selected = getSelected().find(u => user.id === u);\n\n const { fieldName } = this;\n const field = $dropdown.closest('.selectbox').find(\"input[name='\" + fieldName + \"'][value='\" + user.id + \"']\");\n\n if (field.length) {\n selected = true;\n }\n } else {\n selected = user.id === selectedId;\n }\n\n img = \"\";\n if (user.beforeDivider != null) {\n `
  • ${_.escape(user.name)}
  • `;\n } else {\n img = \"\";\n }\n\n return `\n
  • \n \n ${img}\n \n ${_.escape(user.name)}\n \n ${username ? `${username}` : ''}\n \n
  • \n `;\n }\n });\n };\n })(this));\n $('.ajax-users-select').each((function(_this) {\n return function(i, select) {\n var firstUser, showAnyUser, showEmailUser, showNullUser;\n var options = {};\n options.skipLdap = $(select).hasClass('skip_ldap');\n options.projectId = $(select).data('projectId');\n options.groupId = $(select).data('groupId');\n options.showCurrentUser = $(select).data('currentUser');\n options.authorId = $(select).data('authorId');\n options.skipUsers = $(select).data('skipUsers');\n showNullUser = $(select).data('nullUser');\n showAnyUser = $(select).data('anyUser');\n showEmailUser = $(select).data('emailUser');\n firstUser = $(select).data('firstUser');\n return $(select).select2({\n placeholder: \"Search for a user\",\n multiple: $(select).hasClass('multiselect'),\n minimumInputLength: 0,\n query: function(query) {\n return _this.users(query.term, options, function(users) {\n var anyUser, data, emailUser, index, len, name, nullUser, obj, ref;\n data = {\n results: users\n };\n if (query.term.length === 0) {\n if (firstUser) {\n // Move current user to the front of the list\n ref = data.results;\n\n for (index = 0, len = ref.length; index < len; index += 1) {\n obj = ref[index];\n if (obj.username === firstUser) {\n data.results.splice(index, 1);\n data.results.unshift(obj);\n break;\n }\n }\n }\n if (showNullUser) {\n nullUser = {\n name: '未指派',\n id: 0\n };\n data.results.unshift(nullUser);\n }\n if (showAnyUser) {\n name = showAnyUser;\n if (name === true) {\n name = 'Any User';\n }\n anyUser = {\n name: name,\n id: null\n };\n data.results.unshift(anyUser);\n }\n }\n if (showEmailUser && data.results.length === 0 && query.term.match(/^[^@]+@[^@]+$/)) {\n var trimmed = query.term.trim();\n emailUser = {\n name: \"邀请 \\\"\" + query.term + \"\\\" by email\",\n username: trimmed,\n id: trimmed,\n invite: true\n };\n data.results.unshift(emailUser);\n }\n return query.callback(data);\n });\n },\n initSelection: function() {\n var args;\n args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];\n return _this.initSelection.apply(_this, args);\n },\n formatResult: function() {\n var args;\n args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];\n return _this.formatResult.apply(_this, args);\n },\n formatSelection: function() {\n var args;\n args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];\n return _this.formatSelection.apply(_this, args);\n },\n dropdownCssClass: \"ajax-users-dropdown\",\n // we do not want to escape markup since we are displaying html in results\n escapeMarkup: function(m) {\n return m;\n }\n });\n };\n })(this));\n}\n\nUsersSelect.prototype.initSelection = function(element, callback) {\n var id, nullUser;\n id = $(element).val();\n if (id === \"0\") {\n nullUser = {\n name: '未指派'\n };\n return callback(nullUser);\n } else if (id !== \"\") {\n return this.user(id, callback);\n }\n};\n\nUsersSelect.prototype.formatResult = function(user) {\n var avatar;\n if (user.avatar_url) {\n avatar = user.avatar_url;\n } else {\n avatar = gon.default_avatar_url;\n }\n return \"
    \";\n};\n\nUsersSelect.prototype.formatSelection = function(user) {\n return _.escape(user.name);\n};\n\nUsersSelect.prototype.user = function(user_id, callback) {\n if (!/^\\d+$/.test(user_id)) {\n return false;\n }\n\n var url;\n url = this.buildUrl(this.userPath);\n url = url.replace(':id', user_id);\n return axios.get(url)\n .then(({ data }) => {\n callback(data);\n });\n};\n\n// Return users list. Filtered by query\n// Only active users retrieved\nUsersSelect.prototype.users = function(query, options, callback) {\n const url = this.buildUrl(this.usersPath);\n const params = {\n search: query,\n active: true,\n project_id: options.projectId || null,\n group_id: options.groupId || null,\n skip_ldap: options.skipLdap || null,\n todo_filter: options.todoFilter || null,\n todo_state_filter: options.todoStateFilter || null,\n current_user: options.showCurrentUser || null,\n author_id: options.authorId || null,\n skip_users: options.skipUsers || null\n };\n return axios.get(url, { params })\n .then(({ data }) => {\n callback(data);\n });\n};\n\nUsersSelect.prototype.buildUrl = function(url) {\n if (gon.relative_url_root != null) {\n url = gon.relative_url_root.replace(/\\/$/, '') + url;\n }\n return url;\n};\n\nexport default UsersSelect;\n","import memberExpirationDate from '../../../member_expiration_date';\nimport UsersSelect from '../../../users_select';\nimport groupsSelect from '../../../groups_select';\nimport Members from '../../../members';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n memberExpirationDate('.js-access-expiration-date-groups');\n groupsSelect();\n memberExpirationDate();\n new Members(); // eslint-disable-line no-new\n new UsersSelect(); // eslint-disable-line no-new\n});\n","import $ from 'jquery';\nimport axios from './lib/utils/axios_utils';\nimport Api from './api';\nimport { normalizeHeaders } from './lib/utils/common_utils';\n\nexport default function groupsSelect() {\n // Needs to be accessible in rspec\n window.GROUP_SELECT_PER_PAGE = 20;\n $('.ajax-groups-select').each(function setAjaxGroupsSelect2() {\n const $select = $(this);\n const allAvailable = $select.data('allAvailable');\n const skipGroups = $select.data('skipGroups') || [];\n $select.select2({\n placeholder: '搜索群组',\n allowClear: $select.hasClass('allowClear'),\n multiple: $select.hasClass('multiselect'),\n minimumInputLength: 0,\n ajax: {\n url: Api.buildUrl(Api.groupsPath),\n dataType: 'json',\n quietMillis: 250,\n transport(params) {\n axios[params.type.toLowerCase()](params.url, {\n params: params.data,\n })\n .then((res) => {\n const results = res.data || [];\n const headers = normalizeHeaders(res.headers);\n const currentPage = parseInt(headers['X-PAGE'], 10) || 0;\n const totalPages = parseInt(headers['X-TOTAL-PAGES'], 10) || 0;\n const more = currentPage < totalPages;\n\n params.success({\n results,\n pagination: {\n more,\n },\n });\n }).catch(params.error);\n },\n data(search, page) {\n return {\n search,\n page,\n per_page: window.GROUP_SELECT_PER_PAGE,\n all_available: allAvailable,\n };\n },\n results(data, page) {\n if (data.length) return { results: [] };\n\n const groups = data.length ? data : data.results || [];\n const more = data.pagination ? data.pagination.more : false;\n const results = groups.filter(group => skipGroups.indexOf(group.id) === -1);\n\n return {\n results,\n page,\n more,\n };\n },\n },\n // eslint-disable-next-line consistent-return\n initSelection(element, callback) {\n const id = $(element).val();\n if (id !== '') {\n return Api.group(id, callback);\n }\n },\n formatResult(object) {\n return `
    ${object.full_name}
    ${object.full_path}
    `;\n },\n formatSelection(object) {\n return object.full_name;\n },\n dropdownCssClass: 'ajax-groups-dropdown select2-infinite',\n // we do not want to escape markup since we are displaying html in results\n escapeMarkup(m) {\n return m;\n },\n });\n\n $select.on('select2-loaded', () => {\n const dropdown = document.querySelector('.select2-infinite .select2-results');\n dropdown.style.height = `${Math.floor(dropdown.scrollHeight)}px`;\n });\n });\n}\n"],"sourceRoot":""}