-
Notifications
You must be signed in to change notification settings - Fork 2.2k
3.x Changelog
- 🔥 API Break – requires migration
⚠️ Warning – something to be aware of- ❌ Deprecation – stop using this bad thing
- 🌟 Awesome – check out this cool thing
- 👍 Nice – you're welcome
- 🔧 Tooling – build system changes
- 🔁 Rename – use the upgrade script
- 🆙 Upgrade – migration pro tips
Note: since we started using Lerna 3.x, packages are sometimes released without any real changes themselves, but instead because they depend on a package (like blueprint core) which has been changed since the last release. These kinds of "no change" releases are not explicitly listed below.
-
#5180 fix inadvertent breaking change in
ISelectProps
- Revert "[select] fix: mark items arrays as readonly where appropriate"
-
#5148 feat: make various component props
readonly
-
#5165 fix(
AsyncControllableInput
): handle compound composition events -
#5168 fix(
OverflowList
): improve spacer width check to account for CSS scaling -
#5158 fix: set
aria-hidden
for purely decorative icons in various components - #5146 fix: replace node_modules relative paths in sourcemaps with direct paths
-
#5172 chore: upgrade to TypeScript 4.6, replace
resize-observer-polyfill
with@juggle/resize-observer
- #5091 fix: change default max date to 6 months from now
- #5146 fix: replace node_modules relative paths in sourcemaps with direct paths
- #5172 chore: upgrade to TypeScript 4.6
- #5172 chore: upgrade to TypeScript 4.6
- #5146 fix: replace node_modules relative paths in sourcemaps with direct paths
-
#5171 fix: mark items arrays as
readonly
where appropriate - #5172 chore: upgrade to TypeScript 4.6
-
#5049 fix(
Table
,Table2
): set grid bleed >=numFrozenColumns
to fix column rendering when there are more than 3 frozen columns - #5146 fix: replace node_modules relative paths in sourcemaps with direct paths
- #5172 chore: upgrade to TypeScript 4.6
- #5146 fix: replace node_modules relative paths in sourcemaps with direct paths
- #5172 chore: upgrade to TypeScript 4.6
-
#5109 feat(
Popover
): add.bp3-popover-out-of-boundaries
class to popover when PopperJSoutOfBoundaries
prop is true
-
#5076 fix(
classes-constants
): ignore import/export statements, reducing false positives
-
#5075 feat: new icons "ship", "cargo-ship"
-
#5117 feat: new icon "target"
-
#5116 feat: new icons "clip", "add-clip"
-
#5109 feat(
Popover2
): add classes to popover based on PopperJS behavior:-
.bp3-popover-reference-hidden
when the reference element is not visible (scrolled off screen) -
.bp3-popper-escaped
when the popper escapes the reference element's boundaries
-
-
#5080 fix(
Popover2
): close properly when target focus lost
-
#5113 fix: vertical scroll bug when
ghostCells
enabled
-
#5031 feat(
FormGroup
): add support for "sub label" text with newsubLabel
prop -
#5066 fix(
Toaster
): disable invasive focus management viashouldReturnFocusOnClose={false}
-
#4982 fix(
Overlay
): fix scroll regression for popovers -
#4969 fix(
MultistepDialog
): improve appearance without title
-
#4971 fix(
Overlay
): less aggressiveenforceFocus
behavior
-
#4963 fix(
Overlay
): improve focus management
- #4958 feat(colors): add aliases for cerulean
-
#4888 fix(
Dialog
): set dialog headerz-index
to 0 -
#4951 fix(
Tabs
): usetabIndex
of -1 for non-active tabs for better accessibility UX
- #4932 feat: update modern colors (slight desaturation of grays and core colors, also updated secondary colors)
-
#4935 feat(
EditableText
): new HTML prop "contentId" -
#4924 fix(
PanelStack2
):renderActivePanelOnly={false}
keeps panels mounted -
#4934 fix(
classes.ts
): compatibility with non-Node environments -
#4915 feat: pre-release version of
blueprint-modern.css
stylesheet with modernized colors
-
#4925 fix(
DateInput
): make popover focusable via keyboard -
#4931 feat: pre-release version of
blueprint-datetime-modern.css
stylesheet with modernized colors
-
#4931 feat: pre-release version of
blueprint-table-modern.css
stylesheet with modernized colors
-
#4907 fix(
Overlay
): capture focus when it returns to document -
#4919 fix(
Popover
): disableshouldReturnFocusOnClose
-
#4919 fix(
Popover2
): disableshouldReturnFocusOnClose
- #4906 Initial release of the new modernized Blueprint 5.x colors. This is an incomplete color palette and should not be used in production yet.
-
#4914 fix(
Popover
,Tooltip
): disableshouldReturnFocusOnClose
for hover interactions
-
#4914 fix(
Popover2
,Tooltip2
): disableshouldReturnFocusOnClose
for hover interactions
-
#4905 🔥 fix(
Button
): revert 12px font size change in small button -
#4904 feat(
Overlay
): addshouldReturnFocusOnClose
prop, enabled by default- Focus should now return to the previously active element when a popover, tooltip, dialog, or drawer closes
-
#4900 feat(
Overlay
): set aria-live attribute for better accessibility of Tooltips and Popovers (screen readers can now read their contents) -
#4892 fix(
MenuItem
): make items focusable for a11y consistency -
#4894 fix(
Overlay
): use focus traps to fixenforceFocus
behavior
- #4902 feat: new icons for weather
-
#4898 feat(
Popover2
): allow enter/space key to open popover
This version is being released in the 3.x range to match with the rest of the Blueprint packages.
-
#4891 🔥 break: remove Sass variables for color definitions
- These were getting duplicated from
@blueprintjsj/core
(we couldn't move them from there, because it caused an implicit breaking change due to the Sass dependency), and we don't currently see a use case for Blueprint consumers to use these variables in the standalone package.@blueprints/core/lib/variables
should be sufficient, at least for now.
- These were getting duplicated from
- #4891 fix: remove implicit dependency on colors package Sass
- #4883 chore: add missing README and LICENSE files
-
#4838 feat(
Dialog
): add standard accessibility attributes for dialogs (role="dialog"
,aria-labelledby
,aria-describedby
) -
#4835 feat(
Icon
): addaria-hidden
attribute for unlabeled icons -
#4885 🔥 fix(
Button
): use 12px font size in small buttons -
#4834 fix(
Button
): do not override icon intent color in dark mode -
#4832 fix(
Tooltip
): heading typography color in tooltip content in dark mode -
#4880 fix: make
configureDom4.ts
an ES module, which allows the source file to be compatible withtsc --isolatedModules
-
#4877 fix(
TagInput
): correct type forinputRef
prop
-
#4881 feat: new icon "syringe"
-
#4832 fix(
Tooltip2
): heading typography color in tooltip content in dark mode -
#4877 fix(
Popover2
): correct type forpopoverRef
prop
-
#4843 feat(
Select
): new prop "fill" makes the component take up the width of its container- N.B. when using this prop, you are required to ensure that the Select child you render also fills its container width (for example, use
<Button fill={true}>
)
- N.B. when using this prop, you are required to ensure that the Select child you render also fills its container width (for example, use
-
#4877 fix(
MultiSelect
): more robust ref handling fortagInputProps.inputRef
- #4884 fix issues with blank rows/columns on mount/resize
-
#4867 fix(
no-color-literal
): use the correct variable name in the autofixer
-
#4858 feat: new package!
-
@blueprintjs/colors
contains color palette definitions in a separate package without any dependencies, useful in build tooling like@blueprintjs/stylelint-plugin
-
-
#4821 feat(
ProgressBar
,Spinner
): make progress indicators accessible witharia
androle
attributes -
#4836 feat: add
aria-label
to some buttons for better accessibility support- This applies to:
NumericInput
,PanelView
,PanelView2
,Tag
,Toast
- This applies to:
-
#4845 fix(
TimePicker
): reset input fields whenvalue={null}
-
#4824, #4848, #4851, #4856, #4840, #4859, #4861 new icons
- "stadium-geometry", "area-of-interest", "buggy", "antenna", "tank", "helicopter", "third-party", "rocket", "rocket-slant", "header-three"
-
#4816 fix(
ContextMenu2
): remove obsolete context menu target CSS
-
#4841 feat(
Select
): new prop "matchTargetWidth" that will make the<Select>
component's popover have the same width as the target -
#4826 fix(
MultiSelect
,Select
,Suggest
): pass event topopoverProps.onInteraction
-
#4854 chore: add migration path for more 4.x renamed types
- This change deprecates
ICellRenderer
,IColumnHeaderRenderer
,IRowHeaderRenderer
,IStyledRegionGroup
,ICellInterval
,ICellCoordinate
,IRegion
in favor of the respective type alias without theI
prefix. It also exports those type aliases from the package root.
- This change deprecates
-
#4853 feat: add
no-color-literal
rule to encourage using color variables ($blue3
) instead of color literals (#137CBD
)
-
#4798 feat(
Text
): allow passing HTML props to rendered element -
#4805 fix(
Popover
): addaria-haspopup
attribute for accessibility -
#4800 fix(
PanelStack2
): fix animation direction in controlled mode -
#4808 fix(
PanelStack2
): more stable controlled mode -
#4790 fix(
HotkeysProvider
): de-duplicate hotkeys so that only unique ones are registered with the global dialog -
#4790 fix(
useHotkeys
): add guard to make the hook (and, transitively,HotkeysTarget2
) compatible with SSR and other environments wherewindow
does not exist -
#4806 fix(
HTMLSelect
): clarify CSS API markup, add styling for.bp3-icon
child element
-
#4805 fix(
Popover2
): addaria-haspopup
attribute for accessibility
-
#4790 feat: add
<Table2>
and<EditableCell2>
components which use the new hotkeys API- These are provided as new components because they require that a
<HotkeysProvider>
is configured somewhere in the application for them to work correctly. Otherwise, they are functionally the same as their counterparts<Table>
and<EditableCell2>
. - The 3.9.0 version number does not signify that the issues listed in the table 3.8.x milestone are fixed, unfortunately. Fixes for those issues will come in v3.9.x.
- These are provided as new components because they require that a
-
#4767 feat(
HotkeysProvider
): support advanced nesting use cases -
#4773 feat(
useHotkeys
): accept customdocument
for global hotkey handlers -
#4771 fix(
ControlGroup
): leftElement insideInputGroup
no longer hidden
- #4761 feat: new object relation icons
-
#4756 fix(
ContextMenu2
): detect dark theme correctly- This fixes ContextMenu2 dark theme detection by restoring an inline
<div>
rendered as the popover target, so that we can attach a ref to it and properly query for dark theme. - 🔥 BREAKING CHANGE: rename
Classes.CONTEXT_MENU2_POPOVER2_TARGET
toClasses.CONTEXT_MENU2_VIRTUAL_TARGET
- 🔥 BREAKING CHANGE: add
ref
property back toContextMenu2ChildrenProps
after it was removed in #4740 (sorry for the API whiplash). If upgrading from popover2> 0.8.0 < 0.11.0
and you are using the advanced children render function API, you'll need to attach this ref to whatever you return from the children render function.
- This fixes ContextMenu2 dark theme detection by restoring an inline
-
#4744 fix(
ContextMenu2
):Tooltip2
and autofocus interactions- This fixes #4719 (close tooltips on elements when a context menu is triggered) while avoiding the regression described in #4742. ContextMenu2 now dismisses as expected with the ESC key.
-
#4730 feat(
MultiStepDialog
): newinitialStepIndex
prop allows skipping to a specific step in the dialog -
#4729 fix(
Portal
): handle moreclassName
edge cases, so the component no longer crashes on multiple class names or empty strings -
#4736 fix (
Popover2
): handle popover v1 dismiss API correctly so that Popover2 content which includes select or datetime components which render<Popover captureDismiss={true}>
behave as expected -
#4740 ❌ deprecation:
Classes.FIXED_POSITIONING_CONTAINING_BLOCK
-
#4740 fix(
ContextMenu2
): simpler target positioning logic utilizing<Portal>
- This fixes a bug where the offset calculation was wrong in cases where the context menu child scrolled around in its container and/or the developer was not able to attach
- 🔥 BREAKING CHANGE: Removed
ref
fromContextMenu2ChildrenProps
-
#4735 fix(
Popover2
): close popovers/tooltips on<ContextMenu2>
opening
-
#4723 fix(
EditableText
): optimize component so that it no longer updates the DOM unnecessarily when callback props change-
updateInputDimensions
is expensive since it touches the DOM; it is now only called when the props/state which it depends on are changed
-
-
#4717 feat(
ContextMenu2
): supportref
prop usingReact.forwardRef
-
#4718 fix(
ContextMenu2
): allow content function to returnundefined
-
#4715 fix: don't lint the
"bp-"
prefix
-
#4713 feat(
ContextMenu2
): forward more props to wrapper element- 🔥 BREAKING CHANGE: the popover props which were supported directly on
<ContextMenu2>
(overlay lifecycle handlers,popoverClassName
,transitionDuration
) are now moved to an object in thepopoverProps
prop.
- <ContextMenu2 popoverClassName="foo"> + <ContextMenu2 popoverProps={ popoverClassName: "foo" }}>`
-
<ContextMenu2>
now forwards extra HTML props down to the generated wrapper element; consumers can mostly treat it like a<div>
now
- 🔥 BREAKING CHANGE: the popover props which were supported directly on
-
#4712 feat(
ContextMenu2
): betterdisabled
behavior, so users don't have to worry about settingdisabled={true}
when they setcontent={undefined}
; that API can now be reserved for more rare use cases -
#4709 feat(
ContextMenu2
): allow specifying custom wrapper tag withtagName
prop
-
#4701 fix(
ContextMenu2
): allowcontent
prop to be undefined
-
#4699 fix(
no-prefix-literal
): handle less import references correctly (e.g.import (reference) "some/path/to/file.less"
)
-
#4698 fix(
Tag
): restore removable tag height using standard icon size- regression was introduced in #4688 which made the "small-cross" remove icon large, when it should have been standard size
-
#4692 fix(
no-prefix-literal
): handle selectors with multiple bp classes
-
#4683 feat: add
$bp-ns
variable as an alias for$ns
, useful for consumers to target Blueprint component element CSS selectors with a legible variable name⚠️ This variable is used in the autofixer for the@blueprintjs/no-prefix-literal
stylelint rule, so you must be using this minimum version of the core package for that fixer to work
-
#4688 ❌ deprecate Icon, Drawer, Spinner size constant static members
- use
IconSize
,DrawerSize
, andSpinnerSize
, respectively, instead
- use
-
#4674 feat(
HTMLTable
): add styling for<tfoot>
elements
🌟 New package!
-
#4683 feat:
no-prefix-literal
lint rule warns on usage of thebp3-
orbp4-
prefix in Sass / Less / CSS code, autofixer replaces string literal with the new$bp-ns
variable available in@blueprintjs/core
v3.44.1
-
#4673 feat: use
ResizeSensor2
to match behavior in v4.0- This component now includes the breaking changes coming in v4.0 for
<ResizeSensor>
as a result of no longer usingReactDOM.findDOMNode
. These breaks only affect you if you use the more advancedrenderTarget
API of Popover2 / Tooltip2.
- This component now includes the breaking changes coming in v4.0 for
- 🆙 #4644 Add type aliases for interfaces renamed in v4.0
-
#4648 feat(
OverflowList
): addalwaysRenderOverflow
prop -
#4647 fix(
MultistepDialog
): fix step title color in dark mode
- 🆙 #4644 Add type aliases for interfaces renamed in v4.0
- 🆙 #4644 Add type aliases for interfaces renamed in v4.0
- 🆙 #4644 Add type aliases for interfaces renamed in v4.0
- 🆙 #4644 Add type aliases for interfaces renamed in v4.0
- 🆙 #4644 Add type aliases for interfaces renamed in v4.0
-
#4620 feat(
Drawer
): addshouldReturnFocusOnClose
prop to provide a way to disable the component's default behavior of returning focus to the previous active element after closing -
#4610 feat(
MultistepDialog
): allow custom next & back button props for each dialog step -
#4630 feat(
MultiStepDialog
): improve step styling - #4612 fix unsafe ref usage across various components
- ❌ #4638 deprecate various APIs which we intend to remove in v4.0:
IConstructor
IElementRefProps
createReactRef
getDisplayName
LifecycleCompatPolyfill
- #4612 fix unsafe ref usage across various components
-
#4640 feat(
ContextMenu2
): new children render prop allows omitting wrapper element -
#4621 fix(
Popover2
): use more specific overlay backdrop selector
- #4612 fix unsafe ref usage across various components
-
#4603 feat(
Popover
): restore support forposition
prop (un-deprecate it) to make the transition to Popover2 easier -
#4591 fix(
useHotkeys
): remove synthetic default import of React -
#4601 fix(
Tree
): fixed compatibility withContextMenu2
, which is now positioned correctly when applied to node labels
- #4599 chore: upgrade react-day-picker to 7.4.9
- #4602 docs: update browser support docs to list polyfills required for IE11
-
#4603 feat(
Popover2
): newposition
prop, same as inPopover
, allows specifying popper.js placement using a familiar API which requires no migration when switching fromPopover
toPopover2
-
#4601 feat(
Popover2
): newpositioningStrategy
prop allows customizing popper.js positioning strategy -
#4592 fix(
Popover2
): applytabIndex
to target correctly -
#4601 feat(
ContextMenu2
): various fixes and enhancements- New props (
className
,disabled
, andonContextMenu
) for<ContextMenu2>
-
ContextMenu2RenderProps
has been updated to include the mouse event likeContextMenuTarget
did, to improve compatibility with existing usage patterns
- New props (
-
#4602 fix IE11 support by adding
String.prototype.startsWith
polyfill
-
#4602 fix IE11 support by upgrading
@pmmmwh/react-refresh-webpack-plugin
and configuring webpack target correctly
The patch release two days ago still included bug #4544 in some places. That has been completely fixed in today's release.
-
#4567 feat(
MultiStepDialog
):backButtonProps
allows customization of back button text anddisabled
state - #4576 fix: revert all React imports to namespace import syntax (regression introduced in core 3.40.0)
-
#4577 fix(
Toaster
): fix layout for toasts rendered in portals (regression introduced in core 3.40.0) -
#4570 fix(
PanelStack2
): improve types for common use cases involving heterogenous panel types in a panel stack⚠️ this is a breaking change if you are already usingPanelStack2
.
- #4576 fix: revert all React imports to namespace import syntax
@blueprintjs/[email protected]
, @blueprintjs/[email protected]
, @blueprintjs/[email protected]
, @blueprintjs/[email protected]
, @blueprintjs/[email protected]
, @blueprintjs/[email protected]
- Patch versions were released for all packages to revert a breaking change introduced by #4544 which forced TypeScript consumers to enable
allowSyntheticDefaultImports
in order to compile the libraries.
-
#4541
- feat: new
<PanelStack2>
component, see migration guide here ⚠️ deprecation:<PanelStack>
is deprecated in favor of<PanelStack2>
- feat: new
- #4558 feat: convert validation errors to console logs
-
#4555 fix(
Toaster
): use absolute positioning when inline (usePortal={false}
)⚠️ This is a small CSS breaking change for users of this option, but also clearly a bugfix (the layout would have been broken or required custom positioning before this change).
-
#4556 fix(
Icon
): accept standard HTML attributes (e.g.role="..."
)
- #4558 feat: convert validation errors to console logs
-
#4550 feat: new icons "shapes", "add-location"
-
#4524
⚠️ deprecation:ContextMenu
andContextMenuTarget
are now deprecated in favor of{ ContextMenu2 } from "@blueprintjs/popover2"
-
#4532
⚠️ deprecation:HotkeysTarget
is now deprecated in favor ofHotkeysTarget2
oruseHotkeys
-
#4532 feat: new
useHotkeys
hook,<HotkeysProvider>
and<HotkeysTarget2>
components -
#4524 feat: newly exported utility function
isDarkTheme
tests whether an element in the DOM is inside a Blueprint dark theme subtree
-
#4524 🌟 feat: new
<ContextMenu2>
component replacesContextMenu
andContextMenuTarget
, which are now deprecated.
- Upgrade to webpack v5
- Switch to ts-loader instead of awesome-typescript-loader
- Upgrade to karma v6
- Switch to helpful-reporter instead of mocha-reporter
-
#4512 fix(
Overlay
): don't make container focussable unless relevant props are enabled- this fixes an issue where tooltips would remain open on the page if opened by keyboard navigation
-
#4512 feat: add
rootBoundary
prop - #4512 fix: don't apply duplicate tabIndex to target container
-
#4512 fix: add support for dismissal by
MenuItem
-
#4512 fix: apply
portalClassName
correctly to thePortal
container, not its childOverlay
-
#4494 fix: add
IAnchorButtonProps
; exportsetRef
utility-
Utils.setRef
is newly exported, useful when you want to support multiple kinds of refs (objects or callbacks) as props, just like many Blueprint components -
IAnchorButtonProps
is a newly exported shorthand forIButtonProps<HTMLAnchorElement>
, helps with the now stricter prop types for buttons
-
🌟 New package added in #4488
- This package contains two new components,
Popover2
andTooltip2
, which are replacements forPopover
andTooltip
(from@blueprintjs/core
) respectively. You are encouraged to migrate to these new APIs as they will be come the standard popover and tooltip components in Blueprint core v4.0. - This package depends on React 16.8+ and Popper.js 2.0.
- View the migration guide on the wiki.
-
#4492 ❌ deprecation:
Popover
andTooltip
are now deprecated in favor ofPopover2
andTooltip2
, available in the@blueprintjs/popover2
package.- Note that components across the core, datetime, select, and table packages still use these deprecated components and will continue to do so until v4.0.
-
#4488 feat(
Popover
): newplacement
prop replaces the newly deprecatedposition
prop- "placement" is similar to "position", with a direct mapping that involves changing some keywords.
- Use this prop going forward to make the transition to
Popover2
easier in the future.
-
#3829 ❌
Menu.Item
andMenu.Divider
are now deprecated because they can be undefined at runtime due to a module import cycle. UseMenuItem
andMenuDivider
instead.
@blueprintjs/select
or @blueprintjs/datetime
and you reference the following types directly: IPopoverProps
, IInputGroupProps
. You can solve this by upgrading to the latest versions of all Blueprint packages.
-
#4462 🌟 feat: new
<MultistepDialog>
component provides a standard UI for multi-step processes -
#4483 🌟 feat(
Alert
): newloading
prop- an Alert in a "loading" state renders its button with
loading={true}
(showing a spinner) and disables its cancel button (if visible)
- an Alert in a "loading" state renders its button with
-
#4422 feat(
Drawer
): return focus to active element after closing -
#4438 feat: normalize ref handling on all components
- Added support for React ref objects (created by
React.createRef()
) to all components which did not yet have support:<Switch>
,<Checkbox>
,<Radio>
,<NumericInput>
,<Menu>
,<Popover>
- Added support for React ref objects (created by
-
#4441 feat(
InputGroup
): improve props interface- Prop interface type union with
React.InputHTMLAttributes
is no longer required, inferred type of event inonChange
is more specific -
IInputGroupProps
is now deprecated in favor ofIInputGroupProps2
-
IControlledProps
is now deprecated in favor ofIControlledProps2
- Prop interface type union with
-
#4442 fix(
MultiSlider
): render HandleclassName
correctly
- #4441 chore: use new InputGroup props interface
- #4448 🔧 chore: upgrade typescript-eslint and eslint dependencies
-
#4449 🔧 feat: enable lint rule
@typescript-eslint/unbound-method
- #4448 🔧 chore: upgrade typescript-eslint and eslint dependencies
-
#4469 feat: new icons "high priority" and "emoji"
- #4448 🔧 feat: upgrade typescript to 4.1
- #4441 chore: use new InputGroup props interface
-
#4438 feat: normalize ref handling on all components
- Added support for React ref objects (created by
React.createRef()
) to all components which did not yet have support:<Cell>
,<ColumnHeader>
,<TableQuadrant>
,<TableQuadrantStack>
- Added support for React ref objects (created by
- #4448 🔧 feat: upgrade css-loader, mini-css-extract-plugin, style-loader, and webpack-bundle-analyzer to latest major versions
Older changes are documented here.
- react-day-picker v8 migration
- HotkeysTarget & useHotkeys migration
- PanelStack2 migration
- Table 6.0 changes