forgejo/web_src/js/features
Yarden Shoham 1e29bccddb
Fix elipsis button not working if the last commit loading is deferred (#29544)
Before this change, if we had more than 200 entries being deferred in
loading, the entire table would get replaced thus losing any event
listeners attached to the elements within the table, such as the elipsis
button and commit list with tippy.

With this change we remove the previous javascript code that replaced
the table and use htmx to replace the table.

htmx attributes added:
- `hx-indicator="tr.notready td.message span"`: attach the loading
spinner to the files whose last commit is still being loaded
- `hx-trigger="load"` trigger the request-replace behavior as soon as
possible
- `hx-swap="morph"`: use the idiomorph morphing algorithm, this is the
thing that makes it so the elipsis button event listener is kept during
the replacement, fixing the bug because we don't actually replace the
table, only modifying it
- `hx-post="{{.LastCommitLoaderURL}}"`: make a post request to this url
to get the table with all of the commit information

As part of this change I removed the handling of partial replacement in
the case we have less than 200 "not ready" files. The first reason is
that I couldn't make htmx replace only a subset of returned elements,
the second reason is that we have a cache implemented in the backend
already so the only cost added is that we query the cache a few times
(which is sure to be populated due to the initial request), and the last
reason is that since the last refactor of this functionality that
removed jQuery we don't properly send the "not ready" entries as the
backend expects `FormData` with `f[]` and we send a JSON with `f` so we
always query for all rows anyway.

# Before

![before](https://github.com/go-gitea/gitea/assets/20454870/482ebfec-66c5-40cc-9c1e-e3b3bfe1bbc1)

# After

![after](https://github.com/go-gitea/gitea/assets/20454870/454c517e-3a4e-4006-a49f-99cc56e0fd60)

---------

Signed-off-by: Yarden Shoham <git@yardenshoham.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 937e8b55149388840bbf6c4d7216495bc3dd2fe9)
2024-03-06 12:10:46 +08:00
..
admin Remove jQuery AJAX from the notice selection deletion button (#29381) 2024-02-26 22:30:27 +01:00
comp Remove jQuery AJAX from the markdown editor preview (#29384) 2024-02-26 22:30:27 +01:00
captcha.js Add new captcha: cloudflare turnstile (#22369) 2023-02-05 15:29:03 +08:00
citation.js Don't show unnecessary citation JS error on UI (#28433) 2023-12-12 11:31:11 +00:00
clipboard.js Refactor copy button event handler (#29379) 2024-02-26 22:30:27 +01:00
code-frequency.js Implement code frequency graph (#29191) 2024-02-26 22:30:26 +01:00
codeeditor.js Preserve BOM in web editor (#28935) 2024-01-27 18:02:51 +00:00
colorpicker.js JS refactors (#22227) 2022-12-24 00:03:11 +08:00
common-global.js Make PR form use toast to show error message (#29545) 2024-03-06 12:10:46 +08:00
common-issue-list.js Polyfill SubmitEvent for PaleMoon (#28441) 2023-12-15 07:26:36 +08:00
common-issue-list.test.js Use vitest globals (#27102) 2023-09-27 04:37:13 +00:00
common-organization.js Fix initCompLabelEdit not being called (#29198) 2024-02-17 23:24:31 +01:00
contextpopup.js Remove jQuery from issue reference context popup attach (#29216) 2024-02-17 23:24:31 +01:00
contributors.js Implement contributors graph (#27882) 2024-02-17 23:24:31 +01:00
copycontent.js Use fetch helpers instead of fetch (#27026) 2023-09-19 00:50:30 +00:00
dropzone.js JS refactors (#22227) 2022-12-24 00:03:11 +08:00
emoji.js Update JS and PY dependencies (#27501) 2023-10-08 00:16:20 +00:00
eventsource.sharedworker.js Fix the JS error "EventSource is not defined" caused by some non-standard browsers (#20584) 2022-08-03 22:58:27 +03:00
file-fold.js Update JS dependencies (#27922) 2023-11-06 21:14:32 +00:00
heatmap.js Remove fomantic loader module (#26670) 2023-08-25 16:03:14 +00:00
imagediff.js Replace ajax with fetch, improve image diff (#27267) 2023-10-11 12:34:21 +00:00
install.js Remove jQuery from the installation page (#29284) 2024-02-26 22:30:25 +01:00
notification.js [BUG] Use correct logout URL 2024-02-25 21:25:59 +01:00
org-team.js Update JS dependencies (#27922) 2023-11-06 21:14:32 +00:00
pull-view-file.js Fix counter display number incorrectly displayed on the page (#29448) 2024-03-06 12:10:44 +08:00
recent-commits.js Implement recent commits graph (#29210) 2024-02-26 22:30:26 +01:00
repo-branch.js Display warning when user try to rename default branch (#24512) 2023-05-04 22:54:38 +00:00
repo-code.js Remove jQuery from the code diff expansion buttons (#29385) 2024-02-26 22:30:27 +01:00
repo-code.test.js Use vitest globals (#27102) 2023-09-27 04:37:13 +00:00
repo-commit.js Fix elipsis button not working if the last commit loading is deferred (#29544) 2024-03-06 12:10:46 +08:00
repo-common.js Remove jQuery AJAX from the archive download links (#29380) 2024-02-26 22:30:27 +01:00
repo-diff-commit.js Use fetch helpers instead of fetch (#27026) 2023-09-19 00:50:30 +00:00
repo-diff-commitselect.js Add commits dropdown in PR files view and allow commit by commit review (#25528) 2023-07-28 21:18:12 +02:00
repo-diff-filetree.js JS refactors (#22227) 2022-12-24 00:03:11 +08:00
repo-diff.js Remove jQuery from repo wiki creation page (#29271) 2024-02-26 21:42:15 +01:00
repo-editor.js Update JS dependencies (#27922) 2023-11-06 21:14:32 +00:00
repo-findfile.js Remove jQuery from the "find file" page (#29456) 2024-03-06 12:10:44 +08:00
repo-findfile.test.js Use vitest globals (#27102) 2023-09-27 04:37:13 +00:00
repo-graph.js Remove jQuery AJAX from the repo commit graph (#29373) 2024-02-26 22:30:27 +01:00
repo-home.js Remove jQuery AJAX from the repo tag edit form (#29526) 2024-03-06 12:10:45 +08:00
repo-issue-content.js Improve issue history dialog and make poster can delete their own history (#27323) 2023-09-28 08:43:20 +00:00
repo-issue-list.js Add eslint-plugin-github and fix issues (#29201) 2024-02-17 23:24:31 +01:00
repo-issue-pr-form.js JS refactors (#22227) 2022-12-24 00:03:11 +08:00
repo-issue-pr-status.js Fix the overflow style for "Hide all checks" (#27932) 2023-11-07 18:53:35 +00:00
repo-issue.js Add attachment support for code review comments (#29220) 2024-02-27 18:35:43 +00:00
repo-legacy.js Remove jQuery .map() and enable eslint rules for it (#29272) 2024-02-26 21:42:15 +01:00
repo-migrate.js Remove jQuery from repo migrate page (#29219) 2024-02-19 22:58:32 +01:00
repo-migration.js Remove jQuery from the repo migration form (#29229) 2024-02-26 21:42:14 +01:00
repo-projects.js Fix duplicate project board when hitting enter key (#27746) 2023-10-23 12:40:33 +00:00
repo-release.js [FRONTEND] fix javascript linting errors 2024-02-25 23:43:58 +01:00
repo-settings.js Remove jQuery AJAX from repo collaborator mode dropdown (#29371) 2024-02-26 22:30:27 +01:00
repo-template.js Add status indicator on main home screen for each repo (#24638) 2023-05-13 21:59:01 +00:00
repo-unicode-escape.js Remove jQuery from the Unicode escape button (#29369) 2024-02-26 22:30:27 +01:00
repo-wiki.js Remove jQuery from repo wiki creation page (#29271) 2024-02-26 21:42:15 +01:00
sshkey-helper.js Remove jQuery from SSH key form parser (#29193) 2024-02-17 23:24:31 +01:00
stopwatch.js Remove jQuery from the stopwatch (#29351) 2024-02-26 22:30:26 +01:00
tablesort.js JS refactors (#22227) 2022-12-24 00:03:11 +08:00
tribute.js Avoiding accessing undefined mentionValues (#26461) 2023-08-12 08:36:23 +00:00
user-auth-webauthn.js Use fetch helpers instead of fetch (#27026) 2023-09-19 00:50:30 +00:00
user-auth.js Remove unneccesary initUserAuthLinkAccountView from "link account" page (#29217) 2024-02-19 22:58:32 +01:00
user-settings.js Remove jQuery from username change prompt and fix its detection (#29197) 2024-02-17 23:24:31 +01:00