Skip to content

Commit d8d3fd2

Browse files
authored
Merge branch 'dev' into off-circle
2 parents 16c41dc + d2e5bbe commit d8d3fd2

File tree

24 files changed

+358
-66
lines changed

24 files changed

+358
-66
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# These owners will be the default owners for everything in
22
# the repo. Unless a later match takes precedence
3-
* @T4rk1n @ndrezn @camdecoster
3+
* @T4rk1n @ndrezn @camdecoster @KoolADE85

CHANGELOG.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,20 @@
22
All notable changes to `dash` will be documented in this file.
33
This project adheres to [Semantic Versioning](https://semver.org/).
44

5-
## [UNRELEASED]
5+
## [4.1.0] - 2026-03-23
66

77
## Added
88
- [#3637](https://github.com/plotly/dash/pull/3637) Added `debounce` prop to `Dropdown`.
99

1010
## Fixed
1111
- [#3629](https://github.com/plotly/dash/pull/3629) Fix date pickers not showing date when initially rendered in a hidden container.
12+
- [#3660][(](https://github.com/plotly/dash/pull/3660)) Allow same date to be selected for both start and end in DatePickerRange components
13+
- [#3600][(](https://github.com/plotly/dash/pull/3600)) DatePicker support for the Moment.js `Y` year token
1214
- [#3627][(](https://github.com/plotly/dash/pull/3627)) Make dropdowns searchable wheen focused, without requiring to open them first
1315
- [#3656][(](https://github.com/plotly/dash/pull/3656)) Improved dropdown performance for large collections of options
14-
- [#3660][(](https://github.com/plotly/dash/pull/3660)) Allow same date to be selected for both start and end in DatePickerRange components
15-
16+
- [#3643][(](https://github.com/plotly/dash/pull/3643)) Fix multiselect dropdown with components as labels
17+
- [#3609][(](https://github.com/plotly/dash/pull/3609)) Add backward compat alias for _Wildcard
18+
- [#3672][(](https://github.com/plotly/dash/pull/3672)) Improve browser performance when app contains a large number of pattern matching callback callbacks. Exposes an api endpoint to fetch the latest computeGraph call.
1619

1720

1821
## [4.0.0] - 2026-02-03

components/dash-core-components/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/dash-core-components/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dash-core-components",
3-
"version": "4.0.0",
3+
"version": "4.1.0",
44
"description": "Core component suite for Dash",
55
"repository": {
66
"type": "git",

components/dash-core-components/src/utils/optionRendering.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export const OptionLabel: React.FC<OptionLabelProps> = ({
4949
<ExternalWrapper
5050
key={i}
5151
component={label}
52-
componentPath={[...ctx.componentPath, index, i]}
52+
componentPath={[...ctx.componentPath, String(value), i]}
5353
/>
5454
))}
5555
</>

components/dash-core-components/tests/integration/dropdown/test_a11y.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pytest
22
from dash import Dash, Input, Output
33
from dash.dcc import Dropdown
4-
from dash.html import Div, Label, P
4+
from dash.html import Div, Label, P, Span
55
from selenium.common.exceptions import TimeoutException
66
from selenium.webdriver.common.keys import Keys
77
from selenium.webdriver.common.action_chains import ActionChains
@@ -732,3 +732,40 @@ def is_visible(el):
732732
)
733733

734734
return all([is_visible(el) for el in elements])
735+
736+
737+
def test_a11y009_dropdown_component_labels_render_correctly(dash_duo):
738+
app = Dash(__name__)
739+
app.layout = Div(
740+
[
741+
Dropdown(
742+
options=[
743+
{"label": Span("red"), "value": "red"},
744+
{"label": Span("yellow"), "value": "yellow"},
745+
{"label": Span("blue"), "value": "blue"},
746+
],
747+
value=["red", "yellow", "blue"],
748+
id="components-label-dropdown",
749+
multi=True,
750+
),
751+
]
752+
)
753+
754+
dash_duo.start_server(app)
755+
756+
dash_duo.find_element("#components-label-dropdown").click()
757+
dash_duo.wait_for_element(".dash-dropdown-options")
758+
759+
# Click on the "yellow" option
760+
yellow_option = dash_duo.find_element(
761+
'.dash-dropdown-option:has(input[value="yellow"])'
762+
)
763+
yellow_option.click()
764+
765+
# After interaction, verify the options render correctly
766+
option_elements = dash_duo.find_elements(".dash-dropdown-option")
767+
rendered_labels = [el.text.strip() for el in option_elements]
768+
769+
assert rendered_labels == ["red", "yellow", "blue"]
770+
771+
assert dash_duo.get_logs() == []

components/dash-core-components/tests/integration/dropdown/test_clearable_false.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,13 @@ def update_value(val):
190190

191191
# Attempt to deselect all items. Everything should deselect until we get to
192192
# the last item which cannot be cleared.
193-
selected = dash_duo.find_elements(".dash-dropdown-options input[checked]")
194-
[el.click() for el in selected]
193+
# Click MTL option container
194+
mtl_option = dash_duo.find_element('.dash-dropdown-option:has(input[value="MTL"])')
195+
mtl_option.click()
196+
197+
# Click SF option container
198+
sf_option = dash_duo.find_element('.dash-dropdown-option:has(input[value="SF"])')
199+
sf_option.click()
195200

196201
assert dash_duo.find_element("#dropdown-value").text == "SF"
197202

components/dash-html-components/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/dash-html-components/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dash-html-components",
3-
"version": "4.0.0",
3+
"version": "4.1.0",
44
"description": "Vanilla HTML components for Dash",
55
"main": "lib/index.js",
66
"repository": {
@@ -58,6 +58,6 @@
5858
"/dash_html_components/*{.js,.map}"
5959
],
6060
"browserslist": [
61-
"last 10 years and not dead"
61+
"last 11 years and not dead"
6262
]
6363
}

components/dash-table/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)