BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
05aad534
Commit
05aad534
authored
May 16, 2017
by
Phil Hughes
Committed by
kushalpandya
May 19, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge branch 'winh-autocomplete-error' into 'master'
Replace broken autocomplete field for new tags with dropdown Closes #32127 See merge request !11290
parent
c5247a59
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
77 additions
and
54 deletions
+77
-54
dispatcher.js
app/assets/javascripts/dispatcher.js
+3
-0
new_branch_form.js
app/assets/javascripts/new_branch_form.js
+3
-44
ref_select_dropdown.js
app/assets/javascripts/ref_select_dropdown.js
+46
-0
new.html.haml
app/views/projects/tags/new.html.haml
+10
-9
master_creates_tag_spec.rb
spec/features/tags/master_creates_tag_spec.rb
+15
-1
No files found.
app/assets/javascripts/dispatcher.js
View file @
05aad534
...
...
@@ -51,6 +51,8 @@ import ShortcutsWiki from './shortcuts_wiki';
import
Pipelines
from
'./pipelines'
;
import
BlobViewer
from
'./blob/viewer/index'
;
import
AutoWidthDropdownSelect
from
'./issuable/auto_width_dropdown_select'
;
import
UsersSelect
from
'./users_select'
;
import
RefSelectDropdown
from
'./ref_select_dropdown'
;
const
ShortcutsBlob
=
require
(
'./shortcuts_blob'
);
...
...
@@ -204,6 +206,7 @@ const ShortcutsBlob = require('./shortcuts_blob');
case
'projects:tags:new'
:
new
ZenMode
();
new
gl
.
GLForm
(
$
(
'.tag-form'
));
new
RefSelectDropdown
(
$
(
'.js-branch-select'
),
window
.
gl
.
availableRefs
);
break
;
case
'projects:releases:edit'
:
new
ZenMode
();
...
...
app/assets/javascripts/new_branch_form.js
View file @
05aad534
/* eslint-disable func-names, space-before-function-paren, no-var, one-var, prefer-rest-params, max-len, vars-on-top, wrap-iife, consistent-return, comma-dangle, one-var-declaration-per-line, quotes, no-return-assign, prefer-arrow-callback, prefer-template, no-shadow, no-else-return, max-len, object-shorthand */
import
RefSelectDropdown
from
'~/ref_select_dropdown'
;
(
function
()
{
var
bind
=
function
(
fn
,
me
)
{
return
function
()
{
return
fn
.
apply
(
me
,
arguments
);
};
},
indexOf
=
[].
indexOf
||
function
(
item
)
{
for
(
var
i
=
0
,
l
=
this
.
length
;
i
<
l
;
i
+=
1
)
{
if
(
i
in
this
&&
this
[
i
]
===
item
)
return
i
;
}
return
-
1
;
};
...
...
@@ -9,7 +11,7 @@
this
.
branchNameError
=
form
.
find
(
'.js-branch-name-error'
);
this
.
name
=
form
.
find
(
'.js-branch-name'
);
this
.
ref
=
form
.
find
(
'#ref'
);
this
.
setupAvailableRefs
(
availableRefs
);
new
RefSelectDropdown
(
$
(
'.js-branch-select'
),
availableRefs
);
// eslint-disable-line no-new
this
.
setupRestrictions
();
this
.
addBinding
();
this
.
init
();
...
...
@@ -25,49 +27,6 @@
}
};
NewBranchForm
.
prototype
.
setupAvailableRefs
=
function
(
availableRefs
)
{
var
$branchSelect
=
$
(
'.js-branch-select'
);
$branchSelect
.
glDropdown
({
data
:
availableRefs
,
filterable
:
true
,
filterByText
:
true
,
remote
:
false
,
fieldName
:
$branchSelect
.
data
(
'field-name'
),
filterInput
:
'input[type="search"]'
,
selectable
:
true
,
isSelectable
:
function
(
branch
,
$el
)
{
return
!
$el
.
hasClass
(
'is-active'
);
},
text
:
function
(
branch
)
{
return
branch
;
},
id
:
function
(
branch
)
{
return
branch
;
},
toggleLabel
:
function
(
branch
)
{
if
(
branch
)
{
return
branch
;
}
}
});
const
$dropdownContainer
=
$branchSelect
.
closest
(
'.dropdown'
);
const
$fieldInput
=
$
(
`input[name="
${
$branchSelect
.
data
(
'field-name'
)}
"]`
,
$dropdownContainer
);
const
$filterInput
=
$
(
'input[type="search"]'
,
$dropdownContainer
);
$filterInput
.
on
(
'keyup'
,
(
e
)
=>
{
const
keyCode
=
e
.
keyCode
||
e
.
which
;
if
(
keyCode
!==
13
)
return
;
const
text
=
$filterInput
.
val
();
$fieldInput
.
val
(
text
);
$
(
'.dropdown-toggle-text'
,
$branchSelect
).
text
(
text
);
$dropdownContainer
.
removeClass
(
'open'
);
});
};
NewBranchForm
.
prototype
.
setupRestrictions
=
function
()
{
var
endsWith
,
invalid
,
single
,
startsWith
;
startsWith
=
{
...
...
app/assets/javascripts/ref_select_dropdown.js
0 → 100644
View file @
05aad534
class
RefSelectDropdown
{
constructor
(
$dropdownButton
,
availableRefs
)
{
$dropdownButton
.
glDropdown
({
data
:
availableRefs
,
filterable
:
true
,
filterByText
:
true
,
remote
:
false
,
fieldName
:
$dropdownButton
.
data
(
'field-name'
),
filterInput
:
'input[type="search"]'
,
selectable
:
true
,
isSelectable
(
branch
,
$el
)
{
return
!
$el
.
hasClass
(
'is-active'
);
},
text
(
branch
)
{
return
branch
;
},
id
(
branch
)
{
return
branch
;
},
toggleLabel
(
branch
)
{
return
branch
;
},
});
const
$dropdownContainer
=
$dropdownButton
.
closest
(
'.dropdown'
);
const
$fieldInput
=
$
(
`input[name="
${
$dropdownButton
.
data
(
'field-name'
)}
"]`
,
$dropdownContainer
);
const
$filterInput
=
$
(
'input[type="search"]'
,
$dropdownContainer
);
$filterInput
.
on
(
'keyup'
,
(
e
)
=>
{
const
keyCode
=
e
.
keyCode
||
e
.
which
;
if
(
keyCode
!==
13
)
return
;
const
ref
=
$filterInput
.
val
().
trim
();
if
(
ref
===
''
)
{
return
;
}
$fieldInput
.
val
(
ref
);
$
(
'.dropdown-toggle-text'
,
$dropdownButton
).
text
(
ref
);
$dropdownContainer
.
removeClass
(
'open'
);
});
}
}
export
default
RefSelectDropdown
;
app/views/projects/tags/new.html.haml
View file @
05aad534
-
page_title
"New Tag"
-
default_ref
=
params
[
:ref
]
||
@project
.
default_branch
-
if
@error
.alert.alert-danger
...
...
@@ -16,9 +17,13 @@
=
text_field_tag
:tag_name
,
params
[
:tag_name
],
required:
true
,
tabindex:
1
,
autofocus:
true
,
class:
'form-control'
.form-group
=
label_tag
:ref
,
'Create from'
,
class:
'control-label'
.col-sm-10
=
text_field_tag
:ref
,
params
[
:ref
]
||
@project
.
default_branch
,
required:
true
,
tabindex:
2
,
class:
'form-control'
.help-block
Branch name or commit SHA
.col-sm-10.create-from
.dropdown
=
hidden_field_tag
:ref
,
default_ref
=
button_tag
type:
'button'
,
title:
default_ref
,
class:
'dropdown-menu-toggle wide form-control js-branch-select'
,
required:
true
,
data:
{
toggle:
'dropdown'
,
selected:
default_ref
,
field_name:
'ref'
}
do
.text-left.dropdown-toggle-text
=
default_ref
=
render
'shared/ref_dropdown'
,
dropdown_class:
'wide'
.help-block
Existing branch name, tag, or commit SHA
.form-group
=
label_tag
:message
,
nil
,
class:
'control-label'
.col-sm-10
...
...
@@ -37,9 +42,5 @@
=
link_to
'Cancel'
,
namespace_project_tags_path
(
@project
.
namespace
,
@project
),
class:
'btn btn-cancel'
:javascript
var
availableRefs
=
#{
@project
.
repository
.
ref_names
.
to_json
}
;
$
(
"#ref"
).
autocomplete
({
source
:
availableRefs
,
minLength
:
1
});
window
.
gl
=
window
.
gl
||
{
};
window
.
gl
.
availableRefs
=
#{
@project
.
repository
.
ref_names
.
to_json
}
;
spec/features/tags/master_creates_tag_spec.rb
View file @
05aad534
...
...
@@ -51,10 +51,24 @@ feature 'Master creates tag', feature: true do
end
end
scenario
'opens dropdown for ref'
,
js:
true
do
click_link
'New tag'
ref_row
=
find
(
'.form-group:nth-of-type(2) .col-sm-10'
)
page
.
within
ref_row
do
ref_input
=
find
(
'[name="ref"]'
,
visible:
false
)
expect
(
ref_input
.
value
).
to
eq
'master'
expect
(
find
(
'.dropdown-toggle-text'
)).
to
have_content
'master'
find
(
'.js-branch-select'
).
trigger
(
'click'
)
expect
(
find
(
'.dropdown-menu'
)).
to
have_content
'empty-branch'
end
end
def
create_tag_in_form
(
tag
:,
ref
:,
message:
nil
,
desc:
nil
)
click_link
'New tag'
fill_in
'tag_name'
,
with:
tag
fi
ll_in
'ref'
,
with:
ref
fi
nd
(
'#ref'
,
visible:
false
).
set
(
ref
)
fill_in
'message'
,
with:
message
unless
message
.
nil?
fill_in
'release_description'
,
with:
desc
unless
desc
.
nil?
click_button
'Create tag'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment