Commit graph

2166 commits

Author SHA1 Message Date
Stephane Zermatten c2bd2f306a feat: Add support for keyboard shortcuts (#870)
* Add support for keyboard shortcuts.

This change introduces a Shortcut component for defining global
keyboard shortcuts from whichever component makes more sense.

This change also adds an initial set of navigation shortcuts:
- Backspace to leave a modal dialog or to go back
- g t to go to the federated timeline
- g f to go to the favorite page
- g h to go to the home page
- g n to go to the notification page
- g c to go to the community page
- s to go to the search page

These shortcuts are loaded asynchronously from _layout.html

In modal dialogs, shortcuts are also modal, to avoid strange or
overly complex behavior. This is implemented by grouping
shortcuts into scopes, and activating a separate 'modal' scope
when entering a modal dialog, so a separate set of shortcuts can
be enabled in modal dialog. Modal dialogs can be exited by
pressing 'Backspace'.

* Navigate up/down lists using keyboard shortcuts.

This change introduces keyboard shortcuts for navigating in lists and
virtual lists. j or arrow up selects the next element, k or arrow down,
the previous element. Selecting an element scrolls the list up and down,
as necessary.

This change also allows directing keyboard shortcuts to the active
element and defines the following shortcuts, for the active status:
- f to favorite or unfavorite it
- b to boost or unboost it
- r to reply to it
- o to open its thread
- x to toggle the display of a CW
- y to toggle the display of sensitive medias

This works by defining a keyboard shortcut scope for each list element.
A new component, ScrollListShortcuts, keeps track of the active element,
based on list or virtual list elements and redirects shortcuts to the
active element's scope. ScrollListShortcuts keeps the active element in
the current realm of the store, so the active element is restored when
going back to the list.

* Typing h or ? displays the list of available keyboard shortcuts.

This change introduces a new modal dialog that documents the list of
available shortcuts.
2019-01-13 10:03:29 -08:00
Nolan Lawson 981af04c6d
chore: update now to latest (#885) 2019-01-12 13:13:59 -08:00
Nolan Lawson 610f5be1e9
chore: update testcafe to latest (#884) 2019-01-12 13:13:53 -08:00
Nolan Lawson f2d1054af6
chore: update webpack to latest (#883) 2019-01-12 13:13:47 -08:00
Nolan Lawson 39e77eeb4a
chore: update terser-webpack-plugin to latest (#882) 2019-01-12 13:13:39 -08:00
Nolan Lawson adf04aa1ad
chore: update svelte-loader to latest (#881) 2019-01-12 13:13:32 -08:00
Nolan Lawson 55879362a4
chore: update rollup-plugin-terser to latest (#880) 2019-01-12 13:13:24 -08:00
Nolan Lawson a39c57af8d
chore: update rollup to latest (#879) 2019-01-12 13:13:18 -08:00
Nolan Lawson af827d1338
chore: update inferno-compat to latest (#878) 2019-01-12 13:13:12 -08:00
Nolan Lawson dfd53c056d
chore: update emoji-regex to latest (#877) 2019-01-12 13:13:05 -08:00
Nolan Lawson 14faed41e5
chore: update css-loader to latest (#876) 2019-01-12 13:12:56 -08:00
Nolan Lawson ec01534e00
chore: update browserslist to latest (#875) 2019-01-12 13:11:56 -08:00
Nolan Lawson a5a6c49269
chore: improve steps in export process (#871) 2019-01-12 10:17:37 -08:00
greenkeeper[bot] b90bcbcfef chore: Update now to the latest version 🚀 (#868)
* chore(package): update now to version 13.0.0

* chore(package): update lockfile package-lock.json
2019-01-12 09:50:43 -08:00
Nathan Minchow d7aaec16d3 feat: Add labels to theme groups (#867) 2019-01-12 09:50:17 -08:00
greenkeeper[bot] 5bb48e89e2 chore: Update rollup-plugin-terser to the latest version 🚀 (#864)
* fix(package): update rollup-plugin-terser to version 4.0.0

* chore(package): update lockfile package-lock.json
2019-01-12 09:49:44 -08:00
Nolan Lawson 8b26fe0eab
chore: use latest npm in travis (#863) 2019-01-12 09:49:29 -08:00
greenkeeper[bot] 26d0b827bc Update rollup to the latest version 🚀 (#860)
* fix(package): update rollup to version 1.0.0

* chore(package): update lockfile package-lock.json

* fix inline script script
2019-01-01 10:42:50 -08:00
Nolan Lawson e5ef4b9bb1
fix: add better browser notification badges (#857)
* fix: add better browser notification badges

* fix test

* fix tests for real

* actually fix tests
2018-12-30 14:51:03 -08:00
Nolan Lawson 795d6bce35
docs: add some more contributing instructions (#861)
[skip ci]
2018-12-30 14:50:51 -08:00
Nolan Lawson 52d1ab5703
Revert "perf: use webpack splitChunks defaults (#855)" (#856)
This reverts commit 49b85623d5.
2018-12-23 11:25:35 -08:00
Nolan Lawson 49b85623d5
perf: use webpack splitChunks defaults (#855) 2018-12-23 10:52:47 -08:00
Nolan Lawson e666eb5955
perf: use lodash-lite for some functions (#853) 2018-12-23 10:10:16 -08:00
Nolan Lawson cf94e7d61e
fix: fix unnecessary request for theme-undefined.css (#852) 2018-12-22 15:37:56 -08:00
Nolan Lawson 4ab9687200
perf: load Toast asynchronously (#851) 2018-12-22 15:37:51 -08:00
Nolan Lawson 59f9be448d 0.16.0 2018-12-19 09:09:33 -08:00
Nolan Lawson a98fb4f7f6
docs: fix typo
[skip ci]
2018-12-19 01:08:45 -08:00
Nolan Lawson 27da387a01
fix: preserve newlines correctly in delete-and-redraft (#845)
fixes #830
2018-12-19 00:57:56 -08:00
Nolan Lawson d5eac4e119
docs: add way more contributing docs (#846)
[skip ci]
2018-12-19 00:57:48 -08:00
Nolan Lawson 32981ffeb2
Update README.md
[skip ci]
2018-12-18 20:50:30 -08:00
Nolan Lawson d047a265a3
fix(picker): only focus picker search on desktop (#843)
* fix(picker): only focus picker search on desktop

* detect using touch detection instead
2018-12-18 20:01:53 -08:00
Nolan Lawson 7596d905ab
fix(emoji): make emoji picker more like Mastodon's (#842) 2018-12-18 18:24:05 -08:00
Nolan Lawson cd44e33a7e
perf: reduce size of emoji-mart dep using fork (#841) 2018-12-18 14:40:14 -08:00
Nolan Lawson e6ca246527
fix: use emoji-mart all.json, split out json (#839) 2018-12-18 12:45:49 -08:00
Nolan Lawson 2d32a91145
fix: fix appearance of native emoji on linux (#838) 2018-12-18 12:45:41 -08:00
Nolan Lawson 7da2076791
chore: add prop-types to deps to unbreak now (#837) 2018-12-18 10:00:12 -08:00
Nolan Lawson 098a20db49
feat: add full emoji picker using emoji-mart (#836)
* feat: add full emoji picker using emoji-mart

Fixes #4

* use a sailboat as the default emoji in the emoji picker

* fix tests

* fix lint
2018-12-18 00:43:51 -08:00
Nolan Lawson 943a1ed5e6
chore: fix build process in dev mode (#835) 2018-12-17 22:42:39 -08:00
Nolan Lawson 93c2358a71
chore: upgrade travis/now to node v10 (#834) 2018-12-17 17:30:12 -08:00
Nolan Lawson bb7fe6e30a
chore: make build process faster/simpler (#833)
This gets rid of the awkward checking-in of `template.html` to git (when
it's a built file) and also makes the rebuilds faster and more
consistent by running everything through the same pipeline. So inline
CSS, SVG, and JS are all partially built on-the-fly.

I've basically reinvented gulp, but it's pretty lightweight and
zero-dep, so I'm happy with it.
2018-12-17 17:21:29 -08:00
Nolan Lawson fc30ef1c8c
fix: add perf budgets to webpack, shorten chunk names (#831) 2018-12-17 13:42:10 -08:00
Carlos Fernández 669be2e32b Fix Pleroma compability issue (#829)
* Now image and video modals width and height will fallback to "auto" instead of 300x200. Allows proper image visualization in modals when there's no attachment metadata.

* Move background-image in gifv modal to the computed property videoStyle

fixes #750
2018-12-17 13:13:27 -08:00
Nolan Lawson 049bbba639 0.15.0 2018-12-17 11:54:51 -08:00
Nolan Lawson 4ca5b4611f
fix: use correct this.store format in all components (#827) 2018-12-17 11:28:31 -08:00
Nolan Lawson bf9ba22c35
fix: fix logging in and out with a refresh (#824)
* fix: fix logging in and out with a refresh

fixes #805

* simplify code

* make test less flaky

* fix dumb mistake
2018-12-16 12:39:16 -08:00
Nolan Lawson 14a618f374
perf: lazy-load logged-in observers, fix circular dependencies (#823)
* perf: lazy-load logged-in observers, fix circular dependencies

* I guess async deps don't count as circular deps
2018-12-16 10:22:34 -08:00
Nolan Lawson beb4d6e119
perf: avoid caching robots.txt in service worker (#820) 2018-12-16 09:35:02 -08:00
greenkeeper[bot] 77b84d44f4 Update rollup to the latest version 🚀 (#822)
* fix(package): update rollup to version 0.68.0

* chore(package): update lockfile package-lock.json
2018-12-16 09:34:53 -08:00
Nolan Lawson 146ac8d4aa
chore(package): update svelte to version 2.16.0 (#821)
* chore(package): update svelte to version 2.16.0

* chore(package): update lockfile package-lock.json
2018-12-16 09:34:41 -08:00
Nolan Lawson 4220df9418
fix: fix "now" files for thirdparty (#819) 2018-12-15 19:58:39 -08:00