Skip to content

Conversation

@edegp
Copy link
Owner

@edegp edegp commented Jan 19, 2025

Describe your changes

GitHub Issue Link (if applicable)

Testing Plan

  • Explanation of why no additional tests are needed
  • Unit Tests (JS and/or Python)
  • E2E Tests
  • Any manual testing needed?

Contribution License Agreement

By submitting this pull request you agree that all contributions to this project are made under the Apache 2.0 license.

lukasmasuch and others added 30 commits January 19, 2025 13:31
## Describe your changes

Clean up old reboot global scss files. Some of the still relevant
stylings are moved into `globalStyles` to be cleaned up in subsequent
PRs.

## Testing Plan

- No logical changes -> no tests required. 

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
Resolve snapshot failure for `st_pydeck_chart_select_test` that has started to fail on `develop` and other PRs
## Describe your changes

Fix a regression that removed showing the pointer cursor on hovering
buttons.

## Testing Plan

- Added e2e test.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…streamlit#9494)

## Describe your changes

- Convert many components to functional
- Components that were straight applications of `useBasicWidgetState`:
      - `st.time_input`
      - `st.date_input`
      - `st.color_picker`
      - `st.selectbox`
- Components that require an extra "commit" step to save values to the
state:
      - `st.text_input`
      - `st.text_area`
  - Components that have a "commit" step and other complexities:
      - `st.slider` / `st.select_slider`
- Rename `setValueWSource` to `setValueWithSource`
- Move some usage of `FormClearHelper` to `useFormClearHelper`:
`st.number_input`, `st.dataframe`, `st.button_group`
- Clean up `st.number_input` a little
- Change `st.slider` algorithm

## GitHub Issue Link (if applicable)

## Testing Plan

- ~~Explanation of why no additional tests are needed~~
- [x] Unit Tests (JS and/or Python)
- [x] E2E Tests
- Any manual testing needed?
  - Yes! Would love tests of:
    - All widgets above + session state
- All widgets above + developer changes some parameters in the source
code

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

- Adds `make update-snapshots` command to update the local snapshots
based on the latest completed CI run.
- Changes the behavior of snapshot testing to only fail after the full
test has run through on a snapshot mismatch. This makes it easier to
update snapshots of tests that contain multiple snapshot asserts.

## Testing Plan

- Only adds dev-related tooling.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

In streamlit#9494 a dynamic way was
added to calculate the slider labels. It looks like the added snapshot
tests are flaky (on Firefox). It looks like the pixel values can have a
few decimal values which seems to shift the label slightly.

## GitHub Issue Link (if applicable)

## Testing Plan

- Fix flaky tests, so change is covered by them.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…t#9738)

Bumps
[http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware)
from 2.0.6 to 2.0.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chimurai/http-proxy-middleware/releases">http-proxy-middleware's
releases</a>.</em></p>
<blockquote>
<h2>v2.0.7</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7">https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7</a></p>
<h2>v2.0.7-beta.1</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7-beta.0...v2.0.7-beta.1">https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7-beta.0...v2.0.7-beta.1</a></p>
<h2>v2.0.7-beta.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7-beta.0">https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7-beta.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md">http-proxy-middleware's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/chimurai/http-proxy-middleware/releases/tag/v2.0.7">v2.0.7</a></h2>
<ul>
<li>ci(github actions): add publish.yml</li>
<li>fix(filter): handle errors</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chimurai/http-proxy-middleware/commit/1e9233909839962bb3c1980848ad499b4757a71d"><code>1e92339</code></a>
ci(github-actions): fix npm tag</li>
<li><a
href="https://github.com/chimurai/http-proxy-middleware/commit/90afb7c9a658b32cc8fe08950bd0926d3bb512c1"><code>90afb7c</code></a>
chore(package): v2.0.7</li>
<li><a
href="https://github.com/chimurai/http-proxy-middleware/commit/0b4274e8cc9e9a2c5a06f35fbf456ccfcebc55a5"><code>0b4274e</code></a>
fix(filter): handle errors</li>
<li><a
href="https://github.com/chimurai/http-proxy-middleware/commit/1bd6dd578b1326ed7979c301e3f8eb0f228f5b6f"><code>1bd6dd5</code></a>
ci(github actions): add publish.yml</li>
<li>See full diff in <a
href="https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=http-proxy-middleware&package-manager=npm_and_yarn&previous-version=2.0.6&new-version=2.0.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/streamlit/streamlit/network/alerts).

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Describe your changes

This PR blocks the use of `eval` in a browser environment. Please see
[this](https://docs.google.com/document/d/1g-fczG7eV5CIIUDd5pnwvGkUn-SLf2vMZeBk9qj1Yk4/)
spec for more info on why we need to remove it.

This PR adds 2 packages:
[patch-package](https://www.npmjs.com/package/patch-package) and
[postinstall-postinstall](https://www.npmjs.com/package/postinstall-postinstall).
The first one is used to patch `@protobufjs/inquire` which includes the
`eval` (see protobufjs/protobuf.js#997 and
protobufjs/protobuf.js#1548), and the second one
is used to call `postinstall` on `yarn remove` as Yarn v1 only calls it
on `yarn install` and `yarn add`.

## GitHub Issue Link (if applicable)

[SNOW-1554237](https://snowflakecomputing.atlassian.net/browse/SNOW-1554237)

## Testing Plan

- No tests required as there are no implementation changes.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
Updates the major pin of Pillow to allow v11.
## Describe your changes

Migrate the StreamlitMarkdown component from class-based to functional.

## Testing Plan

- No logical changes, no tests required.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…treamlit#9697)

## Describe your changes

- In some of my previous modernization PRs, I accidentally omitted a
`React.memo` call for components that were previously using
`PureComponent`
- This PR puts `memo` calls where they should be to match prior
behavior.
- See the [React
Docs](https://react.dev/reference/react/PureComponent#alternatives) on
this

## GitHub Issue Link (if applicable)

## Testing Plan

- Explanation of why no additional tests are needed ✅
  - Existing tests cover this
- Unit Tests (JS and/or Python)
- E2E Tests
- Any manual testing needed?

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

- Modernizes `SettingsDialog` and its tests
- There should be no functional changes, just a refactor onto modern
React patterns

## GitHub Issue Link (if applicable)

## Testing Plan

- Explanation of why no additional tests are needed
- Unit Tests (JS and/or Python)
- E2E Tests
- Any manual testing needed?

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

The local storage in an Android WebView is only available when accessed
via `window.localStorage` and not `localStorage` directly (see
[here](https://stackoverflow.com/questions/5822256/error-web-console-uncaught-typeerror-cannot-call-method-getitem-of-null-at-h)).
This PR makes sure that `window.localStorage` is used everywhere.

This also adds a lint rule to prevent the usage of localStorage.

## GitHub Issue Link (if applicable)

- Closes: streamlit#9740

## Testing Plan

- No logical changes and we cannot test usage of Android WebView easily.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Migrate the countdown component from class-based to functional. 

## Testing Plan

- No logical changes, no tests required.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Lukas Masuch <[email protected]>
…#9698)

## Describe your changes

## GitHub Issue Link (if applicable)
Close streamlit#9682

## Testing Plan
Manual tests on frontend

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Karen Javadyan <[email protected]>
## Describe your changes
- update Streamlit logo
- update the dialog padding

## GitHub Issue Link (if applicable)

## Testing Plan

- Explanation of why no additional tests are needed
- Unit Tests (JS and/or Python)
- E2E Tests
- Any manual testing needed?

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

The running man animation appears while the script re-run is being
performed and for re-runs that complete quickly it introduces a flicker
and creates the perception of a longer wait. This PR introduces a delay
when showing the running man animation.

## GitHub Issue Link (if applicable)

## Testing Plan
- Unit Tests (one added to confirm not visible without delay, plus
coverage by existing running man tests)
- Manual testing by PM and Engineer to confirm expected visual
behaviour.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
Final feature PR to execute the (soft) transition of our metrics provider
…t in User Settings (streamlit#9723)

## Describe your changes

Update:
In this update, we revamped the `preferredLayouts` state in `App.tsx`
(previously `pageLayouts`) and fixed a number of issues with
1. apps flickering (when not calling `set_page_config`) 
2. apps having fragments rerunning
3. wide mode in User Settings

Here's a breakdown of the implementation by functions/files:
1. `handlePageConfigChanged` & `saveSetting`: `set_page_config` and User
Settings panel are the 2 only places that could change the layout. As a
result, we save the layout value to `preferredLayouts` in these 2
handlers
2. `handleNewSession` (not changed): For every rerun, we apply
previously saved `preferredLayouts` of the corresponding page. If none
matches, apply `CENTERED`
3. `handleNavigation`: If we get a new page script hash from navigation
which has never been initialized in `preferredLayouts`, we carry over
the layout from previous page for the new one.

--

~~We are seeing an unexpected behavior such that when an MPA page
containing fragments reruns, the page layout would change to centered.
This is an [issue reported in our
forum](https://discuss.streamlit.io/t/bad-setin-index-issue-with-using-fragments-that-do-not-render-anything-within-multipage-app/82675/9?u=raethlein)
flagged by @raethlein. Upon investigation, we have identified that the
fix in streamlit#9479 introduced this behavior change.~~

~~The root cause is that after a triggered rerun the page script hash
changes, causing the `pageLayouts` object state not recognizing the new
hash value and assigning the default/centered layout.
Our proposed fix here is to only perform layout update when there is no
fragment running.~~

~~I also added new e2e test cases with fragments to verify the fix.~~

## GitHub Issue Link (if applicable)
[Post in discuss
forum](https://discuss.streamlit.io/t/bad-setin-index-issue-with-using-fragments-that-do-not-render-anything-within-multipage-app/82675?u=raethlein)

## Testing Plan

- E2E Tests: new test case in MPAv2 that mocks fragment rerunning

### Manually testing app reported in forum
#### Before


https://github.com/user-attachments/assets/41c3f629-5f69-42c3-9e5f-e0fec9d1bff3

#### After


https://github.com/user-attachments/assets/77de515e-2e89-47d4-b49d-c03126d61f41


---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

This PR:
- removes the old `FullScreenWrapper`
- changes the `withFullScreenWrapper` to instead use the newly created
`ElementFullscreenWrapper`
- brings fullscreen toolbar functionality and standardizes pattern
across `DeckGIJsonChart`, `ArrowVegaLiteChart`, `ImageList`,
`PlotlyChart`, `DataFrame`

![Kapture 2024-10-23 at 13 44
12](https://github.com/user-attachments/assets/47bba816-0ae0-4dca-8814-d370aab71cb1)


## Testing Plan

automated tests updated

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…9706)

## Describe your changes

- `st.date_input` now understands the user's current locale and sets the
start of the week based on it.

## GitHub Issue Link (if applicable)

Closes streamlit#5215 

## Testing Plan

- Explanation of why no additional tests are needed
- Unit Tests (JS and/or Python) ✅
- E2E Tests ✅
- Any manual testing needed?

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
There remain some issues with the layout for MPA, so we are reverting
the change for release.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

We amend the call to remove the slash at the end if necessary. However,
paths with double slashes `//my-path` create an invalid redirect that
can cause security issues. This change prevents the double slash from
matching with this route.

## GitHub Issue Link (if applicable)
closes streamlit#9690

## Testing Plan

- Updated Unit Tests
- Verified manually that redirect works as needed and fails with a
double slash (and with a URL encoded double slash)

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Applies two additional improvements to the update snapshot script:

1. Asks for a personal access token if it cannot be auto-retrieved from
the credential manager
2. In case the latest workflow run is still in progress, the script
waits and requests the latest state until the workflow is completed.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

- Removes the deprecated `use_column_width` parameter from the hello
app.
- Cleans up a few smaller things in the hello app, such as lower-casing
filenames, using sentence casing in the descriptions, moving the order
of demos, and cleaning up the code. I want to do a bigger pass on the
hello app in the future and add some new demos, but I thought I'd
quickly fix the obvious things for now.

## GitHub Issue Link (if applicable)

## Testing Plan

Hello app is already covered by e2e tests. 

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Johannes Rieke <[email protected]>
Co-authored-by: lukasmasuch <[email protected]>
…#9764)

## Describe your changes

Fix the update snapshot test to wait for the correct status (failure
instead of success).

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

`lib/streamlit/elements/image.py` contained a bunch of utils functions
that were imported in other files, which caused cyclic imports in streamlit#9711.
This PR moves all of these functions into
`lib/streamlit/elements/lib/image_utils.py` and makes all other files
import directly from there.

Unfortunately, this PR didn't remove all cyclic imports. But it's still
worth merging this to clean up our codebase a bit more.

## GitHub Issue Link (if applicable)

Just a refactor, no new functionality or tests added. 

## Testing Plan

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Johannes Rieke <[email protected]>
## Describe your changes
Docstring updates for release 1.40.0.
* Added `st.pills`
* Added `st.segmented_control`
* Updated `st.text`
* Update `st.image` (width)
* Added examples for `st.navigation`
* Updated `st.markdown` and label descriptions: (`:streamlit:`, arrows,
inline images)
* Cleaned up some parameter descriptions for consistency


## Testing Plan
None. Docstrings only.

---

**Contribution License Agreement**
By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Cleans up our globalStyles.ts file by removing old & unused styles. This
also refactors our markdown test and fixes audio input to use the link
color defined in the theme instead of primary.

## Testing Plan

- Update markdown e2e test

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
lukasmasuch and others added 29 commits January 19, 2025 13:34
…it#10123)

## Describe your changes

This PR simplifies the arrow handling logic by renaming variables and
functions to more descriptive names. This also adds a variety of code
comments to make it easier to understand the logic.

To simplify reviewing, this PR does not apply any logical changes.

## Testing Plan

- No logical or visual changes - no new tests required.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

- Fixes a name collision with existing `playwright-e2e-tests` job

## GitHub Issue Link (if applicable)

## Testing Plan

- This is a workflow change

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

- Adds some more Playwright perf tests for some targeted areas in our
application so we can use them as baselines moving forward

## GitHub Issue Link (if applicable)

## Testing Plan

- This adds new performance tests

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
)

## Describe your changes

These changes are needed for the public notebooks project and
accomplishes two main things:

1. Introduces `ForwardMsgList` allowing us to store all of the protobuf
messages as 1 protobuf message.
2. Adds a new lifecycle method that if set, will be called with the
message before it is enqueued.

But Nico! Why not utilize the newly added `ForwardMsgList` and avoid
this base64 tomfoolery? Great question! It boils down wanting to be able
to write the message as its enqueued. Why? For starters, it simplifies
the code a bit to be able to just append these base64 lines, but more
importantly, as we're recording these protobufs, we're watching this
file and waiting for it to stop getting updates and using that to
determine that the app is "done" rendering.


## Testing Plan
Added a unit test for this new method.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

We use a set of all existing emojis to validate emoji usage across
various elements. This collection needs routine updates whenever new
emojis are released.

This PR also includes a small fix to get the `update_emojis.py` script
running again with the latest version of `emoji` library.

Emojis before update: 5034
Emojis after update:  5042

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…t#10147)

## Describe your changes

We stopped raising
a RuntimeError when a fragment with a specified id cannot be found. This
solves the original issue in
streamlit#9921, but surfaced a
different issue where the dialog did not always close when the button in
the dialog was clicked in fast succession.

The reason for this is that in app_session, a fragment run might create
a new ScriptRunner when the current ScriptRunner is in state STOPPED
is false and the new ScriptRunner is created). This will lead to all
events from the previous script runner being ignored.
When the full app rerun ScriptRunner is done (STOPPED) but its events
are not processed before the new ScriptRunner is created, its finished
message is not sent to the frontend and no cleanup is happening.

## GitHub Issue Link (if applicable)

## Testing Plan

- Unit Tests (JS and/or Python)
- Add unit test to ensure that the scriptrunner is not requested if the
fragment does not even exist anymore
- E2E Tests
- The e2e test that was added in
streamlit#10132 _could_ catch this one
here, although it happens more rarely than the race condition tackled in
that PR

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Reuse the `DynamicButtonLabel` for pills & segmented control. Currently,
the usage of markdown in pills / segmented control is not limited ->
which isn't desired. Using `DynamicButtonLabel` applies the same limits
to the markdown as in all other button labels.

This also changes the starting emojis to be treated as icons instead of
text to have the same special icon spacing that we also have for emoji
icons on buttons.

## Testing Plan

- Only visual changes -> Update snapshots.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

This PR contains a mix of smaller refactorings across all components
that use arrow. It doesn't apply any behavioral or visual changes.

## Testing Plan

- Doesn't apply any behavioral or visual changes
- Added tests for new functions. 

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Lukas Masuch <[email protected]>
…streamlit#10133)

## Describe your changes

This PR activates the [flake8-logging-format
(G)](https://docs.astral.sh/ruff/rules/#flake8-logging-format-g) linting
rules from ruff to enforce better usage of the built-in logger. It also
moves all exceptions in logger output to `exc_info` which is the correct
way to handle exceptions via the built-in logger.

## Testing Plan

- No logical changes.
---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

We restricted protobuf due to issues in conda, but we have since
upgraded protobuf. We should have it mimic reality. For this, we should
try to not get involved and let the setup.py dictate. Assuming the Conda
build succeeds, then new versions should be better and we can undo the
check.

## Testing Plan

- Conda Build should pass

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Upgrade yarn to yarn berry. In order to do this we had to do the
following:
1. Support yarn licenses in our checker
2. Install packages in both directories and run scripts from the
specific directory
3. Fixes to enable yarn in GitHub Actions and whatnot.

## Testing Plan

- Tests should pass

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Adds `translate="no"` attribute for our uses of material icons to
prevent the icon text from translating and, thereby, prevent it from
breaking the display of the icon.

<img width="476" alt="image"
src="https://github.com/user-attachments/assets/7c50cca9-67c0-435c-b385-cc920df4acb2"
/>


## GitHub Issue Link (if applicable)

- Closes streamlit#10168

## Testing Plan

- Added unit tests
- Testing this e2e does not seem super easy.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…tures (streamlit#10141)

## Describe your changes

The `label_markdown` e2e test was quite annoying since it contains
hundreds of snapshots across various that required repeated updates for
unrelated changes.

This PR refactors this test and improves our capabilities of testing
markdown features by checking the underlying DOM elements instead of
relying on screenshots. It also adds a screenshot test to every
individual element test to check that the element correctly supports
markdown in labels.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…` to functional component (streamlit#10083)

## Describe your changes

Many of our widgets have dropdowns but they look slightly different.
This PR makes them look more consistent.

While I was at it, I also converted `BaseColorPicker` to a functional
component because I couldn't figure out how to fix some issues with
theming in the class-based component. The only things that changed in
the color picker are the injection of custom styles and the placement of
the popover, so I think doing the conversion at the same time shouldn't
be too confusing. But I can separate both changes if it's easier to
review.

| Before | After |
|----------|----------|
| ![CleanShot 2024-12-26 at 22 19
26](https://github.com/user-attachments/assets/8c7a4cc5-f169-4fbc-8256-8e9e8a39b5e8)
| ![CleanShot 2024-12-26 at 22 20
04](https://github.com/user-attachments/assets/fbb48ab0-8296-4632-9885-e9ec55b0402d)
|
| ![CleanShot 2024-12-26 at 22 20
37](https://github.com/user-attachments/assets/eb2d6172-d08c-4d54-9533-029197946c90)
| ![CleanShot 2024-12-26 at 22 20
57](https://github.com/user-attachments/assets/38fed40e-6582-4b52-a4e8-fc366b8cce92)
|
| ![CleanShot 2024-12-26 at 22 21
45](https://github.com/user-attachments/assets/f4f97485-c4c5-4137-9b72-3e8d2651aa0d)
| ![CleanShot 2024-12-26 at 22 22
21](https://github.com/user-attachments/assets/0b97eba6-9e1a-49f5-b4b6-122c01fff086)
|
| ![CleanShot 2024-12-26 at 22 24
24](https://github.com/user-attachments/assets/b3b3a6bd-8b27-439f-8cb9-44673196b3b5)
| ![CleanShot 2024-12-26 at 22 24
08](https://github.com/user-attachments/assets/9e390b46-7e30-464c-8320-d2c0d291835d)
|
| ![CleanShot 2024-12-26 at 22 24
55](https://github.com/user-attachments/assets/7c5212c6-7454-4554-9b1a-a76e33a321de)
| ![CleanShot 2025-01-13 at 01 10
48](https://github.com/user-attachments/assets/4679bd63-1965-4901-ae81-f1212069d277)
|

Note that the date input has a red border and is in the foreground when
focused (just like the other components), my screenshot tool somehow
removes that, though.


## GitHub Issue Link (if applicable)

Closes streamlit#8705 

## Testing Plan

- Updated snapshot tests for date input.
- I added a snapshot test for the dropdown of color picker since that
has a few customizations now.
- I realized we don't really have snapshot tests for the dropdown
elements of the other widgets. One problem is though that the snapshots
test only capture the content of the dropdown, not the shadow and
positioning around it. *Ideally*, we'd have some way to take a snapshot
with some additional padding around it but I'm not sure if it's worth
introducing that.
- Don't think it makes sense to have unit tests for such small styling
things.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Johannes Rieke <[email protected]>
## Describe your changes

Closes streamlit#10165

Fixes the printing layout of `st.logo`. Right now it shows on the side
(see streamlit#10165) but with this change it
will show on the top left and only on the first page.

This PR adds the Streamlit logo to the e2e version of the `hello_app`
test so that the logo printing is tested.

## GitHub Issue Link (if applicable)

## Testing Plan

- E2E Tests
- Add `st.logo` to the `hello_app` e2e test to ensure that printing is
working as expected

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

In preparation for adding the [react-refresh
rule](https://github.com/ArnaudBarre/eslint-plugin-react-refresh), this
PR splits up WebsocketConnection.tsx .

Further PRs are in the works for fixing other violations of this linter
rule and then adding the linter rule.

Note, this file should not break fast refresh, so the linting rule is a
false positive here, but I thought it could still be good to take the
opportunity to reduce the file size a bit.

## GitHub Issue Link (if applicable)

## Testing Plan

Does not change any functionality so this is covered by existing tests. 

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

- Bump min version of snowflake-connector to where the
connection-manager definitely existed
- Remove usage of private APIs and leverage the default connection
handling as documented in
https://docs.snowflake.cn/en/developer-guide/python-connector/python-connector-connect#setting-a-default-connection
- When using the `"snowflake"` connection, no `kwargs` are passed to
`snowflake.connector.connect` anymore to follow the [official Snowflake
documentation](https://docs.snowflake.cn/en/developer-guide/python-connector/python-connector-connect#setting-a-default-connection)

## GitHub Issue Link (if applicable)

## Testing Plan

- Explanation of why no additional tests are needed
- Unit Tests (JS and/or Python)
- E2E Tests
- Any manual testing needed?

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…condition. (streamlit#10148)

Add retry to watcher.util.path_modification_time to **try** and fix race
condition. I have no guarantee this fixes it, but from the error message
it seems right. And it doesn't hurt anyway.

## Describe your changes

I just added some retries around an `os.stat(path).st_mtime` that could
otherwise lead to a race condition:

![Screenshot 2025-01-08 at 23 16
28](https://github.com/user-attachments/assets/194cd007-d3a4-4dff-84b2-083438f511b4)

I think this race condition is more likely to happen when you have
tooling that runs on save. In my case, I have a linter/formatter that
fixes issues and saves the file again. So sometimes when we get to the
`os.stat(path).st_mtime` line the file is in the process of being
modified, leading to the error above.

BTW, as part of this work I also created two helper functions to do
retries in the watcher code, since retries can be tricky.


## GitHub Issue Link (if applicable)

## Testing Plan

- ~~Explanation of why no additional tests are needed~~
- Unit Tests (JS and/or Python): **None**. I am unable to reproduce the
original problem. But the watcher code is well-tested enough that I'm
confident this at least doesn't break anything.
- E2E Tests: **None**
- Any manual testing needed? **Yes**. Please try modifying your
Streamlit app on Mac, Linux, Windows, using different editors (VS Code,
PyCharm, etc). Even better if you can turn on auto-formatting plugins as
well.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Separates Pandas Styler handling in the frontend into a dedicated utils
module. This also extracts the logic around styled cells & headers from
the `getCell` Quiver method to separate raw data handling and handling
of styling information. Also changes `getCell` to only return actual
data cells and not column header names as well.

The changes in this PR do not change any visual or behavioral changes. 

## Testing Plan

- Added and updated unit tests. 
- Added additional e2e screenshot test for advanced pandas styler usage
with `st.table`

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…lit#10163)

## Describe your changes

Today, when `st.navigation` is present in an app, any [code using
`ProcessPoolExecutor`](https://discuss.streamlit.io/t/make-apps-faster-by-moving-heavy-computation-to-a-separate-process/68541#method-2-use-a-processpoolexecutor-5)
will throw an exception. Turns out this is because `ProcessPoolExecutor`
spins up a separate pure-Python process, and there's a bug that causes
`st.navigation` not to work in pure-Python mode (it requires a
ScriptRunContext).

This wasn't caught before because our pure-Python tests (`make
bare-execution-tests`) weren't actually running for scripts in
_subfolders_ of the main test folder.

...and when you run those previously-untested tests you discover
`st.page_link` _also_ doesn't work in pure-Python mode!

So this PR addresses all of the above:
1. Makes `st.navigation` and `st.page_link` work in pure-Python mode --
and therefore also when running inside a `ProcessPoolExecutor`
2. Makes `bare-execution-tests` test MPAv1 and MPAv2 code

## GitHub Issue Link (if applicable)

n/a

## Testing Plan

- ~~Explanation of why no additional tests are needed~~
- Unit Tests (JS and/or Python): ❌ 
- E2E Tests: ✅ 
- Any manual testing needed? ❌ 

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## MINOR CHANGES (1)
- Updated the logic of starting the server to prevent calling
`asyncio.run()` from a running event loop.

## Describe your changes
Refactored the server startup logic to ensure compatibility with both
existing and new event loops. This prevents the `RuntimeError`
encountered when `asyncio.run()` is called from a running event loop on
Python 3.10.16,

## GitHub Issue Link (if applicable)
No GitHub issue link available.

## Testing Plan
I would be grateful if someone could test the code using the existing
tests. The changes have been verified through manual testing.

- Explanation of why no additional tests are needed:
  The refactored code has been manually tested and works as expected.

- Unit Tests (JS and/or Python):
[@raethlein]: Added a Python unit test to ensure that `bootstrap.run`
works with and without an existing asyncio eventloop.

- E2E Tests:
  _None._

- Any manual testing needed?
Manual testing was performed to ensure the server starts correctly in
both new and existing event loops.

---


**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: raethlein <[email protected]>
## Describe your changes

This PR makes the usage of Pandas metadata in serialized Arrow tables
entirely optional. This means that our arrow-backed frontend components
(e.g. table, dataframe, vega lite) can work with raw arrow data that
wasn't processed by Pandas.

This PR also simplifies the Quiver API to a small number of public
methods:
- `columnNames`: Matrix of column names of the index- & data-columns.
- `columnTypes`: List of column types for every index- & data-column
- `dimensions`: Dimensions of the DataFrame
- `getCell`: Return a single cell from an index- or data-column.
- `hash`: A hash that identifies the underlying data.
- `styler`: Pandas Styler data.
- `addRows`: Add the contents of another table to this table.

## GitHub Issue Link (if applicable)

- Closes streamlit#5606

## Testing Plan

- Added usage of a raw pyarrow table and array to data mocks. 
- Update some snapshots with expected changes.
- Update a huge number of unit tests in frontend to conform with the new
quiver interface and type information.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…lit#10195)

## Describe your changes

The recent refactorings made it possible to use categorical index
columns with `st.data_editor`. This PR removes the previous
restrictions.

## GitHub Issue Link (if applicable)

- Closes streamlit#9647

## Testing Plan

- Add e2e snapshot test and updated unit tests.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
…flow & update snapshots (streamlit#10198)

## Describe your changes

Fixes our CI min-version test by updating the lower bound of
typing-extensions to 0.4.4. This is required by one of our transitive
dependencies. More info about the root cause in this PR:
python-jsonschema/referencing#211

In addition to the issue with the dependency, there seems to be a second
independent issue that broke our CI pipeline:
The ubuntu version of our playwright e2e workflow got updated from 22 to
24 yesterday. This caused small changes in how the font is rendered,
which required most of our snapshots to be updated.


---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
## Describe your changes

Adds markdown support in `st.table` for data cells, row index, and
column headers. Note that unlike labels, this doesn't have any
restrictions on which markdown features can be used. I think table cells
are big enough to handle larger markdown elements (such as headers or
bullet lists) without looking ugly.

I also changed the empty value from `<NA>` to a non-breaking space (i.e.
an empty cell) because the smaller/greater symbols caused problems with
the markdown formatting. Note that for `st.dataframe` we use `None` for
empty values. In `st.table`, I think an empty cell looks nicer though,
because `st.table` is less geared towards exploring actual datasets
where it might be important to see the actual values and more towards
showing a small table of fixed values.

![CleanShot 2024-12-27 at 13 23
31](https://github.com/user-attachments/assets/7d45b45f-b86c-4d12-a858-0a1b9768609b)


## GitHub Issue Link (if applicable)

Closes streamlit#8785 

Should also leave a note on streamlit#6461, which asks for markdown on
`st.dataframe`.

## Testing Plan

- Added an e2e snapshot test for a table with various markdown features.
- I also tried adding JS unit tests but it's not super easy because we
need to add the encoded data for a Markdown table in
`frontend/lib/src/mocks/arrow/index.ts`. Not sure if it's worth doing
that given that the e2e test already covers everything.
- Note that a lot of snapshots changed because of the move from `<NA>`
to an empty cell.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Johannes Rieke <[email protected]>
Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.11 to 0.16.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/KaTeX/KaTeX/releases">katex's
releases</a>.</em></p>
<blockquote>
<h2>v0.16.21</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21">0.16.21</a>
(2025-01-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>escape \htmlData attribute name (<a
href="https://github.com/KaTeX/KaTeX/commit/57914ad91eff401357f44bf364b136d37eba04f8">57914ad</a>)
<ul>
<li>See security advisory <a
href="https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546">https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546</a></li>
</ul>
</li>
</ul>
<h2>v0.16.20</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20">0.16.20</a>
(2025-01-12)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>\providecommand does not overwrite existing macro (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4000">#4000</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/6d30fe47b06f9da9b836fe518d5cbbecf6a6a3a1">6d30fe4</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3928">#3928</a></li>
</ul>
<h2>v0.16.19</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19">0.16.19</a>
(2024-12-29)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>types:</strong> improve <code>strict</code> function type
(<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4009">#4009</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/4228b4eb529b8e35def66cc6e4fa467383b98c86">4228b4e</a>)</li>
</ul>
<h2>v0.16.18</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.17...v0.16.18">0.16.18</a>
(2024-12-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Actually publish TypeScript type definitions (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4008">#4008</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/629b87354fdfc04a3769f09b69f6bbadebcb9ae8">629b873</a>)</li>
</ul>
<h2>v0.16.17</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.16...v0.16.17">0.16.17</a>
(2024-12-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>MathML combines multidigit numbers with sup/subscript, comma
separators, and multicharacter text when outputting to DOM (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3999">#3999</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/7d79e220f465c42d4334dc95f1c41e333667e168">7d79e22</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3995">#3995</a></li>
</ul>
<h2>v0.16.16</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.15...v0.16.16">0.16.16</a>
(2024-12-17)</h2>
<h3>Features</h3>
<ul>
<li>ESM exports, TypeScript types (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3992">#3992</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/ea9c173a0de953b49b2ce5d131e88b785f5dffa1">ea9c173</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md">katex's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21">0.16.21</a>
(2025-01-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>escape \htmlData attribute name (<a
href="https://github.com/KaTeX/KaTeX/commit/57914ad91eff401357f44bf364b136d37eba04f8">57914ad</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20">0.16.20</a>
(2025-01-12)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>\providecommand does not overwrite existing macro (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4000">#4000</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/6d30fe47b06f9da9b836fe518d5cbbecf6a6a3a1">6d30fe4</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3928">#3928</a></li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19">0.16.19</a>
(2024-12-29)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>types:</strong> improve <code>strict</code> function type
(<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4009">#4009</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/4228b4eb529b8e35def66cc6e4fa467383b98c86">4228b4e</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.17...v0.16.18">0.16.18</a>
(2024-12-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Actually publish TypeScript type definitions (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4008">#4008</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/629b87354fdfc04a3769f09b69f6bbadebcb9ae8">629b873</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.16...v0.16.17">0.16.17</a>
(2024-12-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>MathML combines multidigit numbers with sup/subscript, comma
separators, and multicharacter text when outputting to DOM (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3999">#3999</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/7d79e220f465c42d4334dc95f1c41e333667e168">7d79e22</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3995">#3995</a></li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.15...v0.16.16">0.16.16</a>
(2024-12-17)</h2>
<h3>Features</h3>
<ul>
<li>ESM exports, TypeScript types (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3992">#3992</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/ea9c173a0de953b49b2ce5d131e88b785f5dffa1">ea9c173</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.14...v0.16.15">0.16.15</a>
(2024-12-09)</h2>
<h3>Features</h3>
<ul>
<li>italic sans-serif in math mode via <code>\mathsfit</code> command
(<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3998">#3998</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/22189018b63c9312ec4ad126804514a7390d60b5">2218901</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.13...v0.16.14">0.16.14</a>
(2024-12-08)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/923f2aa15692d06ef77051bfb018c17339ef1ab4"><code>923f2aa</code></a>
chore(release): 0.16.21 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/57914ad91eff401357f44bf364b136d37eba04f8"><code>57914ad</code></a>
fix: escape \htmlData attribute name</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/ff289955e81aab89086eef09254cbf88573d415c"><code>ff28995</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/28a0bf51139969e9dc52085b72024e0c5447cfbe"><code>28a0bf5</code></a>
chore(release): 0.16.20 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/6d30fe47b06f9da9b836fe518d5cbbecf6a6a3a1"><code>6d30fe4</code></a>
fix: \providecommand does not overwrite existing macro (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4000">#4000</a>)</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/8f47dba453aa78e03878288fdd5841cfdb4ffb8d"><code>8f47dba</code></a>
chore(deps): update actions/upload-artifact to v4 (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4012">#4012</a>)</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/88b5056bdc534016d00bbb581a36c4a14d3b0651"><code>88b5056</code></a>
chore(release): 0.16.19 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/4228b4eb529b8e35def66cc6e4fa467383b98c86"><code>4228b4e</code></a>
fix(types): improve <code>strict</code> function type (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4009">#4009</a>)</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/f93464644419ef0057cc5b314f81e439f1242935"><code>f934646</code></a>
chore(release): 0.16.18 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/629b87354fdfc04a3769f09b69f6bbadebcb9ae8"><code>629b873</code></a>
fix: Actually publish TypeScript type definitions (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4008">#4008</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.11...v0.16.21">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=katex&package-manager=npm_and_yarn&previous-version=0.16.11&new-version=0.16.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/streamlit/streamlit/network/alerts).

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.11 to 0.16.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/KaTeX/KaTeX/releases">katex's
releases</a>.</em></p>
<blockquote>
<h2>v0.16.21</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21">0.16.21</a>
(2025-01-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>escape \htmlData attribute name (<a
href="https://github.com/KaTeX/KaTeX/commit/57914ad91eff401357f44bf364b136d37eba04f8">57914ad</a>)
<ul>
<li>See security advisory <a
href="https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546">https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546</a></li>
</ul>
</li>
</ul>
<h2>v0.16.20</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20">0.16.20</a>
(2025-01-12)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>\providecommand does not overwrite existing macro (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4000">#4000</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/6d30fe47b06f9da9b836fe518d5cbbecf6a6a3a1">6d30fe4</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3928">#3928</a></li>
</ul>
<h2>v0.16.19</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19">0.16.19</a>
(2024-12-29)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>types:</strong> improve <code>strict</code> function type
(<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4009">#4009</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/4228b4eb529b8e35def66cc6e4fa467383b98c86">4228b4e</a>)</li>
</ul>
<h2>v0.16.18</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.17...v0.16.18">0.16.18</a>
(2024-12-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Actually publish TypeScript type definitions (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4008">#4008</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/629b87354fdfc04a3769f09b69f6bbadebcb9ae8">629b873</a>)</li>
</ul>
<h2>v0.16.17</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.16...v0.16.17">0.16.17</a>
(2024-12-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>MathML combines multidigit numbers with sup/subscript, comma
separators, and multicharacter text when outputting to DOM (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3999">#3999</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/7d79e220f465c42d4334dc95f1c41e333667e168">7d79e22</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3995">#3995</a></li>
</ul>
<h2>v0.16.16</h2>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.15...v0.16.16">0.16.16</a>
(2024-12-17)</h2>
<h3>Features</h3>
<ul>
<li>ESM exports, TypeScript types (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3992">#3992</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/ea9c173a0de953b49b2ce5d131e88b785f5dffa1">ea9c173</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md">katex's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21">0.16.21</a>
(2025-01-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>escape \htmlData attribute name (<a
href="https://github.com/KaTeX/KaTeX/commit/57914ad91eff401357f44bf364b136d37eba04f8">57914ad</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20">0.16.20</a>
(2025-01-12)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>\providecommand does not overwrite existing macro (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4000">#4000</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/6d30fe47b06f9da9b836fe518d5cbbecf6a6a3a1">6d30fe4</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3928">#3928</a></li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19">0.16.19</a>
(2024-12-29)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>types:</strong> improve <code>strict</code> function type
(<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4009">#4009</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/4228b4eb529b8e35def66cc6e4fa467383b98c86">4228b4e</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.17...v0.16.18">0.16.18</a>
(2024-12-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Actually publish TypeScript type definitions (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4008">#4008</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/629b87354fdfc04a3769f09b69f6bbadebcb9ae8">629b873</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.16...v0.16.17">0.16.17</a>
(2024-12-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>MathML combines multidigit numbers with sup/subscript, comma
separators, and multicharacter text when outputting to DOM (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3999">#3999</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/7d79e220f465c42d4334dc95f1c41e333667e168">7d79e22</a>),
closes <a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3995">#3995</a></li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.15...v0.16.16">0.16.16</a>
(2024-12-17)</h2>
<h3>Features</h3>
<ul>
<li>ESM exports, TypeScript types (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3992">#3992</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/ea9c173a0de953b49b2ce5d131e88b785f5dffa1">ea9c173</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.14...v0.16.15">0.16.15</a>
(2024-12-09)</h2>
<h3>Features</h3>
<ul>
<li>italic sans-serif in math mode via <code>\mathsfit</code> command
(<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/3998">#3998</a>)
(<a
href="https://github.com/KaTeX/KaTeX/commit/22189018b63c9312ec4ad126804514a7390d60b5">2218901</a>)</li>
</ul>
<h2><a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.13...v0.16.14">0.16.14</a>
(2024-12-08)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/923f2aa15692d06ef77051bfb018c17339ef1ab4"><code>923f2aa</code></a>
chore(release): 0.16.21 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/57914ad91eff401357f44bf364b136d37eba04f8"><code>57914ad</code></a>
fix: escape \htmlData attribute name</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/ff289955e81aab89086eef09254cbf88573d415c"><code>ff28995</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/28a0bf51139969e9dc52085b72024e0c5447cfbe"><code>28a0bf5</code></a>
chore(release): 0.16.20 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/6d30fe47b06f9da9b836fe518d5cbbecf6a6a3a1"><code>6d30fe4</code></a>
fix: \providecommand does not overwrite existing macro (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4000">#4000</a>)</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/8f47dba453aa78e03878288fdd5841cfdb4ffb8d"><code>8f47dba</code></a>
chore(deps): update actions/upload-artifact to v4 (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4012">#4012</a>)</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/88b5056bdc534016d00bbb581a36c4a14d3b0651"><code>88b5056</code></a>
chore(release): 0.16.19 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/4228b4eb529b8e35def66cc6e4fa467383b98c86"><code>4228b4e</code></a>
fix(types): improve <code>strict</code> function type (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4009">#4009</a>)</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/f93464644419ef0057cc5b314f81e439f1242935"><code>f934646</code></a>
chore(release): 0.16.18 [ci skip]</li>
<li><a
href="https://github.com/KaTeX/KaTeX/commit/629b87354fdfc04a3769f09b69f6bbadebcb9ae8"><code>629b873</code></a>
fix: Actually publish TypeScript type definitions (<a
href="https://redirect.github.com/KaTeX/KaTeX/issues/4008">#4008</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/KaTeX/KaTeX/compare/v0.16.11...v0.16.21">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=katex&package-manager=npm_and_yarn&previous-version=0.16.11&new-version=0.16.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/streamlit/streamlit/network/alerts).

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…eamlit#10073)

## Describe your changes

When you click on a selectbox (or multiselect), scroll in the dropdown,
then close it and click on the selectbox again, the dropdown opens at
the top position. This can be annoying if the dropdown is large. With
this PR, the dropdown will open at the same position where it was
previously closed. Also, when the dropdown opens for the first time, it
opens at the position of the selected default value.

**Before:**


https://github.com/user-attachments/assets/7b361fb1-0e0d-47db-b627-5391455a2228


**After:**


https://github.com/user-attachments/assets/69ca577a-d78e-43fb-8a26-11ec56003638


## GitHub Issue Link (if applicable)

Closes streamlit#4901

## Testing Plan

- Added a JS unit test on the `Selectbox` component that simulates
scrolling, closes the dropdown, and checks that it opens at the same
position.
- Did not add an e2e test because it would basically do the same thing
and that feels a bit overkill. But I can add e2e test for `st.selectbox`
and `st.multiselect` if we want to have them.

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.

---------

Co-authored-by: Johannes Rieke <[email protected]>
@edegp edegp merged commit fea758a into develop Jan 19, 2025
9 of 27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.