mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-07-19 01:29:40 +02:00
feat: reduce amount of morphing for milestone (#8350)
- Avoid morphing too much HTML, only morph the currently selected milestone text. - Changes that the milestone dropdown is not morphed, which contains event listeners and newer versions of the morphing library seem does not preserve event listeners in most cases. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8350 Reviewed-by: Otto <otto@codeberg.org> Co-authored-by: Gusted <postmaster@gusted.xyz> Co-committed-by: Gusted <postmaster@gusted.xyz>
This commit is contained in:
parent
5158493ba6
commit
e186b5c039
5 changed files with 15 additions and 18 deletions
|
@ -2401,10 +2401,6 @@ func UpdateIssueMilestone(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.FormBool("htmx") {
|
if ctx.FormBool("htmx") {
|
||||||
renderMilestones(ctx)
|
|
||||||
if ctx.Written() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
prepareHiddenCommentType(ctx)
|
prepareHiddenCommentType(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div id="insert-timeline" hx-swap-oob="beforebegin">
|
<div id="insert-timeline" hx-swap-oob="beforebegin">
|
||||||
{{template "repo/issue/view_content/comments" .}}
|
{{template "repo/issue/view_content/comments" .}}
|
||||||
</div>
|
</div>
|
||||||
{{template "repo/issue/view_content/sidebar/milestones" .}}
|
{{template "repo/issue/milestone/selected" .}}
|
||||||
|
|
11
templates/repo/issue/milestone/selected.tmpl
Normal file
11
templates/repo/issue/milestone/selected.tmpl
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<div id="selected-milestone" class="ui select-milestone list">
|
||||||
|
<span class="no-select item {{if .Issue.Milestone}}tw-hidden{{end}}">{{ctx.Locale.Tr "repo.issues.new.no_milestone"}}</span>
|
||||||
|
<div class="selected">
|
||||||
|
{{if .Issue.Milestone}}
|
||||||
|
<a class="item muted sidebar-item-link" href="{{.RepoLink}}/milestone/{{.Issue.Milestone.ID}}">
|
||||||
|
{{svg "octicon-milestone" 18 "tw-mr-2"}}
|
||||||
|
{{.Issue.Milestone.Name}}
|
||||||
|
</a>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -1,4 +1,4 @@
|
||||||
<div id="milestone-section" hx-swap="morph" hx-target="this" hx-indicator="this">
|
<div id="milestone-section" hx-swap="morph" hx-target="#selected-milestone" hx-indicator="this">
|
||||||
<div class="ui {{if or (not .HasIssuesOrPullsWritePermission) .Repository.IsArchived}}disabled{{end}} floating jump select-milestone dropdown">
|
<div class="ui {{if or (not .HasIssuesOrPullsWritePermission) .Repository.IsArchived}}disabled{{end}} floating jump select-milestone dropdown">
|
||||||
<a class="text muted flex-text-block">
|
<a class="text muted flex-text-block">
|
||||||
<strong>{{ctx.Locale.Tr "repo.issues.new.milestone"}}</strong>
|
<strong>{{ctx.Locale.Tr "repo.issues.new.milestone"}}</strong>
|
||||||
|
@ -10,15 +10,5 @@
|
||||||
{{template "repo/issue/milestone/select_menu" .}}
|
{{template "repo/issue/milestone/select_menu" .}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui select-milestone list">
|
{{template "repo/issue/milestone/selected" .}}
|
||||||
<span class="no-select item {{if .Issue.Milestone}}tw-hidden{{end}}">{{ctx.Locale.Tr "repo.issues.new.no_milestone"}}</span>
|
|
||||||
<div class="selected">
|
|
||||||
{{if .Issue.Milestone}}
|
|
||||||
<a class="item muted sidebar-item-link" href="{{.RepoLink}}/milestone/{{.Issue.Milestone.ID}}">
|
|
||||||
{{svg "octicon-milestone" 18 "tw-mr-2"}}
|
|
||||||
{{.Issue.Milestone.Name}}
|
|
||||||
</a>
|
|
||||||
{{end}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -221,7 +221,7 @@ test('Issue: Milestone', async ({page}, workerInfo) => {
|
||||||
const response = await page.goto('/user2/repo1/issues/1');
|
const response = await page.goto('/user2/repo1/issues/1');
|
||||||
expect(response?.status()).toBe(200);
|
expect(response?.status()).toBe(200);
|
||||||
|
|
||||||
const selectedMilestone = page.locator('.issue-content-right .select-milestone.list');
|
const selectedMilestone = page.locator('.issue-content-right #selected-milestone');
|
||||||
const milestoneDropdown = page.locator('.issue-content-right .select-milestone.dropdown');
|
const milestoneDropdown = page.locator('.issue-content-right .select-milestone.dropdown');
|
||||||
await expect(selectedMilestone).toContainText('No milestone');
|
await expect(selectedMilestone).toContainText('No milestone');
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue