* Refactor & change `add-affiliation.tsx` file:
* Change class from `user-profile` to `add-affiliation`
* Add new optional `className` props for custom styling
* Show affiliation widget on mobile screen:
* Fix bug on use add affiliation hooks: return type should be `boolean`, not `boolean | 0`
GitOrigin-RevId: 800b951e2a012797266b1780993b4ed9a918d565
* Rename manage group entry point
* Migrate group management root page to React
* Add cypress tests for the group management react page
* Fix linting
* Add checkbox labels for screen-readers + remove unused classes
* Await on add/remove members calls
* Display the export CSV link for a full group
* Display error message when group is full
* Sort locales
* Handle the managers management page in React version
* Fix missing type in GroupMemberRow
* Split members and managers React pages
* Build API paths on frontend side + add cypress tests for each page
* Fix linting
* Update unit tests
* Review improvements
* Type API errors
GitOrigin-RevId: d124a9d24cbf33de8aacc5d69e9d46e7bcda93c5
* Update split test config and infrastructure for plans-page-layout-v3
* Implement view for `old-plans-page-annual` variant of the new split test:
- Make `annual` the default view for all elements on the old plans page
- Change the tooltip background to green for monthly/student view
* Implement a new design for the new plans page:
- switch annual and monthly locations (annual on the left now)
- change the tooltip background to green color for all choice
- make the monthly-annual switch has green background if annual is chosen
* Fix mobile view plans page header style
GitOrigin-RevId: b2b3c6ac6adbe26bf6def7e072493f503793cfcb
* Add new event segmentations for the upgrade button in dashboard to help analysis
* Also add an extra check for the upgrade button in the navbar since it's only appeared in the project dashboard react version
GitOrigin-RevId: fca14e3adfbafd0fd143b045ba43588913f7297b
* Implement new users micro survey for project dashboard page on react and non-react version
* Add 'new-users-micro-survey-click' and 'new-users-micro-survey-prompt' new event for the analytics
GitOrigin-RevId: 9aabe931987638b38995d404aa90ac4d40b2f3b5
- Implement the banner on both react and non-react project dashboard
- Use split test with 4 different variants, `save`, `empower`, `did-you-know`, and `default`, each variant has a different copy, except the `default` which won't show the banner to users
GitOrigin-RevId: ee76769dfd38b8e52de8cc0f201c24e41905d016
- Importing SettingsController from the angular code, which enables post requests for every select menu and socket handler for compiler, texlive version, and main document select option
- New context for the data handling infrastructure between react and angular. The data is still located in the angular version, and I use the context only as a proxy to fetch/post new data.
GitOrigin-RevId: 59009bceb128d82969a2318e90036aacf79f9887
* Improve "compile" keypress handling
* Remove "compile" keypress handling from PDF preview
* Remove compile shortcuts from CM6
* Use an event for Vim keybindings
* Remove event handlers from Angular/Ace
* Move useCompileTriggers into DetachCompileProvider
GitOrigin-RevId: 7f0e667b5106a849458e06ebb0f7a413d5d63430
* Update "go to line" hotkey for cm6 and add new info text in hotkeys modal
* Differentiate modal title between cm6 and ace hotkeys
* Update test to reflect change in hotkeys modal title
* Add test for hotkeys modal bottom text
* Update test on editor left menu hotkeys button to reflect change in hotkeys modal title
GitOrigin-RevId: 61bae16313ea7a37fa3b9441dbe5a93ab7823d01
Implement legacy source editor survey:
* Force user to switch to cm6 if they haven't seen switch away survey
* Only show user switch away survey if they open ace from another editor
* We need to wait 3 seconds until the survey is being shown
* Add comment to explain the reasoning of not showing cm6 switch away survey for rich text users
* Use localstorage `editor.has_seen_cm6_switch_away_survey` setter to not show the survey if user has seen the survey
* the `editor.has_seen_cm6_switch_away_survey` will have the value `true` even if user is not interacting with it, so update comment to reflect that
* Add `once: true` option to keydown event to avoid unnecessary callback invocation upon key presses
GitOrigin-RevId: c26be2bb39efac2dff112c821fca893e5993dcbf
* Initialize left menu react migration and migration download menu UI to react
* Add test case to DownloadMenu react component
* Update test description and add an href check to one of the download link
* Extract storybook document mock to its own fixture file
* Add mockCompileOnLoad config on storybook editor scope
- if mockCompileOnLoad: true (default), then the default compile mock will be used
- If mockCompileOnLoad: false, then we have to provide a compile mock on the storybook component
* Create download menu storybook component
* Use a single "editor-left-menu" controller on the editor left menu migrations
* Remove the form import from the react version of the left menu
* Change inline style to utility class name
GitOrigin-RevId: 5357c7bfc78bf40f52b9b308df8f2b60d793fbf7
* change event segmentation to plans-page-layout-v2-annual
* update some new plans page event to have new event key
* add location segmentation key for some of the group plans events
GitOrigin-RevId: 99d8258112d9661955a196e57ca05a017afba0f4
* [web] set-password: reject same as current password
* [web] Add 'peek' operation on tokens
This allows us to improve the UX of the reset-password form,
by not invalidating the token in the case where the new
password will be rejected by validation logic.
We give up to three attempts before invalidating the token.
* [web] Add hide-on-error feature to async forms
This allows us to hide the form elements when certain
named error conditions occur.
* [web] reset-password: handle same-password rejection
We also change the implementation to use the new
peekValueFromToken API, and to expire the token explicitely
after it has been used to set the new password.
* [web] Validate OneTimeToken when loading password reset form
* [web] Rate limit GET: /user/password/set
Now that we are peeking at OneTimeToken when accessing this page,
we add rate to the GET request, matching that of the POST request.
* [web] Tidy up pug layout and mongo query for token peeking
Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com>
GitOrigin-RevId: 835205cc7c7ebe1209ee8e5b693efeb939a3056a
* Add onboarding survey page
* Add onboarding new analytics events to mixpanel allowlist
* [web] Try Premium prompt
* moved try-premium code to overleaf-integration
* fixed sheet styling
* Add onboarding flow redirect handling to registration handlers (#9462)
* Add redirect logic for onboarding flow after registration
* Update UPGRADE_PROMPT_URL
* Cleanup style of OverleafAuthenticationController
* Refactor finishLogin calls to call wrapped function in OverleafAuthenticationController
* Refactor user properties/onboarding flow redirect into finishLogin wrapper
* Fix async/await calls after refactoring
* Update tests for finishLogin refactoring
* Don't redirect to upgrade prompt if user has premium via commons
Co-authored-by: Miguel Serrano <mserranom@users.noreply.github.com>
GitOrigin-RevId: 7c392aa6949f99fa909f9ca4e4baad4c4d4ff6be