Releases: plotly/dash
Releases · plotly/dash
Dash v1.12.0
Dash and Dash-Renderer
Added
- #1228 Adds control over firing callbacks on page (or layout chunk) load. Individual callbacks can have their initial calls disabled in their definition
@app.callback(..., prevent_initial_call=True)
and similar forapp.clientside_callback
. The app-wide default can also be changed withapp=Dash(prevent_initial_callbacks=True)
, then individual callbacks may disable this behavior. - #1201 New attribute
app.validation_layout
allows you to create a multi-page app withoutsuppress_callback_exceptions=True
or layout function tricks. Set this to a component layout containing the superset of all IDs on all pages in your app. - #1078 Permit usage of arbitrary file extensions for assets within component libraries
Fixed
- #1224 Fixes #1223, a very specific situation in which initial callbacks will not fire.
- #1220 Fixes #1216, a set of related issues about pattern-matching callbacks with
ALL
wildcards in theirOutput
which would fail if no components matched the pattern. - #1212 Fixes #1200 - prior to Dash 1.11, if none of the inputs to a callback were on the page, it was not an error. This was, and is now again, treated as though the callback raised PreventUpdate. The one exception to this is with pattern-matching callbacks, when every Input uses a multi-value wildcard (ALL or ALLSMALLER), and every Output is on the page. In that case the callback fires as usual.
- #1201 Fixes #1193 - prior to Dash 1.11, you could use
flask.has_request_context() == False
inside anapp.layout
function to provide a special layout containing all IDs for validation purposes in a multi-page app. Dash 1.11 broke this when we moved most of this validation into the renderer. This change makes it work again.
Dash-Core-Components
Changed
- #793 Added title key (i.e. HTML
title
attribute) to option dicts indcc.Dropdown
options[]
list property.
Fixed
- #792 Improved the robustness of
dcc.Store
components, fixing #456 whereby persistent storage could become corrupted, and fixing lifecycle issues that prevented addingStore
components to the page after initial loading. - #790 Fixed bug where the dcc.Dropdown dropdown was hidden by the dash_table.DataTable fixed rows and columns.
Updated
- #800
- Upgraded plotly.js to 1.54.1
- Feature release of Plotly.js 1.54.0 which:
- Introduces new drag modes "drawline", "drawrect", "drawcircle", "drawopenpath", "drawclosedpath", adds optional modebar buttons for drawing & removing new shapes inside cartesian subplots, adds newshape and activeshape attributes to layout, and adds editable and fillrule attributes to layout.shapes#4775
- Add angle and allowoverlap attributes to marker of scattermapbox traces#4575, #4794
- Also contains various other fixes
Dash-Table
Added
- #729 Improve conditional styling
style_data_conditional
: Add support forrow_index
andcolumn_id
array of valuesstyle_header_conditional
: Add support forheader_index
andcolumn_id
array of valuesstyle_filter_conditional
: Add support forcolumn_id
array of valuesstyle_cell_conditional
: Add support forcolumn_id
array of valuesstyle_data_conditional
: Add new conditionsstate: 'active'|'selected'
to customize selected and active cell styles
Fixed
- #722 Fix a bug where row height is misaligned when using fixed_columns and/or fixed_rows
- #728 Fix copy/paste on readonly cells
- #724 Fix
active_cell
docstring: clarify optional nature of therow_id
nested prop - #732 Fix a bug where opening a dropdown scrolled the table down its last row
- #731 Fix a bug where
data=None
andcolumns=None
caused the table to throw an error - #766 Sanitize table
id
for stylesheet injection (fixes usage with Pattern-Matching callbacks)
Changed
- #758 Improve error message for invalid filter queries
Dash v1.11.0
Dash and Dash-Renderer
Added
- #1103 Pattern-matching IDs and callbacks. Component IDs can be dictionaries, and callbacks can reference patterns of components, using three different wildcards:
ALL
,MATCH
, andALLSMALLER
, available fromdash.dependencies
. This lets you create components on demand, and have callbacks respond to any and all of them. To help with this,dash.callback_context
gets three new entries:outputs_list
,inputs_list
, andstates_list
, which contain all the ids, properties, and except for the outputs, the property values from all matched components. - #1103
dash.testing
option--pause
: after opening the dash app in a test, will invokepdb
for live debugging of both Javascript and Python. Use with a single test case likepytest -k cbwc001 --pause
.
Changed
- #1103 Multiple changes to the callback pipeline:
dash.callback_context.triggered
now does NOT reflect any initial values, and DOES reflect EVERY value which has been changed either by activity in the app or as a result of a previous callback. That means that the initial call of a callback with no prerequisite callbacks will list nothing as triggering. For backward compatibility, we continue to provide a length-1 list fortriggered
, but itsid
andproperty
are blank strings, andbool(triggered)
isFalse
.- A user interaction which returns the same property value as was previously present will not trigger the component to re-render, nor trigger callbacks using that property as an input.
- Callback validation is now mostly done in the browser, rather than in Python. A few things - mostly type validation, like ensuring IDs are strings or dicts and properties are strings - are still done in Python, but most others, like ensuring outputs are unique, inputs and outputs don't overlap, and (if desired) that IDs are present in the layout, are done in the browser. This means you can define callbacks BEFORE the layout and still validate IDs to the layout; and while developing an app, most errors in callback definitions will not halt the app.
Fixed
- #1103 Fixed multiple bugs with chained callbacks either not triggering, inconsistently triggering, or triggering multiple times. This includes: #635, #832, #1053, #1071, and #1084. Also fixed #1105: async components that aren't rendered by the page (for example in a background Tab) would block the app from executing callbacks.
Dash-Core-Components
Changed
- #740 Keep components that are loading in the DOM, but not visible, as opposed to removing them entirely. This will ensure that the size of the component's container does not shrink or expand when the component goes into the loading state.
Fixed
- #740 Fixed bug in which mapbox
uirevision
was not behaving when inside adcc.Loading
component
Dash v1.10.0
Dash and Dash-Renderer
Added
- #1134 Allow
dash.run_server()
host and port parameters to be set with environment variables HOST & PORT, respectively
Changed
- #1145 Update from React 16.8.6 to 16.13.0
Fixed
- #1142 Persistence: Also persist 0, empty string etc
Dash-Core-Components
Changed
- #766 Update from React 16.8.6 to 16.13.0
- #768 Added title property to dcc.Link
- #776 Update dcc.Link to set href as children if children not defined. Makes href a required prop as well.
- #767 Updated dcc.Link to respond to click modifiers, and added a target prop.
- #774 Fixed dcc.Location firing callbacks for wrong property.
- 772 Modified dcc.Link to work with absolute paths if refresh=True.
Updated
- #784
- Feature release of Plotly.js 1.53.0 which contains:
Dash-Html-Components
Updated
- Update generated props
- Update generated R artifacts
Dash-Table
Changed
- #713 Update from React 16.8.6 to 16.13.0
Dash v1.9.0
Dash and Dash-Renderer
Fixed
- #1080 Handle case where dash fails to load when used inside an iframe with a sandbox attribute that only has allow-scripts
Dash-Core-Components
Changed
- #743 Location component now emits an event on URL path update from Link component
- #739 Async Slider and RangeSlider
- #729 Handle case where dcc fails to load when used inside an iframe with a sandbox attribute that only has allow-scripts
Fixed
- #730 Fixed bug in which input components with type
number
did not correctly update their values. - #731 Fixed bug where non-clearable dropdowns could still be cleared by typing backspace
Updated
Dash v1.8.0
Dash and Dash-Renderer
Added
- #1073 Two new functions to simplify usage handling URLs and pathnames:
app.get_relative_path
&app.trim_relative_path
.
These functions are particularly useful for apps deployed on Dash Enterprise where the apps served under a URL prefix (the app name) which is unlike apps served on localhost:8050.app.get_relative_path
returns a path with the config settingrequests_pathname_prefix
prefixed. Useapp.get_relative_path
anywhere you would provide a relative pathname, likedcc.Link(href=app.relative_path('/page-2'))
or even as an alternative toapp.get_asset_url
with e.g.html.Img(src=app.get_relative_path('/assets/logo.png'))
.app.trim_relative_path
a path withrequests_pathname_prefix
and leading & trailing
slashes stripped from it. Use this function in callbacks that deal withdcc.Location
pathname
routing.
Example usage:
app.layout = html.Div([ dcc.Location(id='url'), html.Div(id='content') ]) @app.callback(Output('content', 'children'), [Input('url', 'pathname')]) def display_content(path): page_name = app.strip_relative_path(path) if not page_name: # None or '' return html.Div([ html.Img(src=app.get_relative_path('/assets/logo.png')), dcc.Link(href=app.get_relative_path('/page-1')), dcc.Link(href=app.get_relative_path('/page-2')), ]) elif page_name == 'page-1': return chapters.page_1 if page_name == "page-2": return chapters.page_2
Changed
- #1035 Simplify our build process.
- #1074 Error messages when providing an incorrect property to a component have been improved: they now specify the component type, library, version, and ID (if available).
Fixed
- #1037 Fix no_update test to allow copies, such as those stored and retrieved from a cache.
Dash-Core-Components
Added
- #711 Added support for
dcc.Link
(dccLink) and nesteddcc.Markdown
(dccMarkdown) react components inside ofdcc.Markdown
- #706
- Added new
responsive
property that overrides the underlying Plotly.js graph responsiveness from Dash-land - Added responsiveness on graph parent element resize (previously only worked on window.resize)
- Added new
dash-graph--pending
class to dcc.Graph, present while resizing, (re-)rendering, loading
- Added new
Changed
- #723 Changed npm package content to allow source code inclusion from other projects
- #725 Improve async graph performance by parallelizing resource fetching instead of fetching sequentially
- #720
highlight.js
is now bundled into the package, and no longer sets thewindow.hljs
variable. Similarly to howplotly.js
is handled, it is overridden by a user-provided version if one exists.
Updated
- #732
- Upgraded plotly.js to 1.52.1
- Feature release 1.52.0 which contains:
- Patch release 1.52.1 containing several bug fixes.
- #706
- Upgraded plotly.js to 1.51.3
Dash-Table
Added
- #606 Add markdown support for table cells. Cells will be rendered as markdown if the column
presentation
is specified asmarkdown
.- Add highlight.js for syntax highlighting. If
window.hljs
is specified, that will be used for highlighting instead.
- Add highlight.js for syntax highlighting. If
Fixed
Dash v1.7.0
Dash and Dash-Renderer
Added
- #967 Add support for defining
clientside JavaScript callbacks via inline strings. - #1020 Allow
visit_and_snapshot
API indash.testing.browser
to stay on the page so you can run other checks.
Changed
- #1026 Better error message when you forget to wrap multiple
children
in an array, and they get passed to other props.
Fixed
- #1018 Fix the
dash.testing
stop API with process application runner in Python2. Usekill()
instead ofcommunicate()
to avoid hanging. - #1027 Fix bug with renderer callback lock never resolving with non-rendered async component using the asyncDecorator
Dash-Core-Components
Updated
Changed
- #695 Improvements to Slider and RangeSlider
- Marks outside of the range specified by
min
andmax
are now omitted when the slider renders. - Padding is now dependent on the orientation (vertical or horizontal), and whether or not tooltips are always displayed.
- The whitespace is now preserved for
marks
labels.
- Marks outside of the range specified by
Added
- #695 Added new property
verticalHeight
to Slider and RangeSlider, to allow the user to specify the height (in px) of vertical sliders. This defaults to400
.
Dash v1.6.1
Dash
Fixed
- #1006 Fix IE11 / ES5 compatibility and validation issues
- #1006 Fix bug with renderer wrapper component TreeContainer to prevent useless re-renders
- #1001
- Fix and improve the
clear_input()
API indash.testing
, so it's more robust handling reactinput
. - make the
percy_snapshot()
API more robust, and the timeout ofwait_for_callbacks
(if set to True) will not fail the snapshot execution, but logged as potential error.
- Fix and improve the
Dash-Core-Components
Fixed
- #696 Fix IE11 compatibility issues and ES5 compatibility and validation
Changed
- #687 Use
start_date
,min_date_allowed
,end_date
, ormax_date_allowed
for the initial visible month if the value of the parameterinitial_visible_month
is not supplied.
Dash-Html-Components
Fixed
- #143 Fix IE11 compatibility issues and ES5 compatibility and validation
Dash-Table
Fixed
- #637 Fix multiple issues
- Fix IE11 compatibility issues and add ES5 compatibility and validation
- Fix a bug with
loading_state
being handled incorrectly, causing the table to steal focus
Dash v.1.6.0
Dash
Fixed
- #999 Fix fingerprint for component suites with
metadata
in version. - #983 Fix the assets loading issues when dashR application runner is handling with an app defined by string chunk.
Dash-Core-Components
Added
- #692 Async DatePickerSingle, DatePickerRange, Dropdown, Markdown, Upload components
Dash v1.5.1
Dash v1.5.0
Dash and Dash-Renderer
Added
- #964 Adds support for preventing updates in clientside functions.
- Reject all updates with
throw window.dash_clientside.PreventUpdate;
- Reject a single output by returning
window.dash_clientside.no_update
- Reject all updates with
- #899 Add support for async dependencies and components
- #973 Adds support for resource caching and adds a fallback caching mechanism through etag
Dash-Core-Components
Added
- #616 Async Graph and Plotly.js
Dash-Table
Changed
- #554 Async loading of
xlsx
library on export