Commit Graph
100 Commits
Author SHA1 Message Date
Penar Musaraj 695ec99cea UX: Fix highlighting regressions (#24825)
Two regressions fixed here, one introduced in 6dc5fe0c83
and the other introduced a few months ago.
2023-12-11 11:02:48 -05:00
Penar Musaraj af23fec835 FIX: Reload page after adding 2FA when it is enforced (#24803)
When 2FA is enforced and the user has no key or TOTP on their account, we
block navigating away from the page until they have added one. However,
we don't reload the page after they have added one, so the user is left
with a page that still says they need to add 2FA.
2023-12-11 10:56:30 -05:00
Penar Musaraj ce723caae2 DEV: Remove flaky spec (#24795) 2023-12-08 11:43:17 -05:00
Penar Musaraj 80d5acc0ce FIX: Navigate search results using J/K keys (#24787) 2023-12-08 11:06:59 -05:00
Penar Musaraj 6dc5fe0c83 A11Y: improve setting focus to a post (#24786)
See https://github.com/discourse/discourse/pull/23367 for implementation details.
2023-12-08 11:06:21 -05:00
Penar Musaraj 28956a5415 DEV: Switch to sassc-embedded (#24639)
Sassc-embedded fixes a performance issue with a leaking DartSass process. And it also fixes an issue with source map file paths (without any extra flags).
2023-12-08 10:34:03 -05:00
Penar Musaraj 61cf76bf70 Revert "A11Y: fix setting focus to a post (#23367)" (#24783)
This reverts commit 9dce1592dc.

The change is having some adverse effects.
2023-12-07 17:03:52 -05:00
Penar Musaraj 9dce1592dc A11Y: fix setting focus to a post (#23367)
This is a second attempt to fix this issue. First fix at #23243, see PR for details.
2023-12-07 15:44:42 -05:00
Penar Musaraj b00dbaa6c9 DEV: Remove flaky spec (#24641) 2023-11-30 11:06:27 +08:00
Penar MusarajandJarek Radosz 633deb5af8 UX: Submit security key edit form on Enter (#24532)
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2023-11-27 16:11:12 -05:00
Penar Musaraj 36606a2157 FIX: Modals on Android when keyboard is visible (#24442) 2023-11-20 11:56:06 -05:00
Penar Musaraj f8a27dcbec FIX: Rendering a single item in a grid (#24464)
Should fix https://meta.discourse.org/t/-/285768.

Appending without cloning was causing the item to be removed from the
DOM but on a 1-item grid we skip the rest of the grid's rendering,
hence the item was never re-inserted. Cloning ensures we don't remove
the item during processing (it does get removed later on when rendering
the grid's columns).
2023-11-20 11:53:35 -05:00
Penar Musaraj bcfb1a423d FIX: Regression when enforced 2FA is enabled (#24415) 2023-11-16 11:52:12 -05:00
Penar Musaraj f08e5c897e UX: Apply decorators to small action posts (#24397) 2023-11-16 08:52:07 -05:00
Penar Musaraj c6ead3f5c4 FEATURE: Allow users to confirm session with passkeys (#24337)
We ask users to confirm their session if they are making a sensitive
action, such as adding/updating second factors or passkeys. This
commit adds the ability to confirm sessions with passkeys as an option
to the password confirmation.
2023-11-14 11:38:10 -05:00
Penar Musaraj fcf0373b13 FIX: only show passkeys button in login modal (#24351)
We show the rest of the external login buttons in the create account
modal as well, but "login with a passkey" is not relevant in that context.
2023-11-13 16:06:46 -05:00
Penar Musaraj a814348176 DEV: Rename experimental_passkeys to enable_passkeys (#24349)
Also includes a migration.
2023-11-13 15:04:15 -05:00
Penar Musaraj 6183d9633d SECURITY: Limit height of pre/svg elements
Ensures posts cannot have SVG or PRE elements that are too tall.
2023-11-09 13:39:13 +11:00
Penar Musaraj a1c1f7ce75 DEV: Standardize session confirmation prompt (#24212)
Switches to using a dialog to confirm a session (i.e. sudo mode for
account changes where we want to be extra sure the current user is who
they say they are) to match what we do with passkeys.
2023-11-07 11:26:10 -05:00
Penar Musaraj fcaedbf4ba FIX: Broken login with security key when passkeys enabled (#24249)
In some browsers, 2FA login was failing with a "request is already
pending" error. This only applied when `experimental_passkeys` was
enabled and on Chrome only. This was due to the fact that the webauthn
API only supports one auth attempt at a time, so the security key call
needs to abort the passkey's conditional UI request before starting.

I am not sure we can test this. We have system specs that simulate
webauthn credentials and they didn't catch this (probably because the
simulation covers the whole flow).
2023-11-06 16:45:33 -05:00
Penar Musaraj 77445a4b32 FIX: Skip animated gif treatment for onebox avatar (#24199)
This fixes an edge case where the layout of a onebox with a gif avatar
was broken. Oneboxes have specific styling attached to avatar images and
the pausable animated image treatment was breaking that styling.
2023-11-01 16:24:06 -04:00
Penar Musaraj 18d7162481 FIX: Maintain destination_url after passkey login (#24171) 2023-10-31 11:35:36 -04:00
Penar Musaraj 56e233464f DEV: Set selenium-webdriver version to 4.14 (#24161)
It was already upgraded in 0d42e25, this just ensures metadata matches.
2023-10-30 15:52:08 -04:00
Penar Musaraj e7ed18fdfc FIX: Only check for conditional mediation when needed (#24142)
Some browsers still don't support conditional mediation. This PR fixes issues with:

- TOR browser (it doesn't have `PublicKeyCredential` at all)
- Firefox 119 (doesn't support conditional mediation)

We also need to make sure not to call `isConditionalMediationAvailable` on browsers that don't support the method but support the feature (like Safari on iOS).
2023-10-27 11:55:55 -04:00
Penar Musaraj 7f57ba45ac UX: Fix mobile passkeys login button (#24124)
This regressed in b6dc929. A test to ensure this doesn't regress has
been added as well.

This PR also fixes a flakey system spec. The conditional UI gets
triggered automatically, so the system spec shouldn't explicitly call
`find(".passkey-login-button").click`, because sometimes it isn't
present and that causes a test failure.
2023-10-26 20:55:41 -04:00
Penar Musaraj b8ee52c4cb UX: Wait for render before invoking A11YDialog (#24100)
Previously, focus wasn't being applied correctly on dialogs using named
components. This was because the A11YDialog was being invoked before
the component was completely rendered.

The long-term plan is to move away from A11YDialog doing the rendering
here, but for now this should do.
2023-10-26 08:24:47 -04:00
Penar Musaraj e231ed2153 DEV: Improve error messaging (#24099)
Applies to passkeys, visible in a dev environment when using a non-standard
host. The error modal should only be shown when invoking the passkey
login button.
2023-10-25 13:44:08 -04:00
Penar Musaraj b6dc929141 UX: Add conditional UI for passkeys (#24041)
This allows users to see their passkeys recommended by the browser as they type their username.

There's a small refactor here, to make sure the same action is used by both the conditional UI and the passkey login button. The webauthn API only supports one auth attempt at a time, so in this PR we need to add a service singleton to manage the navigator.credentials.get promise so that it can be cancelled and reused as the user picks the conditional UI (i.e. the username login input) or the dedicated passkey login button.
2023-10-23 11:21:05 -04:00
Penar Musaraj f9eec939e5 UX: Fixes for mobile "create account" modal (#24043)
- Don't include login buttons on mobile
- Fix padding/spacing
2023-10-23 10:48:46 -04:00
Penar Musaraj 0934cc6ece DEV: Fix Ember inspector error on anonymous user (#24042) 2023-10-23 09:24:05 -04:00
Penar Musaraj 00aa81a271 UX: Fix form template mobile issues (#24019)
- allows scrolling on mobile when form template is present
- hides upload, preview buttons on mobile
2023-10-19 11:09:34 -04:00
Penar Musaraj 6837888b8b UX: Update highlight.js styles (#23999) 2023-10-18 19:07:39 -04:00
Penar Musaraj a125c9e63e UX: Minor fixes to passkey handling (#23947)
- don't try to guess the name of the manager (too many options)
- improve error message when registration is not allowed
- output error in console when registration fails
- minor fix to rename dialog layout
- hides action buttons in DiscourseHub (because adding passkeys there is not possible)
- adds acceptance test to ensure action buttons are hidden for admins seeing another user's profile
2023-10-18 11:46:51 -04:00
Penar Musaraj 87a635ed32 UX: Fix icon color for video placeholder (#23957)
Also adds a small effect on hover.
2023-10-17 10:25:57 -04:00
Penar Musaraj 1400d4a8fd Bump version to v3.2.0.beta3-dev 2023-10-16 11:20:22 -04:00
Penar Musaraj be04154838 Bump version to v3.2.0.beta2 2023-10-16 11:20:20 -04:00
Penar Musaraj 13afad70a5 DEV: Lint admin-email-preview-test.js 2023-10-16 10:46:02 -04:00
Penar MusarajandJoffrey JAFFEUX 1a70817962 DEV: Add UI for passkeys (3/3) (#23853)
Adds UI elements for registering a passkey and logging in with it. The feature is still in an early stage, interested parties that want to try it can use the `experimental_passkeys` site setting (via Rails console). 

See PR for more details. 
---------

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2023-10-13 12:24:06 -04:00
Penar MusarajandAlan Guo Xiang Tan e3e73a3091 DEV: Add routes and controller actions for passkeys (2/3) (#23587)
This is part 2 (of 3) for passkeys support.

This adds a hidden site setting plus routes and controller actions.

1. registering passkeys

Passkeys are registered in a two-step process. First, `create_passkey`
returns details for the browser to create a passkey. This includes
- a challenge
- the relying party ID and Origin
- the user's secure identifier
- the supported algorithms
- the user's existing passkeys (if any)

Then the browser creates a key with this information, and submits it to
the server via `register_passkey`.

2. authenticating passkeys

A similar process happens here as well. First, a challenge is created
and sent to the browser. Then the browser makes a public key credential
and submits it to the server via `passkey_auth_perform`.

3. renaming/deleting passkeys

These routes allow changing the name of a key and deleting it.

4. checking if session is trusted for sensitive actions

Since a passkey is a password replacement, we want to make sure to confirm the user's identity before allowing adding/deleting passkeys. The u/trusted-session GET route returns success if user has confirmed their session (and failed if user hasn't). In the frontend (in the next PR), we're using these routes to show the password confirmation screen. 

The `/u/confirm-session` route allows the user to confirm their session with a password. The latter route's functionality already existed in core, under the 2FA flow, but it has been abstracted into its own here so it can be used independently.


Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
2023-10-11 14:36:54 -04:00
Penar Musaraj df90c7f0c1 FIX: Disable overflow-anchor on composer textarea (#23875)
This fixes an issue where, on a textarea with a lot of text, the cursor
would jump when adding a new line. See video in PR for a repro.

This is a Chrome bug with scroll anchoring.

Refs: https://bugs.chromium.org/p/chromium/issues/detail?id=997266

The fix here disables `overflow-anchor` on the composer textarea. There
should be no side effects to this change, as scroll anchoring is likely
not needed for the composer textarea element.
2023-10-10 09:50:02 -04:00
Penar Musaraj 921f1279b9 DEV: Update webauthn authentication documentation (#23787)
Also adds a `userHandle` check for first factor verification, though this is not yet implemented in Rails controllers and UI.
2023-10-05 15:22:43 -04:00
Penar Musaraj 3ff628eb78 UX: Prevent unexpected preview scroll in Firefox when using grid (#23777) 2023-10-05 10:58:17 -04:00
Penar MusarajandAlan Guo Xiang Tan 0af6c5efdc DEV: Refactor webauthn to support passkeys (1/3) (#23586)
This is part 1 of 3, split up of PR #23529. This PR refactors the
webauthn code to support passkey authentication/registration.

Passkeys aren't used yet, that is coming in PRs 2 and 3.

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
2023-10-03 14:59:28 -04:00
Penar Musaraj ca394177cb FIX: Copy button JS test failures (#23687)
JS tests expect `show_copy_button_on_codeblocks` to be false (because
default before #81f3f56 was false). There is probably a different
issue at play here with JS tests, I haven't dug into it yet.

Instead, this PR adds a system test to ensure copy button is present
for code blocks with default site settings enabled.
2023-09-27 13:05:27 -04:00
Penar Musaraj f6326d03f0 DEV: Bump max theme sprite size to 1MB (#23556)
There is one repo with very large sprites, and it's causing missing
icons on some instances.
2023-09-13 15:00:26 +10:00
Penar Musaraj 0a3f1852c6 DEV: Add system test for user security keys (#23372) 2023-09-04 12:07:20 +10:00
Penar Musaraj 006a5166e5 DEV: Refactor rp_id and rp_name (#23339)
They're both constant per-instance values, there is no need to store them
in the session. This also makes the code a bit more readable by moving
the `session_challenge_key` method up to the `DiscourseWebauthn` module.
2023-08-31 09:11:23 -04:00
Penar Musaraj 76f4142d3f Revert "A11Y: Improve setting focus to post" (#23311)
This reverts commit 9b3fc8081a.
2023-08-29 09:24:16 -04:00
Penar Musaraj a94834abd5 A11Y: Improve setting focus to post (#23243) 2023-08-25 14:45:56 -04:00
Penar Musaraj fdc2080bd8 DEV: Use ellipsis instead of three dots (#23193)
Also adds a note for translators for the `type_to_filter` string.

@discourse-translator-bot keep_translations_and_approvals
2023-08-24 10:10:41 -04:00
Penar Musaraj d51c076bf8 FIX: Add site name to sitelinks structured data (#23151) 2023-08-24 10:07:45 -04:00
Penar Musaraj 4c3ee1b211 DEV: Remove unused code (#23171)
This method slipped in by accident in 10c6b2a and is not used.
2023-08-21 15:01:05 -04:00
Penar Musaraj 10c6b2a0c2 WIP: Rename Webauthn to DiscourseWebauthn (#23077) 2023-08-18 08:39:10 -04:00
Penar Musaraj cb5ae4dcfa FIX: Search by tag context was broken (#23006) 2023-08-08 15:15:34 -04:00
Penar MusarajandDavid Taylor 161d3d190a A11Y: Fix selecting topic when navigation via keyboard (#22996)
This fixes:
- a regression from 30c152c, where navigating to a topic's last reply
  via keyboard would lose track of the topic when returning to the topic
  list
- an issue where if a topic's last post is a small post, navigating to it
   via keyboard would not focus the post

Co-authored-by: David Taylor <david@taylorhq.com>
2023-08-07 17:05:16 -04:00
Penar Musaraj 9e9aa8f653 UX: Differentiate focus state from hover state (#22985)
When a button gets a focused state via keyboard, it is highlighted a bit more than the hover or selected state.
2023-08-07 16:46:10 -04:00
Penar Musaraj 35ff57ba69 UX: Fix hover color for header icons in WCAG (#22959) 2023-08-03 12:38:08 -04:00
Penar Musaraj 5dc3a276c8 FIX: Compact tag picker input not focused in iOS (#22922)
Should fix an iOS regression in f5e8e73. iOS does not pull up the keyboard if the `.focus()` call is delayed by a rendering timeout or an asynchronous ajax call. This PR adds earlier `.focus()` calls if the input element is present.
2023-08-02 09:59:50 -04:00
Penar Musaraj 318bdbdb46 DEV: Cleanup onebox spec discourse topic fixtures (#22881) 2023-07-31 15:09:47 -04:00
Penar Musaraj 26a8e7da28 DEV: Remove redundant case in import script (#22882) 2023-07-31 14:52:06 -04:00
Penar Musaraj 3bee2a41f4 UX: More tweaks to compact tag picker (#22859)
Input font size was too small.
2023-07-28 12:11:24 -04:00
Penar Musaraj dcc825bda5 SECURITY: Limit length of edit reason column 2023-07-28 12:53:49 +01:00
Penar Musaraj f3db8579d6 UX: Minor alignment fix for compact tag selector (#22810) 2023-07-26 14:13:39 -04:00
Penar MusarajandJarek Radosz f2048eeb4c UX: Minor change to compact tag chooser (#22796)
Followup to f5e8e73.

This switches the placeholder label to the existing string "optional
tags" and only shows it if there are no items picked.

Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2023-07-26 11:43:46 -04:00
Penar Musaraj c6dca50ba4 UX: Remove ring from avatar for a new user (#22780) 2023-07-25 14:49:44 -04:00
Penar Musaraj f5e8e737ad UX: Compact option for multi-selects (#22239)
Adds an alternative to the default multi select item, better suited for quickly adding/removing tags.
2023-07-25 11:00:02 -04:00
Penar Musaraj 4e5756e3ae FIX: Handle empty directory columns in /u route (#22747)
The `/u` route was broken when there were no directory columns because
its order parameter relied on the first column's name. This commit adds
a `likes_received` as the default order when there are no columns, which
results in a list of users being output without any additional columns.

For this very edge case, that's better than a JS error.
2023-07-25 10:58:43 -04:00
Penar Musaraj bd7e5c15fb UX: Fix focus state style for date button in composer (#22669) 2023-07-18 15:39:52 -04:00
Penar Musaraj a984a807fd A11Y: Don't output aria-labelledby when card is empty (#22247)
The user card is always present in the DOM. Therefore we only need to
add the `aria-labelledby` attribute when there is a user (and a title)
to point to.
2023-06-23 09:25:03 -04:00
Penar Musaraj 92389e5475 UX: Fix overridden setting highlight color (#22245) 2023-06-22 18:01:48 -04:00
Penar Musaraj 808c6ad1cd A11Y: Adjust contrast and font size for mini profiler widget (#22246) 2023-06-22 18:01:21 -04:00
Penar MusarajandDaniel Waterworth 47ab7eb49a FIX: Staged user creation loses user custom field data (#22206)
Don't cache user_fields on users separately from custom_fields, since they can get out of sync.

---------

Co-authored-by: Daniel Waterworth <me@danielwaterworth.com>
2023-06-21 12:35:24 -05:00
Penar Musaraj f89b5680cb FEATURE: Enable image grid by default (#22160) 2023-06-19 13:24:52 -04:00
Penar MusarajandJarek Radosz fc11e77eff FIX: Theme translations resetting on save (#22072)
Fixes an issue where saving a theme translation would reset unsaved
changes made to other theme translations.

Also cleans up unused `saveSettings` and `saveTranslations` actions.

Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2023-06-19 10:37:43 -04:00
Penar Musaraj 3c490b2db8 UX: Better alignment for experimental grids (#22066)
Improves the layout of most grids in posts, by using `object-fit: cover` for most images. This allows images to better fill up the space, without changing their aspect ratio.
2023-06-13 09:25:46 -04:00
Penar Musaraj 1abfe2e61d UX: Small spacing fix for grid items (#21979)
Supports spacing for videos and placeholder elements.
2023-06-09 15:28:50 -04:00
Penar Musaraj 987ec602ec FEATURE: image grid in posts (experimental) (#21513)
Adds a new `[grid]` tag that can arrange images (or other media) into a grid in posts. 

The grid defaults to a 3-column with a few exceptions:

- if there are only 2 or 4 items, it defaults to a 2-column grid (because it generally looks better)
- on mobile, it defaults to a 2-column grid
- if there is only one item, the grid has no effect
2023-06-07 14:15:57 -04:00
Penar Musaraj d5b3db409e DEV: Allow color scheme loading to be used async (#21836) 2023-05-31 12:30:12 -04:00
Penar Musaraj a25bb81a64 DEV: Improve manual color scheme toggle in styleguide (#21629) 2023-05-18 07:31:20 +02:00
Penar Musaraj f6670aecfd DEV: Fix preview sanitization test (#21521)
This test was passing, but the environment it was testing was incorrect.
The `image-controls` markdown rule allowlists several svgs when previewing.
But since `previewing: true` is only set on the parent `ComposerEditor`
component, the test in `DEditor` wasn't aware of that, so the output was
ignoring the `previewing` option.

This moves the test one level higher, to `ComposerEditor`, and because
now `previewing: true` is correctly used, it updates the test to show
that the svg element is present, but an `onload` attributes is stripped.
2023-05-16 11:06:05 -04:00
Penar Musaraj 06ea37e591 A11Y: Improve select-kit accessibility (take 2) (#21530)
Same as #214500 but fixes an issue with mobile navigation in some cases.
2023-05-16 09:57:50 -04:00
Penar Musaraj 56422ca8b8 FIX: Don't show duplicates in styleguide (#21582) 2023-05-16 09:27:15 -04:00
Penar Musaraj e8aea3c558 A11Y: Improve select-kit accessibility (#21400)
This improves keyboard navigation in and out of select-kit components.

The improvements include:

- `Tab` will now dismiss the dropdown once the active element is outside
the select-kit element
- pressing `Escape` will not bubble, this is most noticeable in the
composer, pressing `Esc` there now when a dropdown is expanded will not
dismiss the composer
- `Shift+Tab` will also dismiss the dropdown once focus is outside it
2023-05-09 09:46:05 -04:00
Penar Musaraj c69c7578f3 UX: loading slider for select-kit filter (#21401) 2023-05-08 14:56:46 -04:00
Penar Musaraj 76157c6fb0 Revert "A11Y: select kit close on focus out (#21274)" (#21383)
This reverts commit 1b2a1c94d4. Noticed
some issues in Safari macOS that need to be addressed.
2023-05-04 09:45:19 -04:00
Penar Musaraj d4a2e9a740 UX: Use fixed colors for admin stacked chart reports (#21371)
* UX: Use fixed colors for admin stacked chart reports

* Fix specs
2023-05-04 08:35:19 +02:00
Penar Musaraj 1b2a1c94d4 A11Y: select kit close on focus out (#21274)
When navigating with the keyboard, the select-kit would not close when
focus was moved to an element outside of the body. For example, when
navigating via Tab or Shift+Tab, once the end (or beginning) of the list
was reached, focus would move out of the SK element, but the SK itself
would stay visible.

Switching from a click event to a focusout event solves the issue and
covers both mouse and keyboard navigation.
2023-05-02 14:22:31 -04:00
Penar Musaraj d697fd5766 DEV: Do not rerender widgets on mouseup/mousedown (#21300)
Ran into an issue with these hooks preventing click events on anchors from completing (because the triggered rerender cancels the click). See:
https://github.com/discourse/discourse-header-search/pull/24

This change should have no effect on existing usage of these hooks. Current usage is limited to:

- legacy navigation (should be a no-op)
- reactions plugin (should be a no-op)
- discourse-header-search (will fix the issue!)
2023-05-01 14:07:49 -04:00
Penar Musaraj a67c96438c UX: Fix user onebox layout (#21284) 2023-04-28 09:50:49 -04:00
Penar Musaraj 3abc542e63 FIX: Include group flair in homepage category topic lists (#21268)
Followup to c03f83bbea.

The `flair_group_id` parameter is now required to show the flair, and this serializer was missing that detail. 

This also fixes a typo in the `include_flair_group_name?` method.
2023-04-27 10:18:16 +08:00
Penar Musaraj 3c4241c0b6 A11Y: Use correct structure for badge headings (#21267) 2023-04-26 17:40:00 -04:00
Penar Musaraj 4e0c07c56d UX: Include subcategories in crawler view (#21227)
Adds a bit more information to the categories view for crawlers, for better indexing of deep content.

This only works when the "Subcategories with Featured Topics" is the selected layout.
2023-04-25 10:51:45 -04:00
Penar Musaraj b59e0b22f4 DEV: Add error message styling (#21225)
To security key errors when confirming new email.
2023-04-25 08:40:18 -04:00
Penar Musaraj 34ffc0065a FIX: Better detect text selection in search input (#21202)
Followup to 17ba00c395.
Fix for https://meta.discourse.org/t/-/261917

This fixes a usability issue where the user couldn't switch to the user
menu when the search menu was visible and the text in the input was
selected.

Explanation: The `click` event is triggered both when clicking and when
selecting some text and clicking. This means that when selecting text in
the search input, at the end of the selection event, a click event was
triggered. And if that click event happened to be outside of the search
menu, then the menu would be dismissed.

Previously, we fixed this by checked if a current text selection was
present. But that results in a small side-effect of not switching to
other menus. This PR switches to setting a flag during `mouseDown` and
then using that flag when evaluating whether to trigger clickOutside or
not.
2023-04-21 14:30:47 -04:00
Penar MusarajandJarek Radosz b869d35f94 FIX: Dismiss modal when "Keep Editing" is used (#21117)
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2023-04-17 17:44:21 -04:00
Penar Musaraj 0ab3ba5f0d SECURITY: strip xlink:href from uploaded SVGs (#21057)
This was inadvertently removed in 4c46c7e. In very specific scenarios,
this could be used execute arbitrary JavaScript.

Only affects instances where SVGs are allowed as uploads and CDN is not
configured.
2023-04-11 14:10:44 -04:00
Penar Musaraj 17ba00c395 FIX: icon toggles saerch menu display on click (#20950)
Using the `mouseDownOutside` event was problematic here because two
events were being triggered consecutively: `mouseDown`
would toggle the menu off and `click` would then toggle it back on. This
switches the logic to use `clickOutside` again, but with two changes:
- it limits the action to the `search-menu` key (so that theme component
overrides can do their own handling)
- it does not trigger the event when there is an active text selection
 (this was the original reason for switching to `mouseDownOutside`, see
https://github.com/discourse/discourse/pull/14788)
2023-04-04 09:49:55 -04:00
Penar Musaraj f8720a20f9 Revert "UX: Take sticky header into account when spacebar scrolling (#20848)" (#20863)
This reverts commit cb92ea3c2b.

Was causing unexpected scrolling when interacting with the header. Will
investigate.
2023-03-28 11:13:51 -04:00
Penar Musaraj cb92ea3c2b UX: Take sticky header into account when spacebar scrolling (#20848) 2023-03-27 20:37:01 -04:00
Penar Musaraj daaa41ae07 WIP: Skip system specs with upload fabricators (#20821)
A shot in the dark to see if these are the culprits for the many random
spec failures in CI.
2023-03-27 13:11:17 -04:00