{"version":3,"sources":["webpack:///./labels_select.js","webpack:///./create_label.js","webpack:///./issuable_bulk_update_actions.js","webpack:///./users_select.js"],"names":["LabelsSelect","els","_this","$els","options","arguments","length","undefined","_classCallCheck","this","jquery__WEBPACK_IMPORTED_MODULE_0___default","each","i","dropdown","$block","$dropdown","$form","$loading","$selectbox","$sidebarCollapsedValue","$value","abilityName","defaultLabel","issueUpdateURL","labelUrl","namespacePath","projectPath","saveLabelData","selectedLabel","showAny","showNo","$sidebarLabelTooltip","initialSelected","fieldName","showMenuAbove","$dropdownContainer","closest","find","data","hasClass","split","fadeOut","is","map","value","get","handleClick","tooltip","_create_label__WEBPACK_IMPORTED_MODULE_6__","selected","underscore__WEBPACK_IMPORTED_MODULE_1___default","a","isEqual","label_ids","removeClass","fadeIn","trigger","_lib_utils_axios_utils__WEBPACK_IMPORTED_MODULE_3__","put","then","_ref","labelCount","template","labelTooltipTitle","labelTitles","hide","labels","getLabelTemplate","removeAttr","html","text","label","title","slice","push","join","Object","_locale__WEBPACK_IMPORTED_MODULE_2__","attr","container","catch","_flash__WEBPACK_IMPORTED_MODULE_7__","glDropdown","term","callback","res","chain","groupBy","color","dup","id","duplicate","extraData","unshift","isAny","concat","positionMenuAbove","renderRow","instance","$a","$li","colorEl","indeterminate","removesAll","selectedClass","marked","dropdownName","dropdownValue","indexOf","splice","toString","replace","_filtered_search_dropdown_utils__WEBPACK_IMPORTED_MODULE_5__","duplicateLabelColor","_slicedToArray","addClass","escape","prop","search","fields","selectable","filterable","toggleLabel","el","$dropdownParent","parent","$dropdownInputField","isSelected","selectedLabels","val","index","hidden","isIssueIndex","isMRIndex","page","Issuable","filterResults","submit","multiSelect","vue","clicked","clickEvent","boardsModel","$el","e","isMarking","selectedObj","fadeOutLoader","enableBulkLabelDropdown","setDropdownData","_boards_stores_modal_store__WEBPACK_IMPORTED_MODULE_8__","store","filter","preventDefault","gl","issueBoards","BoardsStore","detail","issue","ListLabel","textColor","update","setOriginalDropdownData","bindEvents","on","onSelectCheckboxIssue","_issuable_bulk_update_actions__WEBPACK_IMPORTED_MODULE_4__","willUpdateLabels","markedIds","unmarkedIds","indeterminateIds","getOriginalIndeterminateIds","getOriginalCommonIds","$container","tplData","tpl","CreateLabelDropdown","$dropdownBack","$cancelButton","$newLabelField","$newColorField","$colorPreview","$newLabelError","$newLabelCreateButton","$colorSuggestions","disable","cleanBinding","addBinding","off","self","$this","addColorValue","enableLabelCreateButton","bind","resetForm","stopPropagation","saveLabel","css","enable","_api__WEBPACK_IMPORTED_MODULE_1__","newLabel","message","errors","keys","key","_lib_utils_text_utility__WEBPACK_IMPORTED_MODULE_2__","show","document","_flash__WEBPACK_IMPORTED_MODULE_3__","__webpack_require__","init","form","issues","prefixId","getElement","$labelDropdown","onFormSubmit","_lib_utils_axios_utils__WEBPACK_IMPORTED_MODULE_2__","getFormDataAsObject","window","location","reload","onFormSubmitFailure","getSelectedIssues","has","getLabelsFromSelection","labelsData","labelId","getUnmarkedIndeterminedLabels","result","labelsToKeep","forEach","formData","state_event","assignee_id","assignee_ids","milestone_id","issuable_ids","subscription_event","add_label_ids","remove_label_ids","$labelSelect","getOriginalMarkedIds","_this2","labelIds","dataset","intersection","apply","_this3","_this4","uniqueIds","issuableLabels","difference","selector","scopeEl","UsersSelect","currentUser","users","user","usersPath","userPath","_typeof","JSON","parse","$collapsedSidebar","assignTo","assigneeTemplate","collapsedAssigneeTemplate","defaultNullUser","firstUser","issueURL","selectedId","selectedIdDefault","showAnyUser","showNullUser","projectId","groupId","showCurrentUser","todoFilter","todoStateFilter","authorId","assignYourself","unassignedSelected","remove","input","createElement","type","name","currentUserInfo","meta","before","after","addEventListener","getSelectedUserInputs","getSelected","parseInt","checkMaxSelect","maxSelect","firstSelectedId","emitSidebarEvent","getMultiSelectDropdownTitle","selectedUser","selectedUsers","u","otherSelected","s","currentTarget","$input","$","gon","current_user_id","current_user_fullname","tooltipTitle","assignee","username","avatar","avatar_url","_locale__WEBPACK_IMPORTED_MODULE_3__","processData","selectedInputs","uniq","userId","_input$dataset","avatarUrl","anyUser","len","obj","showDivider","beforeDivider","header","sort","b","filterRemote","inputValue","filterInput","filteredFullData","parseData","inputMeta","isActive","previouslySelected","toLowerCase","element","addInput","isSelecting","_boards_stores_modal_store__WEBPACK_IMPORTED_MODULE_4__","opened","highlightSelected","updateLabel","img","default_avatar_url","select","showEmailUser","skipLdap","skipUsers","select2","placeholder","multiple","minimumInputLength","query","emailUser","nullUser","ref","results","match","trimmed","trim","invite","initSelection","args","call","formatResult","formatSelection","dropdownCssClass","escapeMarkup","m","noop","prototype","user_id","test","url","buildUrl","_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__"],"mappings":"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","file":"commons~pages.dashboard.issues~pages.dashboard.merge_requests~pages.groups.boards~pages.projects.iss~2716c7a5.88556557.chunk.js","sourcesContent":["/* eslint-disable no-useless-return, func-names, no-var, no-underscore-dangle, prefer-arrow-callback, max-len, one-var, no-unused-vars, one-var-declaration-per-line, prefer-template, no-new, consistent-return, object-shorthand, comma-dangle, no-shadow, no-param-reassign, brace-style, vars-on-top, quotes, no-lonely-if, no-else-return, dot-notation, no-empty */\n/* global Issuable */\n/* global ListLabel */\n\nimport $ from 'jquery';\nimport _ from 'underscore';\nimport { __ } from './locale';\nimport axios from './lib/utils/axios_utils';\nimport IssuableBulkUpdateActions from './issuable_bulk_update_actions';\nimport DropdownUtils from './filtered_search/dropdown_utils';\nimport CreateLabelDropdown from './create_label';\nimport flash from './flash';\nimport ModalStore from './boards/stores/modal_store';\n\nexport default class LabelsSelect {\n constructor(els, options = {}) {\n var _this, $els;\n _this = this;\n\n $els = $(els);\n\n if (!els) {\n $els = $('.js-label-select');\n }\n\n $els.each(function(i, dropdown) {\n var $block, $colorPreview, $dropdown, $form, $loading, $selectbox, $sidebarCollapsedValue, $value, abilityName, defaultLabel, enableLabelCreateButton, issueURLSplit, issueUpdateURL, labelUrl, namespacePath, projectPath, saveLabelData, selectedLabel, showAny, showNo, $sidebarLabelTooltip, initialSelected, $toggleText, fieldName, useId, propertyName, showMenuAbove, $container, $dropdownContainer;\n $dropdown = $(dropdown);\n $dropdownContainer = $dropdown.closest('.labels-filter');\n $toggleText = $dropdown.find('.dropdown-toggle-text');\n namespacePath = $dropdown.data('namespacePath');\n projectPath = $dropdown.data('projectPath');\n labelUrl = $dropdown.data('labels');\n issueUpdateURL = $dropdown.data('issueUpdate');\n selectedLabel = $dropdown.data('selected');\n if ((selectedLabel != null) && !$dropdown.hasClass('js-multiselect')) {\n selectedLabel = selectedLabel.split(',');\n }\n showNo = $dropdown.data('showNo');\n showAny = $dropdown.data('showAny');\n showMenuAbove = $dropdown.data('showMenuAbove');\n defaultLabel = $dropdown.data('defaultLabel');\n abilityName = $dropdown.data('abilityName');\n $selectbox = $dropdown.closest('.selectbox');\n $block = $selectbox.closest('.block');\n $form = $dropdown.closest('form, .js-issuable-update');\n $sidebarCollapsedValue = $block.find('.sidebar-collapsed-icon span');\n $sidebarLabelTooltip = $block.find('.js-sidebar-labels-tooltip');\n $value = $block.find('.value');\n $loading = $block.find('.block-loading').fadeOut();\n fieldName = $dropdown.data('fieldName');\n useId = $dropdown.is('.js-issuable-form-dropdown, .js-filter-bulk-update, .js-label-sidebar-dropdown');\n propertyName = useId ? 'id' : 'title';\n initialSelected = $selectbox\n .find('input[name=\"' + $dropdown.data('fieldName') + '\"]')\n .map(function () {\n return this.value;\n }).get();\n const { handleClick } = options;\n\n $sidebarLabelTooltip.tooltip();\n\n if ($dropdown.closest('.dropdown').find('.dropdown-new-label').length) {\n new CreateLabelDropdown($dropdown.closest('.dropdown').find('.dropdown-new-label'), namespacePath, projectPath);\n }\n\n saveLabelData = function() {\n var data, selected;\n selected = $dropdown.closest('.selectbox').find(\"input[name='\" + fieldName + \"']\").map(function() {\n return this.value;\n }).get();\n\n if (_.isEqual(initialSelected, selected)) return;\n initialSelected = selected;\n\n data = {};\n data[abilityName] = {};\n data[abilityName].label_ids = selected;\n if (!selected.length) {\n data[abilityName].label_ids = [''];\n }\n $loading.removeClass('hidden').fadeIn();\n $dropdown.trigger('loading.gl.dropdown');\n axios.put(issueUpdateURL, data)\n .then(({ data }) => {\n var labelCount, template, labelTooltipTitle, labelTitles, formattedLabels;\n $loading.fadeOut();\n $dropdown.trigger('loaded.gl.dropdown');\n $selectbox.hide();\n data.issueUpdateURL = issueUpdateURL;\n labelCount = 0;\n if (data.labels.length && issueUpdateURL) {\n template = LabelsSelect.getLabelTemplate({\n labels: data.labels,\n issueUpdateURL,\n });\n labelCount = data.labels.length;\n }\n else {\n template = 'None';\n }\n $value.removeAttr('style').html(template);\n $sidebarCollapsedValue.text(labelCount);\n\n if (data.labels.length) {\n labelTitles = data.labels.map(function(label) {\n return label.title;\n });\n\n if (labelTitles.length > 5) {\n labelTitles = labelTitles.slice(0, 5);\n labelTitles.push('and ' + (data.labels.length - 5) + ' more');\n }\n\n labelTooltipTitle = labelTitles.join(', ');\n }\n else {\n labelTooltipTitle = __('Labels');\n }\n\n $sidebarLabelTooltip\n .attr('title', labelTooltipTitle)\n .tooltip('_fixTitle');\n\n $('.has-tooltip', $value).tooltip({\n container: 'body'\n });\n })\n .catch(() => flash(__('Error saving label update.')));\n };\n $dropdown.glDropdown({\n showMenuAbove: showMenuAbove,\n data: function(term, callback) {\n axios.get(labelUrl)\n .then((res) => {\n let data = _.chain(res.data).groupBy(function(label) {\n return label.title;\n }).map(function(label) {\n var color;\n color = _.map(label, function(dup) {\n return dup.color;\n });\n return {\n id: label[0].id,\n title: label[0].title,\n color: color,\n duplicate: color.length > 1\n };\n }).value();\n if ($dropdown.hasClass('js-extra-options')) {\n var extraData = [];\n if (showNo) {\n extraData.unshift({\n id: 0,\n title: '没有标记'\n });\n }\n if (showAny) {\n extraData.unshift({\n isAny: true,\n title: '所有标记'\n });\n }\n if (extraData.length) {\n extraData.push('divider');\n data = extraData.concat(data);\n }\n }\n\n callback(data);\n if (showMenuAbove) {\n $dropdown.data('glDropdown').positionMenuAbove();\n }\n })\n .catch(() => flash(__('Error fetching labels.')));\n },\n renderRow: function(label, instance) {\n var $a, $li, color, colorEl, indeterminate, removesAll, selectedClass, spacing, i, marked, dropdownName, dropdownValue;\n $li = $('
  • ');\n $a = $('');\n selectedClass = [];\n removesAll = label.id <= 0 || (label.id == null);\n if ($dropdown.hasClass('js-filter-bulk-update')) {\n indeterminate = $dropdown.data('indeterminate') || [];\n marked = $dropdown.data('marked') || [];\n\n if (indeterminate.indexOf(label.id) !== -1) {\n selectedClass.push('is-indeterminate');\n }\n\n if (marked.indexOf(label.id) !== -1) {\n // Remove is-indeterminate class if the item will be marked as active\n i = selectedClass.indexOf('is-indeterminate');\n if (i !== -1) {\n selectedClass.splice(i, 1);\n }\n selectedClass.push('is-active');\n }\n } else {\n if (this.id(label)) {\n dropdownName = $dropdown.data('fieldName');\n dropdownValue = this.id(label).toString().replace(/'/g, '\\\\\\'');\n\n if ($form.find(\"input[type='hidden'][name='\" + dropdownName + \"'][value='\" + dropdownValue + \"']\").length) {\n selectedClass.push('is-active');\n }\n }\n\n if ($dropdown.hasClass('js-multiselect') && removesAll) {\n selectedClass.push('dropdown-clear-active');\n }\n }\n if (label.duplicate) {\n color = DropdownUtils.duplicateLabelColor(label.color);\n }\n else {\n if (label.color != null) {\n [color] = label.color;\n }\n }\n if (color) {\n colorEl = \"\";\n }\n else {\n colorEl = '';\n }\n // We need to identify which items are actually labels\n if (label.id) {\n selectedClass.push('label-item');\n $a.attr('data-label-id', label.id);\n }\n $a.addClass(selectedClass.join(' ')).html(`${colorEl} ${_.escape(label.title)}`);\n // Return generated html\n return $li.html($a).prop('outerHTML');\n },\n search: {\n fields: ['title']\n },\n selectable: true,\n filterable: true,\n selected: $dropdown.data('selected') || [],\n toggleLabel: function(selected, el) {\n var $dropdownParent = $dropdown.parent();\n var $dropdownInputField = $dropdownParent.find('.dropdown-input-field');\n var isSelected = el !== null ? el.hasClass('is-active') : false;\n\n var { title } = selected;\n var selectedLabels = this.selected;\n\n if ($dropdownInputField.length && $dropdownInputField.val().length) {\n $dropdownParent.find('.dropdown-input-clear').trigger('click');\n }\n\n if (selected.id === 0) {\n this.selected = [];\n return '无标记';\n }\n else if (isSelected) {\n this.selected.push(title);\n }\n else {\n var index = this.selected.indexOf(title);\n this.selected.splice(index, 1);\n }\n\n if (selectedLabels.length === 1) {\n return selectedLabels;\n }\n else if (selectedLabels.length) {\n return selectedLabels[0] + \" +\" + (selectedLabels.length - 1) + \" more\";\n }\n else {\n return defaultLabel;\n }\n },\n fieldName: $dropdown.data('fieldName'),\n id: function(label) {\n if (label.id <= 0) return label.title;\n\n if ($dropdown.hasClass('js-issuable-form-dropdown')) {\n return label.id;\n }\n\n if ($dropdown.hasClass(\"js-filter-submit\") && (label.isAny == null)) {\n return label.title;\n }\n else {\n return label.id;\n }\n },\n hidden: function() {\n var isIssueIndex, isMRIndex, page, selectedLabels;\n page = $('body').attr('data-page');\n isIssueIndex = page === 'projects:issues:index';\n isMRIndex = page === 'projects:merge_requests:index';\n $selectbox.hide();\n // display:block overrides the hide-collapse rule\n $value.removeAttr('style');\n\n if ($dropdown.hasClass('js-issuable-form-dropdown')) {\n return;\n }\n\n if ($('html').hasClass('issue-boards-page')) {\n return;\n }\n if ($dropdown.hasClass('js-multiselect')) {\n if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {\n selectedLabels = $dropdown.closest('form').find(\"input:hidden[name='\" + ($dropdown.data('fieldName')) + \"']\");\n Issuable.filterResults($dropdown.closest('form'));\n }\n else if ($dropdown.hasClass('js-filter-submit')) {\n $dropdown.closest('form').submit();\n }\n else {\n if (!$dropdown.hasClass('js-filter-bulk-update')) {\n saveLabelData();\n }\n }\n }\n },\n multiSelect: $dropdown.hasClass('js-multiselect'),\n vue: $dropdown.hasClass('js-issue-board-sidebar'),\n clicked: function (clickEvent) {\n const { $el, e, isMarking } = clickEvent;\n const label = clickEvent.selectedObj;\n\n var isIssueIndex, isMRIndex, page, boardsModel;\n var fadeOutLoader = () => {\n $loading.fadeOut();\n };\n\n page = $('body').attr('data-page');\n isIssueIndex = page === 'projects:issues:index';\n isMRIndex = page === 'projects:merge_requests:index';\n\n if ($dropdown.parent().find('.is-active:not(.dropdown-clear-active)').length) {\n $dropdown.parent()\n .find('.dropdown-clear-active')\n .removeClass('is-active');\n }\n\n if ($dropdown.hasClass('js-issuable-form-dropdown')) {\n return;\n }\n\n if ($dropdown.hasClass('js-filter-bulk-update')) {\n _this.enableBulkLabelDropdown();\n _this.setDropdownData($dropdown, isMarking, label.id);\n return;\n }\n\n if ($dropdown.closest('.add-issues-modal').length) {\n boardsModel = ModalStore.store.filter;\n }\n\n if (boardsModel) {\n if (label.isAny) {\n boardsModel['label_name'] = [];\n } else if ($el.hasClass('is-active')) {\n boardsModel['label_name'].push(label.title);\n }\n\n e.preventDefault();\n return;\n }\n else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {\n if (!$dropdown.hasClass('js-multiselect')) {\n selectedLabel = label.title;\n return Issuable.filterResults($dropdown.closest('form'));\n }\n }\n else if ($dropdown.hasClass('js-filter-submit')) {\n return $dropdown.closest('form').submit();\n }\n else if ($dropdown.hasClass('js-issue-board-sidebar')) {\n if ($el.hasClass('is-active')) {\n gl.issueBoards.BoardsStore.detail.issue.labels.push(new ListLabel({\n id: label.id,\n title: label.title,\n color: label.color[0],\n textColor: '#fff'\n }));\n }\n else {\n var { labels } = gl.issueBoards.BoardsStore.detail.issue;\n labels = labels.filter(function (selectedLabel) {\n return selectedLabel.id !== label.id;\n });\n gl.issueBoards.BoardsStore.detail.issue.labels = labels;\n }\n\n $loading.fadeIn();\n\n gl.issueBoards.BoardsStore.detail.issue.update($dropdown.attr('data-issue-update'))\n .then(fadeOutLoader)\n .catch(fadeOutLoader);\n }\n else if (handleClick) {\n e.preventDefault();\n handleClick(label);\n }\n else {\n if ($dropdown.hasClass('js-multiselect')) {\n\n }\n else {\n return saveLabelData();\n }\n }\n },\n });\n\n // Set dropdown data\n _this.setOriginalDropdownData($dropdownContainer, $dropdown);\n });\n this.bindEvents();\n }\n\n static getLabelTemplate(tplData) {\n // We could use ES6 template string here\n // and properly indent markup for readability\n // but that also introduces unintended white-space\n // so best approach is to use traditional way of\n // concatenation\n // see: http://2ality.com/2016/05/template-literal-whitespace.html#joining-arrays\n const tpl = _.template([\n '<% _.each(labels, function(label){ %>',\n '?label_name[]=<%- encodeURIComponent(label.title) %>\">',\n '\" style=\"background-color: <%- label.color %>; color: <%- label.text_color %>;\">',\n '<%- label.title %>',\n '',\n '',\n '<% }); %>',\n ].join(''));\n\n return tpl(tplData);\n }\n\n bindEvents() {\n return $('body').on('change', '.selected_issue', this.onSelectCheckboxIssue);\n }\n // eslint-disable-next-line class-methods-use-this\n onSelectCheckboxIssue() {\n if ($('.selected_issue:checked').length) {\n return;\n }\n return $('.issues-bulk-update .labels-filter .dropdown-toggle-text').text('Label');\n }\n // eslint-disable-next-line class-methods-use-this\n enableBulkLabelDropdown() {\n IssuableBulkUpdateActions.willUpdateLabels = true;\n }\n // eslint-disable-next-line class-methods-use-this\n setDropdownData($dropdown, isMarking, value) {\n var i, markedIds, unmarkedIds, indeterminateIds;\n\n markedIds = $dropdown.data('marked') || [];\n unmarkedIds = $dropdown.data('unmarked') || [];\n indeterminateIds = $dropdown.data('indeterminate') || [];\n\n if (isMarking) {\n markedIds.push(value);\n\n i = indeterminateIds.indexOf(value);\n if (i > -1) {\n indeterminateIds.splice(i, 1);\n }\n\n i = unmarkedIds.indexOf(value);\n if (i > -1) {\n unmarkedIds.splice(i, 1);\n }\n } else {\n // If marked item (not common) is unmarked\n i = markedIds.indexOf(value);\n if (i > -1) {\n markedIds.splice(i, 1);\n }\n\n // If an indeterminate item is being unmarked\n if (IssuableBulkUpdateActions.getOriginalIndeterminateIds().indexOf(value) > -1) {\n unmarkedIds.push(value);\n }\n\n // If a marked item is being unmarked\n // (a marked item could also be a label that is present in all selection)\n if (IssuableBulkUpdateActions.getOriginalCommonIds().indexOf(value) > -1) {\n unmarkedIds.push(value);\n }\n }\n\n $dropdown.data('marked', markedIds);\n $dropdown.data('unmarked', unmarkedIds);\n $dropdown.data('indeterminate', indeterminateIds);\n }\n // eslint-disable-next-line class-methods-use-this\n setOriginalDropdownData($container, $dropdown) {\n const labels = [];\n $container.find('[name=\"label_name[]\"]').map(function() {\n return labels.push(this.value);\n });\n $dropdown.data('marked', labels);\n }\n}\n","/* eslint-disable func-names, prefer-arrow-callback */\n\nimport $ from 'jquery';\nimport Api from './api';\nimport { humanize } from './lib/utils/text_utility';\n\nexport default class CreateLabelDropdown {\n constructor($el, namespacePath, projectPath) {\n this.$el = $el;\n this.namespacePath = namespacePath;\n this.projectPath = projectPath;\n this.$dropdownBack = $('.dropdown-menu-back', this.$el.closest('.dropdown'));\n this.$cancelButton = $('.js-cancel-label-btn', this.$el);\n this.$newLabelField = $('#new_label_name', this.$el);\n this.$newColorField = $('#new_label_color', this.$el);\n this.$colorPreview = $('.js-dropdown-label-color-preview', this.$el);\n this.$newLabelError = $('.js-label-error', this.$el);\n this.$newLabelCreateButton = $('.js-new-label-btn', this.$el);\n this.$colorSuggestions = $('.suggest-colors-dropdown a', this.$el);\n\n this.$newLabelError.hide();\n this.$newLabelCreateButton.disable();\n\n this.cleanBinding();\n this.addBinding();\n }\n\n cleanBinding() {\n this.$colorSuggestions.off('click');\n this.$newLabelField.off('keyup change');\n this.$newColorField.off('keyup change');\n this.$dropdownBack.off('click');\n this.$cancelButton.off('click');\n this.$newLabelCreateButton.off('click');\n }\n\n addBinding() {\n const self = this;\n\n this.$colorSuggestions.on('click', function (e) {\n const $this = $(this);\n self.addColorValue(e, $this);\n });\n\n this.$newLabelField.on('keyup change', this.enableLabelCreateButton.bind(this));\n this.$newColorField.on('keyup change', this.enableLabelCreateButton.bind(this));\n\n this.$dropdownBack.on('click', this.resetForm.bind(this));\n\n this.$cancelButton.on('click', function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n self.resetForm();\n self.$dropdownBack.trigger('click');\n });\n\n this.$newLabelCreateButton.on('click', this.saveLabel.bind(this));\n }\n\n addColorValue(e, $this) {\n e.preventDefault();\n e.stopPropagation();\n\n this.$newColorField.val($this.data('color')).trigger('change');\n this.$colorPreview\n .css('background-color', $this.data('color'))\n .parent()\n .addClass('is-active');\n }\n\n enableLabelCreateButton() {\n if (this.$newLabelField.val() !== '' && this.$newColorField.val() !== '') {\n this.$newLabelError.hide();\n this.$newLabelCreateButton.enable();\n } else {\n this.$newLabelCreateButton.disable();\n }\n }\n\n resetForm() {\n this.$newLabelField\n .val('')\n .trigger('change');\n\n this.$newColorField\n .val('')\n .trigger('change');\n\n this.$colorPreview\n .css('background-color', '')\n .parent()\n .removeClass('is-active');\n }\n\n saveLabel(e) {\n e.preventDefault();\n e.stopPropagation();\n\n Api.newLabel(this.namespacePath, this.projectPath, {\n title: this.$newLabelField.val(),\n color: this.$newColorField.val(),\n }, (label) => {\n this.$newLabelCreateButton.enable();\n\n if (label.message) {\n let errors;\n\n if (typeof label.message === 'string') {\n errors = label.message;\n } else {\n errors = Object.keys(label.message).map(key =>\n `${humanize(key)} ${label.message[key].join(', ')}`,\n ).join('
    ');\n }\n\n this.$newLabelError\n .html(errors)\n .show();\n } else {\n this.$dropdownBack.trigger('click');\n\n $(document).trigger('created.label', label);\n }\n });\n }\n}\n","/* eslint-disable comma-dangle, quotes, consistent-return, func-names, array-callback-return, prefer-arrow-callback, max-len, no-unused-vars */\n\nimport $ from 'jquery';\nimport _ from 'underscore';\nimport axios from './lib/utils/axios_utils';\nimport Flash from './flash';\n\nexport default {\n init({ container, form, issues, prefixId } = {}) {\n this.prefixId = prefixId || 'issue_';\n this.form = form || this.getElement('.bulk-update');\n this.$labelDropdown = this.form.find('.js-label-select');\n this.issues = issues || this.getElement('.issues-list .issue');\n this.willUpdateLabels = false;\n this.bindEvents();\n },\n\n bindEvents() {\n return this.form.off('submit').on('submit', this.onFormSubmit.bind(this));\n },\n\n onFormSubmit(e) {\n e.preventDefault();\n return this.submit();\n },\n\n submit() {\n axios[this.form.attr('method')](this.form.attr('action'), this.getFormDataAsObject())\n .then(() => window.location.reload())\n .catch(() => this.onFormSubmitFailure());\n },\n\n onFormSubmitFailure() {\n this.form.find('[type=\"submit\"]').enable();\n return new Flash(\"Issue update failed\");\n },\n\n getSelectedIssues() {\n return this.issues.has('.selected_issue:checked');\n },\n\n getLabelsFromSelection() {\n const labels = [];\n this.getSelectedIssues().map(function() {\n const labelsData = $(this).data('labels');\n if (labelsData) {\n return labelsData.map(function(labelId) {\n if (labels.indexOf(labelId) === -1) {\n return labels.push(labelId);\n }\n });\n }\n });\n return labels;\n },\n\n /**\n * Will return only labels that were marked previously and the user has unmarked\n * @return {Array} Label IDs\n */\n\n getUnmarkedIndeterminedLabels() {\n const result = [];\n const labelsToKeep = this.$labelDropdown.data('indeterminate');\n\n this.getLabelsFromSelection().forEach((id) => {\n if (labelsToKeep.indexOf(id) === -1) {\n result.push(id);\n }\n });\n\n return result;\n },\n\n /**\n * Simple form serialization, it will return just what we need\n * Returns key/value pairs from form data\n */\n\n getFormDataAsObject() {\n const formData = {\n update: {\n state_event: this.form.find('input[name=\"update[state_event]\"]').val(),\n // For Merge Requests\n assignee_id: this.form.find('input[name=\"update[assignee_id]\"]').val(),\n // For Issues\n assignee_ids: [this.form.find('input[name=\"update[assignee_ids][]\"]').val()],\n milestone_id: this.form.find('input[name=\"update[milestone_id]\"]').val(),\n issuable_ids: this.form.find('input[name=\"update[issuable_ids]\"]').val(),\n subscription_event: this.form.find('input[name=\"update[subscription_event]\"]').val(),\n add_label_ids: [],\n remove_label_ids: []\n }\n };\n if (this.willUpdateLabels) {\n formData.update.add_label_ids = this.$labelDropdown.data('marked');\n formData.update.remove_label_ids = this.$labelDropdown.data('unmarked');\n }\n return formData;\n },\n\n setOriginalDropdownData() {\n const $labelSelect = $('.bulk-update .js-label-select');\n $labelSelect.data('common', this.getOriginalCommonIds());\n $labelSelect.data('marked', this.getOriginalMarkedIds());\n $labelSelect.data('indeterminate', this.getOriginalIndeterminateIds());\n },\n\n // From issuable's initial bulk selection\n getOriginalCommonIds() {\n const labelIds = [];\n\n this.getElement('.selected_issue:checked').each((i, el) => {\n labelIds.push(this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels'));\n });\n return _.intersection.apply(this, labelIds);\n },\n\n // From issuable's initial bulk selection\n getOriginalMarkedIds() {\n const labelIds = [];\n this.getElement('.selected_issue:checked').each((i, el) => {\n labelIds.push(this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels'));\n });\n return _.intersection.apply(this, labelIds);\n },\n\n // From issuable's initial bulk selection\n getOriginalIndeterminateIds() {\n const uniqueIds = [];\n const labelIds = [];\n let issuableLabels = [];\n\n // Collect unique label IDs for all checked issues\n this.getElement('.selected_issue:checked').each((i, el) => {\n issuableLabels = this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels');\n issuableLabels.forEach((labelId) => {\n // Store unique IDs\n if (uniqueIds.indexOf(labelId) === -1) {\n uniqueIds.push(labelId);\n }\n });\n // Store array of IDs per issuable\n labelIds.push(issuableLabels);\n });\n // Add uniqueIds to add it as argument for _.intersection\n labelIds.unshift(uniqueIds);\n // Return IDs that are present but not in all selected issueables\n return _.difference(uniqueIds, _.intersection.apply(this, labelIds));\n },\n\n getElement(selector) {\n this.scopeEl = this.scopeEl || $('.content');\n return this.scopeEl.find(selector);\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"],"sourceRoot":""}