diff options
author | Alfredo Sumaran <alfredo@gitlab.com> | 2016-04-26 13:05:21 -0500 |
---|---|---|
committer | Alfredo Sumaran <alfredo@gitlab.com> | 2016-06-03 17:10:20 -0500 |
commit | 4ab6bfcef50b5e3a8c879ad06161bbc8b56bfb9a (patch) | |
tree | eef11b6d12c6993e37becc83306ff4f7ee7e749d /app/assets | |
parent | 243e51325536ca8468a9d2692cc68aa5f466b5e3 (diff) | |
download | gitlab-ce-4ab6bfcef50b5e3a8c879ad06161bbc8b56bfb9a.tar.gz |
Set indeterminated items
Diffstat (limited to 'app/assets')
-rw-r--r-- | app/assets/javascripts/gl_dropdown.js.coffee | 14 | ||||
-rw-r--r-- | app/assets/javascripts/labels_select.js.coffee | 32 | ||||
-rw-r--r-- | app/assets/stylesheets/framework/dropdowns.scss | 11 |
3 files changed, 52 insertions, 5 deletions
diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index d263faa287a..7a23a3cf881 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -11,6 +11,8 @@ class GitLabDropdownFilter $inputContainer = @input.parent() $clearButton = $inputContainer.find('.js-dropdown-input-clear') + @indeterminatedIds = [] + # Clear click $clearButton.on 'click', (e) => e.preventDefault() @@ -298,6 +300,13 @@ class GitLabDropdown opened: => @addArrowKeyEvent() + if @options.setIndeterminatedIds + @options.setIndeterminatedIds.call(@) + + # Makes indeterminated items effective + if @fullData and @dropdown.find('.dropdown-menu-toggle').hasClass('js-filter-bulk-update') + @parseData @fullData + contentHtml = $('.dropdown-content', @dropdown).html() if @remote && contentHtml is "" @remote.execute() @@ -309,6 +318,9 @@ class GitLabDropdown hidden: (e) => @removeArrayKeyEvent() + + return if @dropdown.find('.dropdown-menu-toggle').hasClass('js-filter-bulk-update') + if @options.filterable @dropdown .find(".dropdown-input-field") @@ -358,7 +370,7 @@ class GitLabDropdown if @options.renderRow # Call the render function - html = @options.renderRow(data) + html = @options.renderRow.call(@options, data, @) else if not selected value = if @options.id then @options.id(data) else data.id diff --git a/app/assets/javascripts/labels_select.js.coffee b/app/assets/javascripts/labels_select.js.coffee index b8205565dbc..0aedc7a5f0b 100644 --- a/app/assets/javascripts/labels_select.js.coffee +++ b/app/assets/javascripts/labels_select.js.coffee @@ -1,5 +1,7 @@ class @LabelsSelect constructor: -> + _this = @ + $('.js-label-select').each (i, dropdown) -> $dropdown = $(dropdown) projectId = $dropdown.data('project-id') @@ -196,15 +198,25 @@ class @LabelsSelect callback data - renderRow: (label) -> + renderRow: (label, instance) -> + selectedClass = [] removesAll = label.id is 0 or not label.id? - selectedClass = [] + if $dropdown.hasClass('js-filter-bulk-update') + indeterminated = instance.indeterminatedIds + if indeterminated.indexOf(label.id) isnt -1 + selectedClass.push 'indeterminated' + if $form.find("input[type='hidden']\ [name='#{$dropdown.data('fieldName')}']\ [value='#{this.id(label)}']").length selectedClass.push 'is-active' + index = selectedClass.indexOf('indeterminated') + + if index isnt -1 + selectedClass.splice(index, 1) + if $dropdown.hasClass('js-multiselect') and removesAll selectedClass.push 'dropdown-clear-active' @@ -264,6 +276,8 @@ class @LabelsSelect label.id hidden: -> + return if $dropdown.hasClass('js-filter-bulk-update') + page = $('body').data 'page' isIssueIndex = page is 'projects:issues:index' isMRIndex = page is 'projects:merge_requests:index' @@ -301,4 +315,18 @@ class @LabelsSelect return else saveLabelData() + + setIndeterminatedIds: -> + if @dropdown.find('.dropdown-menu-toggle').hasClass('js-filter-bulk-update') + console.log 'options.setIndeterminatedIds' + @indeterminatedIds = _this.getIndeterminatedIds() ) + + getIndeterminatedIds: -> + label_ids = [] + + $('.selected_issue:checked').each (i, el) -> + issue_id = $(el).data('id') + label_ids.push $("#issue_#{issue_id}").data('labels') + + _.flatten(label_ids) diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss index 93c63c69843..a77c19bf2a7 100644 --- a/app/assets/stylesheets/framework/dropdowns.scss +++ b/app/assets/stylesheets/framework/dropdowns.scss @@ -232,9 +232,8 @@ a { padding-left: 25px; - &.is-active { + &.indeterminated, &.is-active{ &::before { - content: "\f00c"; position: absolute; left: 5px; top: 50%; @@ -246,6 +245,14 @@ -moz-osx-font-smoothing: grayscale; } } + + &.indeterminated::before { + content: "\f068"; + } + + &.is-active::before { + content: "\f00c"; + } } } |