diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-03-17 11:08:05 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-17 11:08:05 +0800 |
commit | 345aa0975676031b97a99cc7a449d5fd680dba77 (patch) | |
tree | a4a03455124f9bc49da9cd75eabfc168db7e77c4 /web_src/js/modules | |
parent | e200c68bad4ea7fb8d6a76e04004857a0ade9fb3 (diff) | |
download | gitea-345aa0975676031b97a99cc7a449d5fd680dba77.tar.gz gitea-345aa0975676031b97a99cc7a449d5fd680dba77.zip |
Fix aria.js bugs: incorrect role element problem, mobile focus problem, tippy problem (#23450)
This PR is extracted from #23346 to address some unclear (I don't
understand) code-belonging concerns.
This PR needs to be backported, otherwise the `aria.js` is too buggy in
some cases. Since there would be two minor conflicts, I will do the
backport manually.
Before: the `aria.js` is still buggy in some cases.
After: tested with AppleVoice, Android TalkBack
* Fix incorrect dropdown init code
* Fix incorrect role element (the menu role should be on the `$menu`
element, but not on the `$focusable`)
* Fix the focus-show-click-hide problem on mobile. Now the language menu
works as expected
* Fix incorrect dropdown template function setting
* Clarify the logic in aria.js
* Hide item's tippy after menu gets hidden
* Fix incorrect tippy `setProps` after `destroy`
* Fix UI lag problem when page gets redirected during menu hiding
animation with screen reader
* Improve comments
* Implement the layout proposed by #19861
<details>
https://github.com/go-gitea/gitea/blob/d74a7efb60f94a4b8e6e5f65332f94f1be31b761/web_src/js/features/aria.md?plain=1#L38-L47
</details>
Diffstat (limited to 'web_src/js/modules')
-rw-r--r-- | web_src/js/modules/tippy.js | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/web_src/js/modules/tippy.js b/web_src/js/modules/tippy.js index 720f8ba53b..4872608ecd 100644 --- a/web_src/js/modules/tippy.js +++ b/web_src/js/modules/tippy.js @@ -53,10 +53,11 @@ export function showTemporaryTooltip(target, content) { onHidden: (tippy) => { if (oldContent) { tippy.setContent(oldContent); + tippy.setProps({onHidden: undefined}); } else { tippy.destroy(); + // after destroy, the `_tippy` is detached, it can't do "setProps (etc...)" anymore } - tippy.setProps({onHidden: undefined}); }, }); } |