aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/modules
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-03-17 11:08:05 +0800
committerGitHub <noreply@github.com>2023-03-17 11:08:05 +0800
commit345aa0975676031b97a99cc7a449d5fd680dba77 (patch)
treea4a03455124f9bc49da9cd75eabfc168db7e77c4 /web_src/js/modules
parente200c68bad4ea7fb8d6a76e04004857a0ade9fb3 (diff)
downloadgitea-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.js3
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});
},
});
}