Commit graph

234 commits

Author SHA1 Message Date
Nolan Lawson
7bde8dcc08 Use ES module build of react-router-dom (#5264) 2017-10-08 02:55:58 +02:00
PFM
3d8d23515f Add pagination in media modal (#4343)
* Add pagination in media modal

* Change array name

* Add an element class

* Avoid nested class

* Pull out the active class

* Use map instead of forEach

* Remove parentheses
2017-10-03 17:11:22 +02:00
Nolan Lawson
c74512f7af Improve performance of modal and swipe animations (#5135)
* Improve performance of modal and swipe animations

* Fix eslint issues
2017-09-28 20:43:18 +02:00
Eugen Rochko
795e624d5d Add ability to specify alternative text for media attachments (#5123)
* Fix #117 - Add ability to specify alternative text for media attachments

- POST /api/v1/media accepts `description` straight away
- PUT /api/v1/media/:id to update `description` (only for unattached ones)
- Serialized as `name` of Document object in ActivityPub
- Uploads form adjusted for better performance and description input

* Add tests

* Change undo button blend mode to difference
2017-09-28 15:31:31 +02:00
Nolan Lawson
60c22ed3ac Fix PropTypes.oneOfType() warning (#5041) 2017-09-22 17:50:29 +02:00
Eugen Rochko
f7810f56a1 Make dropdowns render into portal, expand animation (#5018)
* Make dropdowns render into portal, expand animation

* Improve actions modal style
2017-09-22 04:59:17 +02:00
Nolan Lawson
e03dd027b5 Reduce wasted renders for column_loading.js (#5021)
* Reduce wasted renders for column_loading.js

* Use defaultProps
2017-09-20 19:58:44 +02:00
abcang
5d0e6410c4 Fix cancellation of scroll to the right (#4978) 2017-09-17 11:59:23 +02:00
Eugen Rochko
fbec33df62 Redesign video player (#4911)
* Redesign video player

* Use new video player on static public pages too

* Use media gallery component on static public pages too

* Pause video when hiding it

* Full-screen sizing on WebKit

* Add aria labels to video player buttons

* Display link card on public status page

* Fix fullscreen from modal sizing issue

* Remove contain: strict property to fix fullscreen from columns
2017-09-14 03:39:10 +02:00
Eugen Rochko
762ca653b6 Hide modal loading screen for media/video/boost/confirm/actions modals (#4873) 2017-09-10 10:26:01 +02:00
Eugen Rochko
63cb303a66 Fix dimensions of loading component for compose drawer (#4872) 2017-09-10 08:48:11 +02:00
Eugen Rochko
2303725f7d Add script to make embedded iframes autosize (#4853) 2017-09-09 16:23:44 +02:00
Surinna Curtis
ed0798ec18 Don't unconditionally call preventDefault and stopPropagation on all keyup events (#4777)
* UploadArea should only preventDefault for Escape

This will make accessibility for some things less effortful, since we won't have to define a prior event handler to do whatever should be happening by default.

* Remove workaround for fixed bug in SettingToggle

SettingToggle was toggling itself in response to keydown of space, and then the keyup was doing it again
2017-09-02 16:27:16 +02:00
Akihiko Odaki
3b8a64e94e Fix the usages of Detect Passive Events (#4749) 2017-08-31 11:20:54 +02:00
Eugen Rochko
ad769409f7 Embed modal (#4748)
* Embed modal

* Proxy OEmbed requests from web UI
2017-08-31 03:38:35 +02:00
MitarashiDango
a7400f8016 error fixed (when loading pages in single column mode.) (#4746) 2017-08-30 17:30:25 +02:00
abcang
e8e6bb5437 Scroll smoothly to the right (#4735) 2017-08-29 17:06:19 +02:00
MitarashiDango
5a1614ce9b fix error when single columns mode. (#4734) 2017-08-29 16:11:28 +02:00
Akihiko Odaki
46142a58d2 Do not scroll the columns area due to redirection (#4541)
Commit c4a21aa352 scrolls the columns area
when the route changes since the user is likely to want to see the
rightmost column in such cases.

However, redirection is automatic and does not indicate users' intension.
Do not scroll the columns area due to one.
2017-08-29 14:16:21 +02:00
Ondřej Hruška
df045a98e1 add scrollTop to ui/components/column (#4563) 2017-08-09 00:21:58 +02:00
Ondřej Hruška
bcab356f3d add missing @ to the onboarding modal (#4560) 2017-08-08 22:13:04 +02:00
Ondřej Hruška
199affb141 Refactor Avatar and AvatarOverlay to have 'account' as prop instead of src and staticSrc (#4526)
* Refactored Avatar and AvatarOverlay (DRY) to have 'account' as prop.
Also removed animate attribute from compose navigation bar, which should
have never been there. Added test for avatar overlay.

* fix broken tests

* god dammit another bug in tests! travis please let this pass

* formatting in avatar overlay
2017-08-07 19:44:55 +02:00
MitarashiDango
ad1065cbc5 fix columns_area.js (#4528) 2017-08-05 20:33:41 +02:00
Akihiko Odaki
c4a21aa352 Scroll columns area to right when children property is changed (#4517)
The feature to pin column could hide the rightmost column, which is
specified with children property of ColumnsArea.

The user is likely to see the column when the property changed, so scroll
the area in such cases.
2017-08-04 18:57:46 +02:00
Sorin Davidoi
2032e2500c Improve accessibility (part 7) (#4457)
* fix(media_modal): Keyboard navigation

* fix(column_back_button): Use native button

* fix(media_gallery): Keyboard navigation

* fix(status_content): Make CW content focusable
2017-07-31 00:18:15 +02:00
Sorin Davidoi
a39a909fc1 feat(tabs_bar): Avoid optimization for non-touch devices (#4444)
* fix(tabs_bar): Check if transition is necessary

* feat(tabs_bar): Only apply optimization for touch devices
2017-07-29 21:20:34 +02:00
みたらしだんご
b5d1e48916 fix tabs_bar.js (#4436) 2017-07-29 14:19:49 +02:00
Sorin Davidoi
aa108f8570 Accessability fixes (#4432)
* fix(modal_root): Read type from props, not from component

* fix(status_list): Do not user event.path
2017-07-28 22:55:19 +02:00
Sorin Davidoi
e69bfa140a fix(tabs_bar): Allow animation to end before navigating (#4429)
* fix(tabs_bar): Allow animation to end before navigating

* fix(tabs_bar): Do not use event.path
2017-07-28 22:55:13 +02:00
Sorin Davidoi
3ddfab69a5 Improve accessibility (part 4) (#4408)
* fix(dropdown_menu): Keyboard navigation

* fix(icon_button): Add aria-pressed attribute

* fix(privacy_dropdown): Make accessible

* fix(emoji_picker_dropdown): Make accessible

* fix(icon_button): Support tabIndex

* fix(actions_modal): Remove icon from tab order

* fix(dropdown_menu): Add role=group

* fix(setting_toggle): Toggle via space key

* fix(dropdown_menu): Remove redundant handling of Space key

* fix(emoji_picker_dropdown): Remove redundant Space key handling

* fix(privacy_dropdown): Remove redundant Space key handling

* fix(status): Switch to article and add aria-posinset, aria-setsize

* fix(status_list): Use role=feed and pass more ARIA props to Status

* chore(eslint): jsx-a11y/role-supports-aria-props
2017-07-28 04:37:30 +02:00
Sorin Davidoi
8a9d376d6a Improve accessibility (part 3) (#4405)
* fix(compose): Add aria-label for the navigation links

* fix(search): Add input label

* fix(navigation_bar): Link description

* fix(autosuggest_textarea): Add input label

* fix(compose_form): Add input label

* fix(upload_button): Add input label

* fix(account/header): Add link content

* fix(column_header): Use h1 tag

* fix(column_header): Labels move buttons moving column

* fix(settings_text): Add label to input

* fix(column_header): Remove role from h1

* fix(modal_root): Use role=dialog

* fix(modal_root): Focus restauration

* fix(modal_root): Apply inert to sibligs

* fix(column_header): Add role=button

* chore(eslint): Disable jsx-a11y/label-has-for
2017-07-28 00:54:48 +02:00
Sorin Davidoi
270039d6df fix(actions_modal): Warning about missing prop (#4406) 2017-07-27 23:01:50 +02:00
Sorin Davidoi
9cb72c6600 fix(dropdown_menu): Open as modal on mobile (#4295)
* fix(dropdown_menu): Open as modal on mobile

* fix(dropdown_menu): Open modal on touch

* fix(dropdown_menu): Show status

* fix(dropdown_menu): Max dimensions and reduce padding

* chore(dropdown_menu): Test new functionality

* refactor: Use DropdownMenuContainer instead of DropdownMenu

* feat(privacy_dropdown): Open as modal on touch devices

* feat(modal_root): Do not load actions-modal async
2017-07-27 22:31:59 +02:00
Sorin Davidoi
7ae272fbb6 fix(columns_area): Manually set tabs style when swiping (#4320) 2017-07-26 19:03:56 +02:00
Sorin Davidoi
d63950f5b0 fix(column): Crash when heading is undefined (#4378) 2017-07-26 15:03:23 +02:00
Sorin Davidoi
8345b4d79a Improve accessibility (part 2) (#4377)
* fix(column_header): Invalid ARIA role

* fix(column): Remove hidden nodes from the DOM

* refactor(column_link): Remove unused property hideOnMobile

* fix(column_header): Use aria-pressed

* fix(column_header): Make collapsed content not focusable, add focusable property

* fix(column_loading): Make header non-focusable

* fix(column_settings): Use role to group the toggles
2017-07-26 13:46:53 +02:00
Sorin Davidoi
9582932d0a Improve accessibility (#4369)
* fix(compose): Use nav and remove redundant aria-label

* fix(tabs_tab): Use nav and add aria-label

* fix(app): Add aria-label for settings toggle button

* chore: Run yarn manage:translations
2017-07-26 02:01:27 +02:00
Sorin Davidoi
94ac88ec7f fix(components/bundle): Exit early in load function (#4349) 2017-07-25 01:05:44 +02:00
Sorin Davidoi
ad33c1e6bc fix(columns_area): Show correct title for preview columns (#4310) 2017-07-23 14:03:35 +02:00
Yamagishi Kazutoshi
87bb16a236 Add unfollow modal (optional) (#4246)
* Add unfollow modal

* unfollowing someone

* remove unnecessary prop
2017-07-18 17:14:43 +02:00
unarist
55313a0102 Fix column swiping (#4211)
This fixes broken behavior and enable animation only on swiping.
2017-07-15 17:25:04 +02:00
Eugen Rochko
c0e596062b Fix #3773 - Pin favourites column (#4201) 2017-07-15 00:49:34 +02:00
Sorin Davidoi
912ca0fa57 Improve swiping (#4188)
* feat(components/columns_area): Toggle animation settings

* fix(components/media_modal): Center non-visible views

* fix(components/media_modal): Check for null

* refactor(columns_area): Better logic
2017-07-14 00:49:01 +02:00
Sorin Davidoi
b047d5c747 fix(components/media_modal): Style issues (#4187) 2017-07-13 22:18:18 +02:00
unarist
c3ec4f2dac Rerender modal on property changes (#4175)
Render function for BundleContainer must not be methods.
React doesn't know dependency of the method, so they won't rerender on property updates.

In this case, when you close modal and open another modal immediately,
old modal will be open instead of new one.
2017-07-12 20:51:44 +02:00
Naoki Kosaka
6e511ee673 Fix media modal prev button behavior. (#4158) 2017-07-11 19:56:45 +02:00
Sorin Davidoi
1a5ae3019d refactor: Rewrite immutablejs import statements using destructuring (#4147) 2017-07-11 01:00:14 +02:00
Lynx Kotoura
5703923989 Fix duplication of tag in columns_area.js (#4131)
Deleted ">" just a typo.
2017-07-10 04:37:10 +02:00
Sorin Davidoi
f19f18f47e fix(components/media_modal): Aspect ratio (#4128)
* fix(components/media_modal): Aspect ratio

* fix: Remove useless style
2017-07-09 18:49:07 +02:00
Sorin Davidoi
420c4d8dc8 Swipeable views (#4105)
* feat: Replace react-swipeable with react-swipeable-views

* fix: iOS 9
2017-07-09 15:02:26 +02:00
unarist
05833fc24a Avoid async import if the component is previously loaded (#4127) 2017-07-09 14:52:03 +02:00
Yamagishi Kazutoshi
a45154d725 Don't use preview when image size is unknown (#4113) 2017-07-08 17:21:59 +02:00
Nolan Lawson
01ee91b725 Avoid using getBoundingClientRect to calculate height (#4001) 2017-07-08 01:57:22 +02:00
Sorin Davidoi
40b32ffb12 Lazy load components (#3879)
* feat: Lazy-load routes

* feat: Lazy-load modals

* feat: Lazy-load columns

* refactor: Simplify Bundle API

* feat: Optimize bundles

* feat: Prevent flashing the waiting state

* feat: Preload commonly used bundles

* feat: Lazy load Compose reducers

* feat: Lazy load Notifications reducer

* refactor: Move all dynamic imports into one file

* fix: Minor bugs

* fix: Manually hydrate the lazy-loaded reducers

* refactor: Move all dynamic imports to async-components

* fix: Loading modal style

* refactor: Avoid converting the raw state for each lazy hydration

* refactor: Remove unused component

* refactor: Maintain modal name

* fix: Add as=script to preload link

* chore: Fix lint error

* fix(components/bundle): Check if timestamp is set when computing elapsed

* fix: Load compose reducers for the onboarding modal
2017-07-08 00:06:02 +02:00
Sorin Davidoi
214090aa4d fix(components/columns_area): Increase delta for swipe detection (#4037) 2017-07-02 15:55:50 +02:00
Eugen Rochko
0d316bcfd2 Turn report screen into a modal (#3965) 2017-06-27 18:07:21 +02:00
Yamagishi Kazutoshi
8a9408b7c3 Maintain aspect ratio for preview image (#3966) 2017-06-27 13:43:53 +02:00
Sorin Davidoi
8180d8bc35 feat(components/onboarding_modal): Swipe between pages (#3934) 2017-06-24 23:17:39 +02:00
Yamagishi Kazutoshi
e2027fbe42 Use Class and Property Decorators (#3730)
ref https://tc39.github.io/proposal-decorators/
2017-06-23 19:36:54 +02:00
Eugen Rochko
88458a1638 Merge branch 'swipe-gestures' of git://github.com/sorin-davidoi/mastodon into sorin-davidoi-swipe-gestures 2017-06-23 17:52:39 +02:00
Yamagishi Kazutoshi
539dbaa049 Remove unused variables (#3906) 2017-06-23 16:05:04 +02:00
Sorin Davidoi
501a3cf944 feat: Swipeable media 2017-06-23 13:48:46 +02:00
Sorin Davidoi
598bb06687 feat: Swipeable columns 2017-06-23 13:48:46 +02:00
Sorin Davidoi
9bc32eb267 Upgrade React Router (#3677)
* chore(yarn): Remove react-router

* chore(yarn): Remove react-router-scroll

* chore(yarn): Remove history

* chore(yarn): Add react-router-dom

* chore: Remove usages of react-router-scroll

* refactor: Upgrade to react-router-web

* refactor: Use fork of react-router-scroll

This reverts commit 2ddea9a6c8d39fc64b7d0b587f3fbda7a45a7fa2.

* fix: Issues mentions in the PR feedback
2017-06-20 20:40:03 +02:00
Yamagishi Kazutoshi
dd7fb41dbb Add alt attribute to ImageLoader (#3765) 2017-06-15 14:10:41 +02:00
Eugen Rochko
185bcf6fe1 Use preview image in <ImageLoader /> to provide immediate visual feedback (#3595)
before the full-size image is loaded
2017-06-06 19:30:17 +02:00
Yamagishi Kazutoshi
d063663125 Improve ESLint rules for JSX (#3608)
* Add react/no-string-refs ESLint rule

* Add react/jsx-boolean-value ESLint rule

* Add react/jsx-closing-bracket-location ESLint rule

* Add react/jsx-indent ESLint rule

* Add react/jsx-curly-spacing ESLint rule

* Add react/jsx-equals-spacing ESLint rule

* Add react/jsx-first-prop-new-line ESLint rule

* Add react/jsx-no-duplicate-props ESLint rule

* Add react/jsx-tag-spacing ESLint rule
2017-06-06 13:20:07 +02:00
Yamagishi Kazutoshi
bba7df45e9 Add support key shortcut to Onboarding Modal (#3517)
* Add support key shortcut to Onboarding Modal

* this.state.pages -> this.pages
2017-06-05 10:09:14 +02:00
Eugen Rochko
cf8f820144 Allow mounting arbitrary columns (#3207)
* Allow mounting arbitrary columns

* Refactor column headers, allow pinning/unpinning and moving columns around

* Collapse animation

* Re-introduce scroll to top

* Save column settings properly, do not display pin options in
single-column view, do not display collapse icon if there is
nothing to collapse

* Fix one instance of public timeline being closed closing the stream
Fix back buttons inconsistently sending you back to / even if history exists

* Getting started displays links to columns that are not mounted
2017-06-04 01:39:38 +02:00
Yamagishi Kazutoshi
c7be992701 Add ESLint rule (object-curly-spacing) (#3498) 2017-06-01 17:25:10 +02:00
unarist
158d6c85da Focus the submit button on the boost modal (#3494)
Focus the submit button when boost modal is opened.
2017-06-01 04:20:10 +02:00
Nolan Lawson
e7714433fd Remove react-imageloader (#3423)
* Remove react-imageloader

* add eslint-disable-line

* improve image loading experience

* remove unneeded import

* use PureComponent

* Use componentWillMount instead of constructor
2017-05-31 17:07:25 +02:00
Yamagishi Kazutoshi
3d3441dddd Change anchor to button element (#3321)
Fix warning for ESLint (jsx-a11y/href-no-hash).
2017-05-26 14:10:37 +02:00
Nolan Lawson
98b39c2cbc Replace onWheel listener with onScroll (#3324)
* Replace onWheel listener with onScroll

* Update column.js
2017-05-26 14:09:13 +02:00
Yamagishi Kazutoshi
ccd864c41a Remove unnecessary constructors (#3280) 2017-05-24 17:55:16 +02:00
Yamagishi Kazutoshi
5bb10252fa Focus the submit button (#3253)
Focus the submit button when confirmation modal is opened.

Also, changed cancellation link to button.
This makes the meaning clearer.
2017-05-23 13:10:41 +02:00
Yamagishi Kazutoshi
e4ed0b155c Improve eslint rules (#3147)
* Add semi to ESLint rules

* Add padded-blocks to ESLint rules

* Add comma-dangle to ESLint rules

* add config/webpack and storyboard

* add streaming/

* yarn test:lint -- --fix
2017-05-20 17:31:47 +02:00
Sorin Davidoi
fcf794aebe Performance improvements (#3168)
* refactor(components/status_list): Avoid quering scrollTop if not necessary

* refactor(components/dropdown_menu): Do not render items if not expanded

* refactor: Cherry-pick react-motion imports

* refactor(compose/privacy_dropdown): Do not render options if not open

* refactor(components/column_collapsable): Do not render children if collapsed
2017-05-20 14:58:13 +02:00
Sorin Davidoi
83058002f6 Avoid useless renders (#3141)
* feat(eslint): Set react/jsx-no-bind: error

* refactor(notifications/setting_toggle): Do not use bind

* refactor(components/dropdown_menu): Do not use bind

* refactor(components/autosuggest_textarea): Do not use bind

* refactor(compose/privacy_dropdown): Do not use bind

* refactor(compose/upload_form): Do not use bind

* refactor(components/status): Do not use bind

* refactor(components/onboarding_modal): Do not use bind

* refactor: PR feedback

* chore(notifications/setting_toggle): Lint

* refactor: PR feedback
2017-05-19 20:58:12 +02:00
Yamagishi Kazutoshi
9ab33ded34 Downgrade eslint-plugin-jsx-a11y to v4.0.0 (#3131)
In Code Climate, eslint-plugin-jsx-a11y v4.0.0 is used.
Therefore, it seems that a warning is displayed.

ref https://github.com/codeclimate/codeclimate-eslint/pull/273
2017-05-19 11:44:28 +02:00
Sorin Davidoi
ffea738a84 refactor: Import from react-router/lib (#3117) 2017-05-18 19:14:03 +02:00
geta6
5c2daded5c Enable to handle app immediately after closing modal (#3082) 2017-05-16 12:12:38 +02:00
Yamagishi Kazutoshi
2d254f9733 Use ES Class Fields & Static Properties (#3008)
Use ES Class Fields & Static Properties (currently stage 2) for improve class outlook.

Added babel-plugin-transform-class-properties as a Babel plugin.
2017-05-12 14:44:10 +02:00
Eugen Rochko
ef2af79a48 Replace sprockets/browserify with Webpack (#2617)
* Replace browserify with webpack

* Add react-intl-translations-manager

* Do not minify in development, add offline-plugin for ServiceWorker background cache updates

* Adjust tests and dependencies

* Fix production deployments

* Fix tests

* More optimizations

* Improve travis cache for npm stuff

* Re-run travis

* Add back support for custom.scss as before

* Remove offline-plugin and babili

* Fix issue with Immutable.List().unshift(...values) not working as expected

* Make travis load schema instead of running all migrations in sequence

* Fix missing React import in WarningContainer. Optimize rendering performance by using ImmutablePureComponent instead of
React.PureComponent. ImmutablePureComponent uses Immutable.is() to compare props. Replace dynamic callback bindings in
<UI />

* Add react definitions to places that use JSX

* Add Procfile.dev for running rails, webpack and streaming API at the same time
2017-05-03 02:04:16 +02:00