You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gitea/web_src/js
Yarden Shoham 937e8b5514
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>
11 months ago
..
components Make actions animation rotate counterclockwisely (#29378) 11 months ago
features Fix elipsis button not working if the last commit loading is deferred (#29544) 11 months ago
markup Remove jQuery from the comment task list (#29170) 12 months ago
modules Make PR form use toast to show error message (#29545) 11 months ago
render Use vitest globals (#27102) 1 year ago
standalone Add toasts to UI (#25449) 2 years ago
utils Remove jQuery from the Unicode escape button (#29369) 11 months ago
vendor Vendor `jquery.are-you-sure` with strict mode fixes (#26901) 1 year ago
webcomponents Fix URL calculation in clone input box (#29470) 11 months ago
bootstrap.js Fix/Improve `processWindowErrorEvent` (#29407) 11 months ago
bootstrap.test.js Avoid duplicate JS error messages on UI (#28873) 1 year ago
htmx.js Auto-update the system status in admin dashboard (#29163) 12 months ago
index.js Fix elipsis button not working if the last commit loading is deferred (#29544) 11 months ago
jquery.js Upgrade jQuery to 3.5.0, remove jQuery-Migrate, fix deprecations (#11055) 5 years ago
svg.js Artifact deletion in actions ui (#27172) 12 months ago
svg.test.js Use vitest globals (#27102) 1 year ago
utils.js enforce maxlength in frontend (#29389) 11 months ago
utils.test.js Use vitest globals (#27102) 1 year ago
vitest.setup.js Move vitest setup file to root (#29097) 12 months ago