File tree Expand file tree Collapse file tree 4 files changed +53
-14
lines changed Expand file tree Collapse file tree 4 files changed +53
-14
lines changed Original file line number Diff line number Diff line change @@ -2288,6 +2288,8 @@ release.edit_subheader = Releases organize project versions.
2288
2288
release.tag_name = Tag name
2289
2289
release.target = Target
2290
2290
release.tag_helper = Choose an existing tag or create a new tag.
2291
+ release.tag_helper_new = New tag. This tag will be created from the target.
2292
+ release.tag_helper_existing = Existing tag.
2291
2293
release.title = Title
2292
2294
release.content = Content
2293
2295
release.prerelease_desc = Mark as Pre-Release
Original file line number Diff line number Diff line change 20
20
<b>{{.tag_name}}</b><span class="at">@</span><strong>{{.tag_target}}</strong>
21
21
{{else}}
22
22
<input id="tag-name" name="tag_name" value="{{.tag_name}}" placeholder="{{.locale.Tr "repo.release.tag_name"}}" autofocus required maxlength="255">
23
- <span class="at">@</span>
24
- <div class="ui selection dropdown">
25
- <input type="hidden" name="tag_target" value="{{.tag_target}}"/>
26
- {{svg "octicon-git-branch"}}
27
- <div class="text">
28
- {{.locale.Tr "repo.release.target"}} :
29
- <strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong>
30
- </div>
31
- {{svg "octicon-triangle-down" 14 "dropdown icon"}}
32
- <div class="menu">
33
- {{range .Branches}}
34
- <div class="item" data-value="{{.}}">{{.}}</div>
35
- {{end}}
23
+ <input id="tag-name-editor" type="hidden" data-existing-tags={{Json .Tags}} data-tag-helper={{ .locale.Tr "repo.release.tag_helper" }} data-tag-helper-new={{ .locale.Tr "repo.release.tag_helper_new" }} data-tag-helper-existing={{ .locale.Tr "repo.release.tag_helper_existing" }} />
24
+ <span id="tag-target-selector">
25
+ <span class="at">@</span>
26
+ <div class="ui selection dropdown">
27
+ <input type="hidden" name="tag_target" value="{{.tag_target}}"/>
28
+ {{svg "octicon-git-branch"}}
29
+ <div class="text">
30
+ {{.locale.Tr "repo.release.target"}} :
31
+ <strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong>
32
+ </div>
33
+ {{svg "octicon-triangle-down" 14 "dropdown icon"}}
34
+ <div class="menu">
35
+ {{range .Branches}}
36
+ <div class="item" data-value="{{.}}">{{.}}</div>
37
+ {{end}}
38
+ </div>
36
39
</div>
40
+ </span>
41
+ <div>
42
+ <span id="tag-helper" class="help">{{.locale.Tr "repo.release.tag_helper"}}</span>
37
43
</div>
38
- <span class="help">{{.locale.Tr "repo.release.tag_helper"}}</span>
39
44
{{end}}
40
45
</div>
41
46
</div>
Original file line number Diff line number Diff line change
1
+ import $ from 'jquery' ;
2
+
3
+ export function initTagNameEditor ( ) {
4
+ const el = document . getElementById ( 'tag-name-editor' ) ;
5
+ if ( ! el ) return ;
6
+
7
+ const existingTags = JSON . parse ( el . getAttribute ( 'data-existing-tags' ) )
8
+ if ( ! Array . isArray ( existingTags ) ) return
9
+
10
+ const defaultTagHelperText = el . getAttribute ( 'data-tag-helper' )
11
+ const newTagHelperText = el . getAttribute ( 'data-tag-helper-new' )
12
+ const existingTagHelperText = el . getAttribute ( 'data-tag-helper-existing' )
13
+
14
+ $ ( '#tag-name' ) . on ( 'keyup' , function ( e ) {
15
+ const value = e . target . value
16
+ if ( existingTags . includes ( value ) ) {
17
+ // If the tag already exists, hide the target branch selector.
18
+ $ ( '#tag-target-selector' ) . hide ( )
19
+ $ ( '#tag-helper' ) . text ( existingTagHelperText )
20
+ } else {
21
+ $ ( '#tag-target-selector' ) . show ( )
22
+ if ( typeof value == 'string' && value . length > 0 ) {
23
+ $ ( '#tag-helper' ) . text ( newTagHelperText )
24
+ } else {
25
+ $ ( '#tag-helper' ) . text ( defaultTagHelperText )
26
+ }
27
+ }
28
+ } )
29
+ }
Original file line number Diff line number Diff line change @@ -90,6 +90,7 @@ import {initFormattingReplacements} from './features/formatting.js';
90
90
import { initCopyContent } from './features/copycontent.js' ;
91
91
import { initCaptcha } from './features/captcha.js' ;
92
92
import { initRepositoryActionView } from './components/RepoActionView.vue' ;
93
+ import { initTagNameEditor } from './features/tag-editor.js' ;
93
94
94
95
// Run time-critical code as soon as possible. This is safe to do because this
95
96
// script appears at the end of <body> and rendered HTML is accessible at that point.
@@ -198,4 +199,6 @@ $(document).ready(() => {
198
199
initUserAuthWebAuthnRegister ( ) ;
199
200
initUserSettings ( ) ;
200
201
initViewedCheckboxListenerFor ( ) ;
202
+
203
+ initTagNameEditor ( ) ;
201
204
} ) ;
You can’t perform that action at this time.
0 commit comments