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.
forgejo/web_src/js/features
wxiaoguang d4f35bd681
Use a general approch to improve a11y for all checkboxes and dropdowns. (#23542)
This PR follows #22599 and #23450

The major improvements:

1. The `aria-*.js` are totally transparent now, no need to call
`attachDropdownAria` explicitly anymore.
* It hooks the `$.fn.checkbox` and `$.fn.dropdown`, then our patch
works.
* It makes all dynamically generated checkbox/dropdown work with a11y
without any change
* eg: the `conversation.find('.dropdown').dropdown();` in `repo-diff.js`
2. Since it's totally transparent now, it could be easier to modify or
remove in the future.
3. It handles all selection labels as well (by onLabelCreate), so it
supports "multiple selection dropdown" now.
* It partially completes one of my TODOs: `TODO: multiple selection is
not supported yet.`
4. The code structure is clearer, code blocks are splitted into
different functions.
* The old `attachOneDropdownAria` was splitted into separate functions.
* It makes it easier to add more fine tunes in the future, and co-work
with contributors.
6. The code logic is similar as before, only two new parts: 
    1. the `ariaCheckboxFn` and `ariaDropdownFn` functions
    2. the `onLabelCreate` and `updateSelectionLabel` functions

In `aria-dropdown.js` I had to mix jQuery and Vanilla JS somewhat, I
think the code is still understandable, otherwise the code would be much
more complex to read.

Thanks to fsologureng for the idea about "improving the 'delete icon'
with aria attributes".

If there is anything unclear or incorrect, feel free to ask and discuss,
or propose new PRs for it.
1 year ago
..
admin Convert `<div class="button">` to `<button class="button">` (#23337) 1 year ago
comp Scoped labels: set aria-disabled on muted Exclusive option for a11y (#23306) 1 year ago
captcha.js Add new captcha: cloudflare turnstile (#22369) 2 years ago
citation.js Fix switched citation format (#23250) 1 year ago
clipboard.js Use link in UI which returned a relative url but not html_url which contains an absolute url (#21986) 2 years ago
codeeditor.js Quick fixes monaco-editor error: "vs.editor.nullLanguage" (#21734) 2 years ago
colorpicker.js JS refactors (#22227) 2 years ago
common-global.js Use a general approch to improve a11y for all checkboxes and dropdowns. (#23542) 1 year ago
common-issue.js Convert `<div class="button">` to `<button class="button">` (#23337) 1 year ago
common-organization.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
contextpopup.js Change interactiveBorder to fix popup preview (#23169) 1 year ago
copycontent.js JS refactors (#22227) 2 years ago
dropzone.js JS refactors (#22227) 2 years ago
emoji.js JS refactors (#22227) 2 years ago
eventsource.sharedworker.js Fix the JS error "EventSource is not defined" caused by some non-standard browsers (#20584) 2 years ago
file-fold.js JS refactors (#22227) 2 years ago
formatting.js JS refactors (#22227) 2 years ago
heatmap.js JS refactors (#22227) 2 years ago
imagediff.js Fix various ImageDiff/SVG bugs (#23312) 1 year ago
install.js Fix various bugs for "install" page (#23194) 1 year ago
notification.js Move helpers to be prefixed with `gt-` (#22879) 2 years ago
org-team.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
pull-view-file.js Replace unstyled meter with progress (#19968) 2 years ago
repo-branch.js Add apply-patch, basic revert and cherry-pick functionality (#17902) 3 years ago
repo-code.js Fix links for the menus in the view file page (#22795) 2 years ago
repo-code.test.js Ignore line anchor links with leading zeroes (#21728) 2 years ago
repo-commit.js Fix hidden commit status on multiple checks (#22889) 1 year ago
repo-common.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-diff-filetree.js JS refactors (#22227) 2 years ago
repo-diff.js Make Ctrl+Enter submit a pending comment (starting review) instead of submitting a single comment (#23245) 1 year ago
repo-editor.js Support paste treepath when creating a new file or updating the file name (#23209) 1 year ago
repo-findfile.js Refactor branch/tag selector to Vue SFC (#23421) 1 year ago
repo-findfile.test.js Refactor branch/tag selector to Vue SFC (#23421) 1 year ago
repo-graph.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-home.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-issue-content.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-issue-pr-form.js JS refactors (#22227) 2 years ago
repo-issue.js Fix JS error on compare page (#23551) 1 year ago
repo-legacy.js Fix aria.js bugs: incorrect role element problem, mobile focus problem, tippy problem (#23450) 1 year ago
repo-migrate.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-migration.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-projects.js Sync the class change of Edit Column Button to JS code (#23400) 1 year ago
repo-release.js Hide target selector if tag exists when creating new release (#23171) 1 year ago
repo-settings.js Remove customized (unmaintained) dropdown, improve aria a11y for dropdown (#19861) 2 years ago
repo-template.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-unicode-escape.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
repo-wiki.js Enable spellcheck for EasyMDE, use contenteditable mode (#19776) 2 years ago
serviceworker.js JS refactors (#22227) 2 years ago
sshkey-helper.js Use explicit jQuery import, remove unused eslint globals (#18435) 3 years ago
stopwatch.js Move helpers to be prefixed with `gt-` (#22879) 2 years ago
tablesort.js JS refactors (#22227) 2 years ago
tribute.js JS refactors (#22227) 2 years ago
user-auth-webauthn.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
user-auth.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago
user-settings.js Refactor hiding-methods, remove jQuery show/hide, remove `.hide` class, remove inline style=display:none (#22950) 1 year ago