forgejo/web_src/js/features
Danko Aleksejevs d483dc674a
Some checks are pending
/ release (push) Waiting to run
testing / test-e2e (push) Blocked by required conditions
testing / backend-checks (push) Waiting to run
testing / frontend-checks (push) Waiting to run
testing / test-unit (push) Blocked by required conditions
testing / test-remote-cacher (redis) (push) Blocked by required conditions
testing / test-remote-cacher (valkey) (push) Blocked by required conditions
testing / test-remote-cacher (garnet) (push) Blocked by required conditions
testing / test-remote-cacher (redict) (push) Blocked by required conditions
testing / test-mysql (push) Blocked by required conditions
testing / test-pgsql (push) Blocked by required conditions
testing / test-sqlite (push) Blocked by required conditions
testing / security-check (push) Blocked by required conditions
Reimplement editor Tab handling with accessibility safeguards (#6813)
The primary goal is to balance having the editor work as expected by developers (with Tab key affecting indentation) while also not impeding keyboard navigation.

* Tab indents, Shift+Tab unindents, but only when that indent would be valid. E.g. moving existing list items down or up one level.
* Indenting a selection always works.
* When an "invalid" indent is attempted, nothing happens and a toast is shown with a hint to press again to leave the editor.
* Attempting the same action again allows the textarea lose focus by allowing the browser's default key handler.
* Pressing Esc also loses focus immediately.
* No tab handling happens until the text editor has been interacted with (other than just having been focused).
* Changing indentation in block quotes adds or removes quote levels instead.

Screenshot of the toast being shown:
a6287d29-4ce0-4977-aae8-ef1aff2ac89f

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6813
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Danko Aleksejevs <danko@very.lv>
Co-committed-by: Danko Aleksejevs <danko@very.lv>
2025-05-25 19:17:03 +02:00
..
admin fix(ui): only run auth_name code on new and edit page (#7470) 2025-04-06 12:25:29 +00:00
comp Reimplement editor Tab handling with accessibility safeguards (#6813) 2025-05-25 19:17:03 +02:00
autofocus-end.js When the title in the issue has a value, set the text cursor at the end of the text. (#30090) 2024-03-30 07:17:31 +01:00
captcha.js Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01:00
citation.js Remove APA as cite format 2024-07-20 15:48:57 +02:00
clipboard.js Fix Citation modal responsiveness and clipboard copy (#29799) 2024-03-20 08:46:29 +01:00
code-frequency.js Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01:00
codeeditor.js Remove obsolete monaco workaround (#30893) 2024-05-12 20:03:10 +02:00
colorpicker.js Replace coloris with vanilla-colorful (#30201) 2024-04-07 15:40:31 +02:00
common-global.js chore: enable no-jquery/no-trigger 2025-04-01 04:43:06 +02:00
common-issue-list.js Remove jQuery from the issue "go to" button (#30028) 2024-03-26 19:04:27 +01: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 Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01:00
contributors.js Add "n commits" link to contributors in contributors graph page (#32799) 2024-12-15 13:21:02 +01:00
copycontent.js Remove fomantic input module (#30194) 2024-04-07 15:40:31 +02: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 chore: add new lint rules 2024-10-23 08:10:18 +02:00
file-fold.js Update JS dependencies (#27922) 2023-11-06 21:14:32 +00:00
heatmap.js Fix heatmap localization 2024-03-20 08:20:08 +01:00
imagediff.js Refactor imagediff and fix regression bug (#30694) 2024-04-28 15:39:01 +02:00
install.js [CHORE] Remove Microsoft SQL Server Support 2024-04-05 23:37:36 +02:00
notification.js Remove jQuery class from the notification count (#30172) 2024-04-07 15:40:31 +02:00
org-team.js chore: enable no-jquery/no-each-util 2025-04-01 03:59:12 +02: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 Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01:00
repo-branch.js Remove jQuery from the create/rename branch modals (except Fomantic) (#30109) 2024-03-30 07:17:31 +01:00
repo-code.js chore: enable no-jquery/no-trigger 2025-04-01 04:43:06 +02:00
repo-code.test.js Use vitest globals (#27102) 2023-09-27 04:37:13 +00:00
repo-commit.js ui: improve git notes 2024-11-19 10:27:57 +05:00
repo-common.js fix(ui): make tag dropdown clickable again (#7558) 2025-04-16 12:28:39 +00:00
repo-diff-commit.js Migrate margin and padding helpers to tailwind (#30043) 2024-03-30 07:17:29 +01: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 Remove DiffFileList component 2025-01-19 18:56:18 +01:00
repo-diff.js Remove DiffFileList component 2025-01-19 18:56:18 +01:00
repo-editor.js chore: enable no-jquery/no-trigger 2025-04-01 04:43:06 +02:00
repo-findfile.js Refactor all .length === 0 patterns in JS (#30045) 2024-03-30 07:17:30 +01:00
repo-findfile.test.js Use vitest globals (#27102) 2023-09-27 04:37:13 +00:00
repo-graph.js fix branch selector in commit graph 2024-07-07 20:26:30 +02:00
repo-home.js Add null check for responseData.invalidTopics (#32212) 2024-10-13 08:06:49 +03:00
repo-issue-content.js Remove jQuery class from the comment edit history (#30186) 2024-04-07 15:40:31 +02:00
repo-issue-list.js Make a distinction between active and selected in the issue author dropdown (#30207) 2024-04-07 15:40:31 +02: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 chore: enable no-jquery/no-trigger 2025-04-01 04:43:06 +02:00
repo-issue.test.js feat(ui): add more emoji and code block rendering in issues 2024-09-24 14:20:33 +02:00
repo-legacy.js fix: quote reply in Chromium (#7883) 2025-05-16 18:43:32 +00:00
repo-migrate.js fix(ui): prevent exceptions on other users' repo migration pages 2024-08-21 19:57:08 +00:00
repo-migration.js fix: ignore trailing slash for autogenerated name (#7307) 2025-03-29 19:35:01 +00:00
repo-milestone.js feat: use combo markdown editor for milestone description 2024-10-22 19:58:44 +02:00
repo-projects.js Fix various problems around projects board view (#30696) 2024-05-12 20:03:10 +02:00
repo-release.js fix(ui): release: set default release title to tag name (#6883) 2025-02-23 08:30:39 +00:00
repo-search.js Filter Repositories by type (#29231) 2024-03-06 12:10:46 +08:00
repo-settings.js chore: enable no-jquery/no-each-util 2025-04-01 03:59:12 +02:00
repo-template.js chore: enable no-jquery/no-each-util 2025-04-01 03:59:12 +02:00
repo-unicode-escape.js Render inline file permalinks 2024-03-15 14:00:34 +01:00
repo-wiki.js Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +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 Migrate margin and padding helpers to tailwind (#30043) 2024-03-30 07:17:29 +01:00
user-auth-webauthn.js Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01:00
user-auth.js feat: improve incorrect ROOT_URL warning (#7103) 2025-03-03 18:05:01 +00:00