Skip to content
GitLab
Next
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
GitLab.org
GitLab FOSS
Commits
000087ab
Commit
000087ab
authored
Jul 16, 2020
by
🤖 GitLab Bot 🤖
Browse files
Add latest changes from gitlab-org/gitlab@master
parent
5de7e7c7
Changes
166
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
75 changed files
with
352 additions
and
117 deletions
+352
-117
app/assets/javascripts/awards_handler.js
app/assets/javascripts/awards_handler.js
+0
-5
app/assets/javascripts/batch_comments/components/draft_note.vue
...sets/javascripts/batch_comments/components/draft_note.vue
+6
-1
app/assets/javascripts/diffs/components/diff_line_note_form.vue
...sets/javascripts/diffs/components/diff_line_note_form.vue
+1
-4
app/assets/javascripts/diffs/components/inline_diff_table_row.vue
...ts/javascripts/diffs/components/inline_diff_table_row.vue
+9
-1
app/assets/javascripts/diffs/components/inline_diff_view.vue
app/assets/javascripts/diffs/components/inline_diff_view.vue
+13
-1
app/assets/javascripts/diffs/components/parallel_diff_table_row.vue
.../javascripts/diffs/components/parallel_diff_table_row.vue
+7
-0
app/assets/javascripts/diffs/components/parallel_diff_view.vue
...ssets/javascripts/diffs/components/parallel_diff_view.vue
+13
-1
app/assets/javascripts/graphql_shared/fragments/user.fragment.graphql
...avascripts/graphql_shared/fragments/user.fragment.graphql
+7
-0
app/assets/javascripts/notes/components/discussion_notes.vue
app/assets/javascripts/notes/components/discussion_notes.vue
+6
-2
app/assets/javascripts/notes/components/multiline_comment_form.vue
...s/javascripts/notes/components/multiline_comment_form.vue
+16
-0
app/assets/javascripts/notes/components/multiline_comment_utils.js
...s/javascripts/notes/components/multiline_comment_utils.js
+19
-0
app/assets/javascripts/notes/components/noteable_note.vue
app/assets/javascripts/notes/components/noteable_note.vue
+5
-1
app/assets/javascripts/notes/stores/actions.js
app/assets/javascripts/notes/stores/actions.js
+8
-0
app/assets/javascripts/notes/stores/modules/index.js
app/assets/javascripts/notes/stores/modules/index.js
+9
-0
app/assets/javascripts/notes/stores/mutation_types.js
app/assets/javascripts/notes/stores/mutation_types.js
+2
-0
app/assets/javascripts/notes/stores/mutations.js
app/assets/javascripts/notes/stores/mutations.js
+8
-0
app/assets/javascripts/repository/components/table/index.vue
app/assets/javascripts/repository/components/table/index.vue
+1
-0
app/assets/javascripts/repository/components/table/row.vue
app/assets/javascripts/repository/components/table/row.vue
+6
-0
app/assets/javascripts/vue_shared/components/file_icon.vue
app/assets/javascripts/vue_shared/components/file_icon.vue
+16
-8
app/assets/javascripts/vue_shared/constants.js
app/assets/javascripts/vue_shared/constants.js
+2
-0
app/assets/stylesheets/components/design_management/design.scss
...sets/stylesheets/components/design_management/design.scss
+3
-2
app/graphql/resolvers/issues_resolver.rb
app/graphql/resolvers/issues_resolver.rb
+2
-0
app/graphql/types/issue_connection_type.rb
app/graphql/types/issue_connection_type.rb
+13
-0
app/graphql/types/issue_type.rb
app/graphql/types/issue_type.rb
+2
-0
app/views/shared/issuable/_bulk_update_sidebar.html.haml
app/views/shared/issuable/_bulk_update_sidebar.html.haml
+1
-1
changelogs/unreleased/design-management-transitions.yml
changelogs/unreleased/design-management-transitions.yml
+5
-0
changelogs/unreleased/jdb-highlight-commented-rows.yml
changelogs/unreleased/jdb-highlight-commented-rows.yml
+5
-0
changelogs/unreleased/symlink-icon-ui.yml
changelogs/unreleased/symlink-icon-ui.yml
+5
-0
doc/.vale/gitlab/AlertBoxStyle.yml
doc/.vale/gitlab/AlertBoxStyle.yml
+4
-1
doc/administration/auth/jwt.md
doc/administration/auth/jwt.md
+2
-1
doc/administration/auth/ldap/google_secure_ldap.md
doc/administration/auth/ldap/google_secure_ldap.md
+2
-1
doc/administration/auth/ldap/ldap-troubleshooting.md
doc/administration/auth/ldap/ldap-troubleshooting.md
+2
-2
doc/administration/geo/disaster_recovery/bring_primary_back.md
...dministration/geo/disaster_recovery/bring_primary_back.md
+4
-2
doc/administration/geo/replication/database.md
doc/administration/geo/replication/database.md
+4
-2
doc/administration/geo/replication/datatypes.md
doc/administration/geo/replication/datatypes.md
+1
-1
doc/administration/geo/replication/external_database.md
doc/administration/geo/replication/external_database.md
+2
-1
doc/administration/geo/replication/multiple_servers.md
doc/administration/geo/replication/multiple_servers.md
+6
-3
doc/administration/geo/replication/troubleshooting.md
doc/administration/geo/replication/troubleshooting.md
+4
-3
doc/administration/geo/replication/updating_the_geo_nodes.md
doc/administration/geo/replication/updating_the_geo_nodes.md
+2
-1
doc/administration/gitaly/praefect.md
doc/administration/gitaly/praefect.md
+12
-6
doc/administration/high_availability/consul.md
doc/administration/high_availability/consul.md
+2
-2
doc/administration/high_availability/gitlab.md
doc/administration/high_availability/gitlab.md
+12
-6
doc/administration/high_availability/nfs.md
doc/administration/high_availability/nfs.md
+6
-3
doc/administration/high_availability/sidekiq.md
doc/administration/high_availability/sidekiq.md
+2
-1
doc/administration/instance_limits.md
doc/administration/instance_limits.md
+10
-5
doc/administration/integration/plantuml.md
doc/administration/integration/plantuml.md
+2
-1
doc/administration/integration/terminal.md
doc/administration/integration/terminal.md
+2
-1
doc/administration/job_artifacts.md
doc/administration/job_artifacts.md
+7
-6
doc/administration/job_logs.md
doc/administration/job_logs.md
+1
-1
doc/administration/lfs/index.md
doc/administration/lfs/index.md
+2
-1
doc/administration/logs.md
doc/administration/logs.md
+2
-1
doc/administration/merge_request_diffs.md
doc/administration/merge_request_diffs.md
+2
-1
doc/administration/object_storage.md
doc/administration/object_storage.md
+10
-5
doc/administration/operations/fast_ssh_key_lookup.md
doc/administration/operations/fast_ssh_key_lookup.md
+8
-4
doc/administration/operations/filesystem_benchmarking.md
doc/administration/operations/filesystem_benchmarking.md
+2
-1
doc/administration/packages/container_registry.md
doc/administration/packages/container_registry.md
+4
-2
doc/administration/packages/dependency_proxy.md
doc/administration/packages/dependency_proxy.md
+2
-1
doc/administration/packages/index.md
doc/administration/packages/index.md
+2
-1
doc/administration/postgresql/replication_and_failover.md
doc/administration/postgresql/replication_and_failover.md
+6
-3
doc/administration/postgresql/standalone.md
doc/administration/postgresql/standalone.md
+2
-1
doc/administration/raketasks/ldap.md
doc/administration/raketasks/ldap.md
+1
-1
doc/administration/raketasks/maintenance.md
doc/administration/raketasks/maintenance.md
+1
-1
doc/administration/redis/replication_and_failover.md
doc/administration/redis/replication_and_failover.md
+2
-1
doc/administration/reference_architectures/2k_users.md
doc/administration/reference_architectures/2k_users.md
+2
-1
doc/administration/reference_architectures/3k_users.md
doc/administration/reference_architectures/3k_users.md
+2
-1
doc/administration/reference_architectures/index.md
doc/administration/reference_architectures/index.md
+2
-1
doc/administration/repository_storage_paths.md
doc/administration/repository_storage_paths.md
+2
-1
doc/administration/smime_signing_email.md
doc/administration/smime_signing_email.md
+6
-3
doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
...dministration/troubleshooting/gitlab_rails_cheat_sheet.md
+2
-2
doc/administration/troubleshooting/linux_cheat_sheet.md
doc/administration/troubleshooting/linux_cheat_sheet.md
+1
-1
doc/administration/troubleshooting/navigating_gitlab_via_rails_console.md
...on/troubleshooting/navigating_gitlab_via_rails_console.md
+1
-1
doc/administration/troubleshooting/postgresql.md
doc/administration/troubleshooting/postgresql.md
+4
-2
doc/administration/troubleshooting/sidekiq.md
doc/administration/troubleshooting/sidekiq.md
+2
-1
doc/administration/uploads.md
doc/administration/uploads.md
+2
-1
doc/api/epics.md
doc/api/epics.md
+1
-1
No files found.
app/assets/javascripts/awards_handler.js
View file @
000087ab
...
...
@@ -13,11 +13,6 @@ import * as Emoji from '~/emoji';
const
animationEndEventString
=
'
animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd
'
;
const
transitionEndEventString
=
'
transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd
'
;
const
requestAnimationFrame
=
window
.
requestAnimationFrame
||
window
.
webkitRequestAnimationFrame
||
window
.
mozRequestAnimationFrame
||
window
.
setTimeout
;
const
FROM_SENTENCE_REGEX
=
/
(?:
, and | and |,
)
/
;
// For separating lists produced by ruby's Array#toSentence
...
...
app/assets/javascripts/batch_comments/components/draft_note.vue
View file @
000087ab
...
...
@@ -51,6 +51,7 @@ export default {
'
scrollToDraft
'
,
'
toggleResolveDiscussion
'
,
]),
...
mapActions
([
'
setSelectedCommentPositionHover
'
]),
update
(
data
)
{
this
.
updateDraft
(
data
);
},
...
...
@@ -67,7 +68,11 @@ export default {
};
</
script
>
<
template
>
<article
class=
"draft-note-component note-wrapper"
>
<article
class=
"draft-note-component note-wrapper"
@
mouseenter=
"setSelectedCommentPositionHover(draft.position.line_range)"
@
mouseleave=
"setSelectedCommentPositionHover()"
>
<ul
class=
"notes draft-notes"
>
<noteable-note
:note=
"draft"
...
...
app/assets/javascripts/diffs/components/diff_line_note_form.vue
View file @
000087ab
...
...
@@ -148,10 +148,7 @@ export default {
<
template
>
<div
class=
"content discussion-form discussion-form-container discussion-notes"
>
<div
v-if=
"glFeatures.multilineComments"
class=
"gl-mb-3 gl-text-gray-700 gl-border-gray-100 gl-border-b-solid gl-border-b-1 gl-pb-3"
>
<div
v-if=
"glFeatures.multilineComments"
class=
"gl-mb-3 gl-text-gray-700 gl-pb-3"
>
<multiline-comment-form
v-model=
"commentLineStart"
:line=
"line"
...
...
app/assets/javascripts/diffs/components/inline_diff_table_row.vue
View file @
000087ab
...
...
@@ -37,6 +37,11 @@ export default {
required
:
false
,
default
:
false
,
},
isCommented
:
{
type
:
Boolean
,
required
:
false
,
default
:
false
,
},
},
data
()
{
return
{
...
...
@@ -47,7 +52,10 @@ export default {
...
mapGetters
(
'
diffs
'
,
[
'
fileLineCoverage
'
]),
...
mapState
({
isHighlighted
(
state
)
{
return
this
.
line
.
line_code
!==
null
&&
this
.
line
.
line_code
===
state
.
diffs
.
highlightedRow
;
if
(
this
.
isCommented
)
return
true
;
const
lineCode
=
this
.
line
.
line_code
;
return
lineCode
?
lineCode
===
state
.
diffs
.
highlightedRow
:
false
;
},
}),
isContextLine
()
{
...
...
app/assets/javascripts/diffs/components/inline_diff_view.vue
View file @
000087ab
<
script
>
import
{
mapGetters
}
from
'
vuex
'
;
import
{
mapGetters
,
mapState
}
from
'
vuex
'
;
import
draftCommentsMixin
from
'
~/diffs/mixins/draft_comments
'
;
import
InlineDraftCommentRow
from
'
~/batch_comments/components/inline_draft_comment_row.vue
'
;
import
inlineDiffTableRow
from
'
./inline_diff_table_row.vue
'
;
import
inlineDiffCommentRow
from
'
./inline_diff_comment_row.vue
'
;
import
inlineDiffExpansionRow
from
'
./inline_diff_expansion_row.vue
'
;
import
{
getCommentedLines
}
from
'
~/notes/components/multiline_comment_utils
'
;
export
default
{
components
:
{
...
...
@@ -31,9 +32,19 @@ export default {
},
computed
:
{
...
mapGetters
(
'
diffs
'
,
[
'
commitId
'
]),
...
mapState
({
selectedCommentPosition
:
({
notes
})
=>
notes
.
selectedCommentPosition
,
selectedCommentPositionHover
:
({
notes
})
=>
notes
.
selectedCommentPositionHover
,
}),
diffLinesLength
()
{
return
this
.
diffLines
.
length
;
},
commentedLines
()
{
return
getCommentedLines
(
this
.
selectedCommentPosition
||
this
.
selectedCommentPositionHover
,
this
.
diffLines
,
);
},
},
userColorScheme
:
window
.
gon
.
user_color_scheme
,
};
...
...
@@ -67,6 +78,7 @@ export default {
:file-path="diffFile.file_path"
:line="line"
:is-bottom="index + 1 === diffLinesLength"
:is-commented="index >= commentedLines.startLine
&&
index
<
=
commentedLines.endLine
"
/>
<inline-diff-comment-row
:key=
"`icr-$
{line.line_code || index}`"
...
...
app/assets/javascripts/diffs/components/parallel_diff_table_row.vue
View file @
000087ab
...
...
@@ -40,6 +40,11 @@ export default {
required
:
false
,
default
:
false
,
},
isCommented
:
{
type
:
Boolean
,
required
:
false
,
default
:
false
,
},
},
data
()
{
return
{
...
...
@@ -51,6 +56,8 @@ export default {
...
mapGetters
(
'
diffs
'
,
[
'
fileLineCoverage
'
]),
...
mapState
({
isHighlighted
(
state
)
{
if
(
this
.
isCommented
)
return
true
;
const
lineCode
=
(
this
.
line
.
left
&&
this
.
line
.
left
.
line_code
)
||
(
this
.
line
.
right
&&
this
.
line
.
right
.
line_code
);
...
...
app/assets/javascripts/diffs/components/parallel_diff_view.vue
View file @
000087ab
<
script
>
import
{
mapGetters
}
from
'
vuex
'
;
import
{
mapGetters
,
mapState
}
from
'
vuex
'
;
import
draftCommentsMixin
from
'
~/diffs/mixins/draft_comments
'
;
import
ParallelDraftCommentRow
from
'
~/batch_comments/components/parallel_draft_comment_row.vue
'
;
import
parallelDiffTableRow
from
'
./parallel_diff_table_row.vue
'
;
import
parallelDiffCommentRow
from
'
./parallel_diff_comment_row.vue
'
;
import
parallelDiffExpansionRow
from
'
./parallel_diff_expansion_row.vue
'
;
import
{
getCommentedLines
}
from
'
~/notes/components/multiline_comment_utils
'
;
export
default
{
components
:
{
...
...
@@ -31,9 +32,19 @@ export default {
},
computed
:
{
...
mapGetters
(
'
diffs
'
,
[
'
commitId
'
]),
...
mapState
({
selectedCommentPosition
:
({
notes
})
=>
notes
.
selectedCommentPosition
,
selectedCommentPositionHover
:
({
notes
})
=>
notes
.
selectedCommentPositionHover
,
}),
diffLinesLength
()
{
return
this
.
diffLines
.
length
;
},
commentedLines
()
{
return
getCommentedLines
(
this
.
selectedCommentPosition
||
this
.
selectedCommentPositionHover
,
this
.
diffLines
,
);
},
},
userColorScheme
:
window
.
gon
.
user_color_scheme
,
};
...
...
@@ -69,6 +80,7 @@ export default {
:file-path=
"diffFile.file_path"
:line=
"line"
:is-bottom=
"index + 1 === diffLinesLength"
:is-commented=
"index >= commentedLines.startLine && index
<
=
commentedLines.endLine
"
/>
<parallel-diff-comment-row
:key=
"`dcr-$
{line.line_code || index}`"
...
...
app/assets/javascripts/graphql_shared/fragments/user.fragment.graphql
0 → 100644
View file @
000087ab
fragment
User
on
User
{
id
avatarUrl
name
username
webUrl
}
app/assets/javascripts/notes/components/discussion_notes.vue
View file @
000087ab
...
...
@@ -74,7 +74,7 @@ export default {
},
},
methods
:
{
...
mapActions
([
'
toggleDiscussion
'
]),
...
mapActions
([
'
toggleDiscussion
'
,
'
setSelectedCommentPositionHover
'
]),
componentName
(
note
)
{
if
(
note
.
isPlaceholderNote
)
{
if
(
note
.
placeholderType
===
SYSTEM_NOTE
)
{
...
...
@@ -99,7 +99,11 @@ export default {
<
template
>
<div
class=
"discussion-notes"
>
<ul
class=
"notes"
>
<ul
class=
"notes"
@
mouseenter=
"setSelectedCommentPositionHover(discussion.position.line_range)"
@
mouseleave=
"setSelectedCommentPositionHover()"
>
<template
v-if=
"shouldGroupReplies"
>
<component
:is=
"componentName(firstNote)"
...
...
app/assets/javascripts/notes/components/multiline_comment_form.vue
View file @
000087ab
<
script
>
import
{
mapActions
}
from
'
vuex
'
;
import
{
GlFormSelect
,
GlSprintf
}
from
'
@gitlab/ui
'
;
import
{
getSymbol
,
getLineClasses
}
from
'
./multiline_comment_utils
'
;
...
...
@@ -39,8 +40,13 @@ export default {
old_line
:
line
.
old_line
,
new_line
:
line
.
new_line
,
};
this
.
highlightSelection
();
},
destroyed
()
{
this
.
setSelectedCommentPosition
();
},
methods
:
{
...
mapActions
([
'
setSelectedCommentPosition
'
]),
getSymbol
({
type
})
{
return
getSymbol
(
type
);
},
...
...
@@ -50,6 +56,16 @@ export default {
updateCommentLineStart
(
value
)
{
this
.
commentLineStart
=
value
;
this
.
$emit
(
'
input
'
,
value
);
this
.
highlightSelection
();
},
highlightSelection
()
{
const
{
line_code
,
new_line
,
old_line
,
type
}
=
this
.
line
;
const
updatedLineRange
=
{
start
:
{
...
this
.
commentLineStart
},
end
:
{
line_code
,
new_line
,
old_line
,
type
},
};
this
.
setSelectedCommentPosition
(
updatedLineRange
);
},
},
};
...
...
app/assets/javascripts/notes/components/multiline_comment_utils.js
View file @
000087ab
...
...
@@ -90,3 +90,22 @@ export function formatLineRange(start, end) {
end
:
extractProps
(
end
),
};
}
export
function
getCommentedLines
(
selectedCommentPosition
,
diffLines
)
{
if
(
!
selectedCommentPosition
)
{
// This structure simplifies the logic that consumes this result
// by keeping the returned shape the same and adjusting the bounds
// to something unreachable. This way our component logic stays:
// "if index between start and end"
return
{
startLine
:
diffLines
.
length
+
1
,
endLine
:
diffLines
.
length
+
1
,
};
}
const
{
start
,
end
}
=
selectedCommentPosition
;
const
startLine
=
diffLines
.
findIndex
(
l
=>
l
.
line_code
===
start
.
line_code
);
const
endLine
=
diffLines
.
findIndex
(
l
=>
l
.
line_code
===
end
.
line_code
);
return
{
startLine
,
endLine
};
}
app/assets/javascripts/notes/components/noteable_note.vue
View file @
000087ab
...
...
@@ -186,6 +186,7 @@ export default {
eventHub
.
$on
(
'
enterEditMode
'
,
({
noteId
})
=>
{
if
(
noteId
===
this
.
note
.
id
)
{
this
.
isEditing
=
true
;
this
.
setSelectedCommentPositionHover
();
this
.
scrollToNoteIfNeeded
(
$
(
this
.
$el
));
}
});
...
...
@@ -205,9 +206,11 @@ export default {
'
toggleResolveNote
'
,
'
scrollToNoteIfNeeded
'
,
'
updateAssignees
'
,
'
setSelectedCommentPositionHover
'
,
]),
editHandler
()
{
this
.
isEditing
=
true
;
this
.
setSelectedCommentPositionHover
();
this
.
$emit
(
'
handleEdit
'
);
},
deleteHandler
()
{
...
...
@@ -284,6 +287,7 @@ export default {
}
else
{
this
.
isRequesting
=
false
;
this
.
isEditing
=
true
;
this
.
setSelectedCommentPositionHover
();
this
.
$nextTick
(()
=>
{
const
msg
=
__
(
'
Something went wrong while editing your comment. Please try again.
'
);
Flash
(
msg
,
'
alert
'
,
this
.
$el
);
...
...
@@ -340,7 +344,7 @@ export default {
:line=
"line"
:comment-line-options=
"commentLineOptions"
:line-range=
"note.position.line_range"
class=
"gl-mb-3 gl-text-gray-700
gl-border-gray-100 gl-border-b-solid gl-border-b-1
gl-pb-3"
class=
"gl-mb-3 gl-text-gray-700 gl-pb-3"
/>
<div
v-else
...
...
app/assets/javascripts/notes/stores/actions.js
View file @
000087ab
...
...
@@ -99,6 +99,14 @@ export const setDiscussionSortDirection = ({ commit }, direction) => {
commit
(
types
.
SET_DISCUSSIONS_SORT
,
direction
);
};
export
const
setSelectedCommentPosition
=
({
commit
},
position
)
=>
{
commit
(
types
.
SET_SELECTED_COMMENT_POSITION
,
position
);
};
export
const
setSelectedCommentPositionHover
=
({
commit
},
position
)
=>
{
commit
(
types
.
SET_SELECTED_COMMENT_POSITION_HOVER
,
position
);
};
export
const
removeNote
=
({
commit
,
dispatch
,
state
},
note
)
=>
{
const
discussion
=
state
.
discussions
.
find
(({
id
})
=>
id
===
note
.
discussion_id
);
...
...
app/assets/javascripts/notes/stores/modules/index.js
View file @
000087ab
...
...
@@ -12,6 +12,15 @@ export default () => ({
lastFetchedAt
:
null
,
currentDiscussionId
:
null
,
batchSuggestionsInfo
:
[],
/**
* selectedCommentPosition & selectedCommentPosition structures are the same as `position.line_range`:
* {
* start: { line_code: string, new_line: number, old_line:number, type: string },
* end: { line_code: string, new_line: number, old_line:number, type: string },
* }
*/
selectedCommentPosition
:
null
,
selectedCommentPositionHover
:
null
,
// View layer
isToggleStateButtonLoading
:
false
,
...
...
app/assets/javascripts/notes/stores/mutation_types.js
View file @
000087ab
...
...
@@ -33,6 +33,8 @@ export const SET_EXPAND_DISCUSSIONS = 'SET_EXPAND_DISCUSSIONS';
export
const
UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS
=
'
UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS
'
;
export
const
SET_CURRENT_DISCUSSION_ID
=
'
SET_CURRENT_DISCUSSION_ID
'
;
export
const
SET_DISCUSSIONS_SORT
=
'
SET_DISCUSSIONS_SORT
'
;
export
const
SET_SELECTED_COMMENT_POSITION
=
'
SET_SELECTED_COMMENT_POSITION
'
;
export
const
SET_SELECTED_COMMENT_POSITION_HOVER
=
'
SET_SELECTED_COMMENT_POSITION_HOVER
'
;
// Issue
export
const
CLOSE_ISSUE
=
'
CLOSE_ISSUE
'
;
...
...
app/assets/javascripts/notes/stores/mutations.js
View file @
000087ab
...
...
@@ -308,6 +308,14 @@ export default {
state
.
discussionSortOrder
=
sort
;
},
[
types
.
SET_SELECTED_COMMENT_POSITION
](
state
,
position
)
{
state
.
selectedCommentPosition
=
position
;
},
[
types
.
SET_SELECTED_COMMENT_POSITION_HOVER
](
state
,
position
)
{
state
.
selectedCommentPositionHover
=
position
;
},
[
types
.
DISABLE_COMMENTS
](
state
,
value
)
{
state
.
commentsDisabled
=
value
;
},
...
...
app/assets/javascripts/repository/components/table/index.vue
View file @
000087ab
...
...
@@ -97,6 +97,7 @@ export default {
:path="entry.flatPath"
:type="entry.type"
:url="entry.webUrl"
:mode="entry.mode"
:submodule-tree-url="entry.treeUrl"
:lfs-oid="entry.lfsOid"
:loading-path="loadingPath"
...
...
app/assets/javascripts/repository/components/table/row.vue
View file @
000087ab
...
...
@@ -66,6 +66,11 @@ export default {
type
:
String
,
required
:
true
,
},
mode
:
{
type
:
String
,
required
:
false
,
default
:
''
,
},
type
:
{
type
:
String
,
required
:
true
,
...
...
@@ -140,6 +145,7 @@ export default {
>
<file-icon
:file-name=
"fullPath"
:file-mode=
"mode"
:folder=
"isFolder"
:submodule=
"isSubmodule"
:loading=
"path === loadingPath"
...
...
app/assets/javascripts/vue_shared/components/file_icon.vue
View file @
000087ab
<
script
>
import
{
GlLoadingIcon
,
GlIcon
}
from
'
@gitlab/ui
'
;
import
getIconForFile
from
'
./file_icon/file_icon_map
'
;
import
{
FILE_SYMLINK_MODE
}
from
'
../constants
'
;
/* This is a re-usable vue component for rendering a svg sprite
icon
...
...
@@ -24,6 +25,11 @@ export default {
type
:
String
,
required
:
true
,
},
fileMode
:
{
type
:
String
,
required
:
false
,
default
:
''
,
},
folder
:
{
type
:
Boolean
,
...
...
@@ -60,8 +66,12 @@ export default {
},
},
computed
:
{
isSymlink
()
{
return
this
.
fileMode
===
FILE_SYMLINK_MODE
;
},
spriteHref
()
{
const
iconName
=
this
.
submodule
?
'
folder-git
'
:
getIconForFile
(
this
.
fileName
)
||
'
file
'
;
return
`
${
gon
.
sprite_file_icons
}
#
${
iconName
}
`
;
},
folderIconName
()
{
...
...
@@ -75,13 +85,11 @@ export default {
</
script
>
<
template
>
<span>
<svg
v-if=
"!loading && !folder"
:class=
"[iconSizeClass, cssClasses]"
>
<use
v-bind=
"
{ 'xlink:href': spriteHref }" />
</svg
><gl-icon
v-if=
"!loading && folder"
:name=
"folderIconName"
:size=
"size"
class=
"folder-icon"
/><gl-loading-icon
v-if=
"loading"
:inline=
"true"
/>
<gl-loading-icon
v-if=
"loading"
:inline=
"true"
/>
<gl-icon
v-else-if=
"isSymlink"
name=
"symlink"
:size=
"size"
/>
<svg
v-else-if=
"!folder"
:class=
"[iconSizeClass, cssClasses]"
>
<use
v-bind=
"
{ 'xlink:href': spriteHref }" />
</svg>
<gl-icon
v-else
:name=
"folderIconName"
:size=
"size"
class=
"folder-icon"
/>
</span>
</
template
>
app/assets/javascripts/vue_shared/constants.js
View file @
000087ab
...
...
@@ -6,6 +6,8 @@ const INTERVALS = {
day
:
'
day
'
,
};
export
const
FILE_SYMLINK_MODE
=
'
120000
'
;
export
const
timeRanges
=
[
{
label
:
__
(
'
30 minutes
'
),
...
...
app/assets/stylesheets/components/design_management/design.scss
View file @
000087ab
...
...
@@ -10,7 +10,7 @@
}
.design-pin
{
transition
:
opacity
0
.5s
eas
e
;
transition
:
opacity
$gl-transition-duration-medium
$general-hover-transition-curv
e
;
&
.inactive
{
@include
gl-opacity-5
;
...
...
@@ -108,6 +108,7 @@
.design-note
{
padding
:
$gl-padding
;
list-style
:
none
;
transition
:
background
$gl-transition-duration-medium
$general-hover-transition-curve
;
a
{
color
:
inherit
;
...
...
@@ -150,7 +151,7 @@
}
.design-dropzone-card
{
transition
:
border
$g
eneral-hover
-transition-duration
$general-hover-transition-curve
;
transition
:
border
$g
l
-transition-duration
-medium
$general-hover-transition-curve
;
color
:
$gl-text-color
;
&
:focus
,
...
...
app/graphql/resolvers/issues_resolver.rb
View file @
000087ab
...
...
@@ -92,3 +92,5 @@ def non_stable_cursor_sort?(sort)
end
end
end
Resolvers
::
IssuesResolver
.
prepend_if_ee
(
'::EE::Resolvers::IssuesResolver'
)
app/graphql/types/issue_connection_type.rb
0 → 100644
View file @
000087ab
# frozen_string_literal: true
module
Types
# rubocop: disable Graphql/AuthorizeTypes
class
IssueConnectionType
<
GraphQL
::
Types
::
Relay
::
BaseConnection
field
:count
,
Integer
,
null:
false
,
description:
'Total count of collection'
def
count
object
.
items
.
size
end
end
end
app/graphql/types/issue_type.rb
View file @
000087ab
...
...
@@ -4,6 +4,8 @@ module Types
class
IssueType
<
BaseObject
graphql_name
'Issue'
connection_type_class
(
Types
::
IssueConnectionType
)
implements
(
Types
::
Notes
::
NoteableType
)
authorize
:read_issue
...
...
app/views/shared/issuable/_bulk_update_sidebar.html.haml
View file @
000087ab
-
type
=
local_assigns
.
fetch
(
:type
)
-
bulk_issue_health_status_flag
=
Feature
.
enabled?
(
:bulk_update_health_status
,
@project
&
.
group
)
&&
type
==
:issues
&&
@project
&
.
group
&
.
feature_available?
(
:issuable_health_status
)
-
bulk_issue_health_status_flag
=
Feature
.
enabled?
(
:bulk_update_health_status
,
@project
&
.
group
,
default_enabled:
true
)
&&
type
==
:issues
&&
@project
&
.
group
&
.
feature_available?
(
:issuable_health_status
)
-
epic_bulk_edit_flag
=
@project
&
.
group
&
.
feature_available?
(
:epics
)
&&
type
==
:issues
%aside
.issues-bulk-update.js-right-sidebar.right-sidebar
{
"aria-live"
=>
"polite"
,
data:
{
'signed-in'
:
current_user
.
present?
}
}
...
...
changelogs/unreleased/design-management-transitions.yml
0 → 100644
View file @
000087ab
---
title
:
Improve animations of design note selection in design management
merge_request
:
36927
author
:
type
:
changed
changelogs/unreleased/jdb-highlight-commented-rows.yml
0 → 100644
View file @
000087ab
---
title
:
Highlight commented rows
merge_request
:
34432
author
:
type
:
added
changelogs/unreleased/symlink-icon-ui.yml
0 → 100644
View file @
000087ab
---
title
:
Show symlink icon in repository browser
merge_request
:
36524
author
:
type
:
fixed
doc/.vale/gitlab/AlertBoxStyle.yml
View file @
000087ab
...
...
@@ -10,4 +10,7 @@ link: https://docs.gitlab.com/ee/development/documentation/styleguide.html#alert
level
:
error
scope
:
raw
raw
:
-
'
NOTE:
\*\*[^:]*\*\*'
-
'
((NOTE|TIP|CAUTION|DANGER):
\*\*[^:]*\*\*)|'
-
'
((NOTE:
\*\*NOTE:\*\*)|(TIP:
\*\*TIP:\*\*)|(CAUTION:
\*\*CAUTION:\*\*)|(DANGER:
\*\*DANGER:\*\*))|'
-
'
((NOTE:
\*\*note:\*\*)|(TIP:
\*\*tip:\*\*)|(CAUTION:
\*\*caution:\*\*)|(DANGER:
\*\*danger:\*\*))|'
-
'
((NOTE|TIP|CAUTION|DANGER):
\*\*.*\*\*.+)'
doc/administration/auth/jwt.md
View file @
000087ab
...
...
@@ -62,7 +62,8 @@ JWT will provide you with a secret key for you to use.
}
```
NOTE:
**Note:**
For more information on each configuration option refer to
NOTE:
**Note:**
For more information on each configuration option refer to
the
[
OmniAuth JWT usage documentation
](
https://github.com/mbleigh/omniauth-jwt#usage
)
.
1.
Change
`YOUR_APP_SECRET`
to the client secret and set
`auth_url`
to your redirect URL.
...
...
doc/administration/auth/ldap/google_secure_ldap.md