forgejo-federation/web_src/js/features
Danko Aleksejevs 221ca0c404 Implement tab indentation and list continuation in the new editor (#3848, #3849) (#4072)
This overrides handling of Tab and Enter keys in the ComboMarkdownEditor, so that:

* Pressing Tab prepending 4 spaces to the line under cursor, or all the lines in the selection.
* Pressing Shift+Tab removes up to 4 spaces.
* Pressing Enter repeats any indentation and a "repeatable" prefix (list or blockquote) from the current line.

Since Tab "capture" can interfere with keyboard navigation, it's only done if there was any previous input in the textarea or if it was selected with a pointer. Additionally, presing Esc will make the textarea lose focus, resuming tab navigation. This seems adequate to me, but I might be wrong.

Had to use the "deprecated" execCommand method, since anything else I tried messes up the undo history. There's a fallback for when (if?) it's actually removed.

Only tested in desktop Firefox and Chrome so far.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4072
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Beowulf <beowulf@noreply.codeberg.org>
Co-authored-by: Danko Aleksejevs <danko@very.lv>
Co-committed-by: Danko Aleksejevs <danko@very.lv>
2024-06-15 13:40:31 +00:00
..
admin Fix admin notice view-detail (#30450) 2024-04-15 20:01:36 +02:00
comp Implement tab indentation and list continuation in the new editor (#3848, #3849) (#4072) 2024-06-15 13:40:31 +00: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 jQuery from the citation modal (except fomantic) (#30008) 2024-03-26 19:04:27 +01: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 Remove fomantic input module (#30194) 2024-04-07 15:40:31 +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 Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +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 Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01: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 Remove jQuery calls that have no effect on showElem and hideElem (#30110) 2024-03-30 07:17:30 +01: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 Remove jQuery class from the code range selection (#30173) 2024-04-07 15:40:31 +02:00
repo-code.test.js Use vitest globals (#27102) 2023-09-27 04:37:13 +00:00
repo-commit.js Fix elipsis button not working if the last commit loading is deferred (#29544) 2024-03-06 12:10:46 +08:00
repo-common.js Refactor and fix archive link bug (#30535) 2024-05-10 09:20:12 +02: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 JS refactors (#22227) 2022-12-24 00:03:11 +08:00
repo-diff.js Remove jQuery class from the diff view (#30176) 2024-04-07 15:40:31 +02:00
repo-editor.js Remove jQuery class from the commit button (#30178) 2024-04-07 15:40:31 +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 Remove jQuery from the commit graph (except Fomantic) (#30395) 2024-04-15 20:01:36 +02:00
repo-home.js Remove most jQuery function calls from the repository topic box (#30191) 2024-04-07 15:40:31 +02: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 Replace gt-word-break with tw-break-anywhere 2024-06-11 08:57:27 +05:00
repo-legacy.js Prevent simultaneous editing of comments and issues (#31053) 2024-06-02 16:26:54 +02:00
repo-migrate.js Remove jQuery from repo migrate page (#29219) 2024-02-19 22:58:32 +01:00
repo-migration.js Remove jQuery from the repo migration form (#29229) 2024-02-26 21:42:14 +01:00
repo-projects.js Fix various problems around projects board view (#30696) 2024-05-12 20:03:10 +02:00
repo-release.js [FRONTEND] fix javascript linting errors 2024-02-25 23:43:58 +01:00
repo-search.js Filter Repositories by type (#29231) 2024-03-06 12:10:46 +08:00
repo-settings.js Remove jQuery class from the repository branch settings (#30184) 2024-04-07 15:40:31 +02:00
repo-template.js Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01: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 Replace more gt- with tw-, update frontend docs (#29595) 2024-03-11 23:36:58 +07:00
user-settings.js only add name attribute to pronouns input in JS, to ensure fallback works 2024-04-03 15:16:40 -05:00