{"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","Object","_locale__WEBPACK_IMPORTED_MODULE_2__","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","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","firstLabel","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","opened","previousSelection","updateLabel","preserveContext","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__","highlightSelected","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.01a67a43.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 { sprintf, __ } 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') || __('Label');\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 ? selected.title : null;\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 && selected.id === 0) {\n this.selected = [];\n return '无标记';\n }\n else if (isSelected) {\n this.selected.push(title);\n }\n else if (!isSelected && title) {\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 sprintf(__('%{firstLabel} +%{labelCount} more'), {\n firstLabel: selectedLabels[0],\n labelCount: selectedLabels.length - 1\n });\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 opened: function(e) {\n if ($dropdown.hasClass('js-issue-board-sidebar')) {\n const previousSelection = $dropdown.attr('data-selected');\n this.selected = previousSelection ? previousSelection.split(',') : [];\n $dropdown.data('glDropdown').updateLabel();\n }\n },\n preserveContext: true,\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":""}