Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hide target selector if tag exists when creating new release #23171

Merged
merged 10 commits into from
Mar 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions options/locale/locale_en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2290,6 +2290,8 @@ release.edit_subheader = Releases organize project versions.
release.tag_name = Tag name
release.target = Target
release.tag_helper = Choose an existing tag or create a new tag.
release.tag_helper_new = New tag. This tag will be created from the target.
release.tag_helper_existing = Existing tag.
release.title = Title
release.content = Content
release.prerelease_desc = Mark as Pre-Release
Expand Down
33 changes: 19 additions & 14 deletions templates/repo/release/new.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,27 @@
<b>{{.tag_name}}</b><span class="at">@</span><strong>{{.tag_target}}</strong>
{{else}}
<input id="tag-name" name="tag_name" value="{{.tag_name}}" placeholder="{{.locale.Tr "repo.release.tag_name"}}" autofocus required maxlength="255">
<span class="at">@</span>
<div class="ui selection dropdown">
<input type="hidden" name="tag_target" value="{{.tag_target}}"/>
{{svg "octicon-git-branch"}}
<div class="text">
{{.locale.Tr "repo.release.target"}} :
<strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong>
</div>
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
<div class="menu">
{{range .Branches}}
<div class="item" data-value="{{.}}">{{.}}</div>
{{end}}
<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"}} />
<div id="tag-target-selector" class="gt-dib">
<span class="at">@</span>
<div class="ui selection dropdown">
<input type="hidden" name="tag_target" value="{{.tag_target}}"/>
{{svg "octicon-git-branch"}}
<div class="text">
{{.locale.Tr "repo.release.target"}} :
<strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong>
</div>
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
<div class="menu">
{{range .Branches}}
<div class="item" data-value="{{.}}">{{.}}</div>
{{end}}
</div>
</div>
</div>
<span class="help">{{.locale.Tr "repo.release.tag_helper"}}</span>
<div>
<span id="tag-helper" class="help gt-mt-2">{{.locale.Tr "repo.release.tag_helper"}}</span>
</div>
{{end}}
</div>
</div>
Expand Down
39 changes: 37 additions & 2 deletions web_src/js/features/repo-release.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {attachTribute} from './tribute.js';
import {initCompMarkupContentPreviewTab} from './comp/MarkupContentPreview.js';
import {initEasyMDEImagePaste} from './comp/ImagePaste.js';
import {createCommentEasyMDE} from './comp/EasyMDE.js';
import {hideElem} from '../utils/dom.js';
import {hideElem, showElem} from '../utils/dom.js';

export function initRepoRelease() {
$(document).on('click', '.remove-rel-attach', function() {
Expand All @@ -14,8 +14,43 @@ export function initRepoRelease() {
});
}

export function initRepoReleaseNew() {
const $repoReleaseNew = $('.repository.new.release');
if (!$repoReleaseNew.length) return;

export function initRepoReleaseEditor() {
initTagNameEditor();
initRepoReleaseEditor();
}

function initTagNameEditor() {
const el = document.getElementById('tag-name-editor');
if (!el) return;

const existingTags = JSON.parse(el.getAttribute('data-existing-tags'));
if (!Array.isArray(existingTags)) return;

const defaultTagHelperText = el.getAttribute('data-tag-helper');
const newTagHelperText = el.getAttribute('data-tag-helper-new');
const existingTagHelperText = el.getAttribute('data-tag-helper-existing');

document.getElementById('tag-name').addEventListener('keyup', (e) => {
const value = e.target.value;
if (existingTags.includes(value)) {
// If the tag already exists, hide the target branch selector.
hideElem('#tag-target-selector');
document.getElementById('tag-helper').innerText = existingTagHelperText;
} else {
showElem('#tag-target-selector');
if (value) {
document.getElementById('tag-helper').innerText = newTagHelperText;
} else {
document.getElementById('tag-helper').innerText = defaultTagHelperText;
}
}
});
}

function initRepoReleaseEditor() {
const $editor = $('.repository.new.release .content-editor');
if ($editor.length === 0) {
return;
Expand Down
4 changes: 2 additions & 2 deletions web_src/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ import {
import {initViewedCheckboxListenerFor} from './features/pull-view-file.js';
import {initOrgTeamSearchRepoBox, initOrgTeamSettings} from './features/org-team.js';
import {initUserAuthWebAuthn, initUserAuthWebAuthnRegister} from './features/user-auth-webauthn.js';
import {initRepoRelease, initRepoReleaseEditor} from './features/repo-release.js';
import {initRepoRelease, initRepoReleaseNew} from './features/repo-release.js';
import {initRepoEditor} from './features/repo-editor.js';
import {initCompSearchUserBox} from './features/comp/SearchUserBox.js';
import {initInstall} from './features/install.js';
Expand Down Expand Up @@ -179,7 +179,7 @@ $(document).ready(() => {
initRepoPullRequestAllowMaintainerEdit();
initRepoPullRequestReview();
initRepoRelease();
initRepoReleaseEditor();
initRepoReleaseNew();
initRepoSettingGitHook();
initRepoSettingSearchTeamBox();
initRepoSettingsCollaboration();
Expand Down