-
Notifications
You must be signed in to change notification settings - Fork 2.2k
3.x Changelog (2018–2020)
This is the collection of change logs from 2018-2019. Newer changes are documented here.
- 🔥 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
-
#4403 feat: allow React 17 peer dependency
-
#4374 feat(
Tooltip
): newminimal
prop adds support for minimal styling -
#4411 feat(
NumericInput
): newasyncControl
prop (passes through directly to the underlying<InputGroup>
) -
#4388 feat(
NumericInput
): newlocale
prop adds localization support -
#4414 fix(
Tag
): restore 30px height for removable tags (regression introduced in v3.26.1)
- #4403 feat: allow React 17 peer dependency
-
#4412 fix(
DateInput
): more resilient popover blur interaction avoids a possible crash in dev mode
- #4403 feat: allow React 17 peer dependency
-
#4403 feat: allow React 17 peer dependency
-
#4379 feat: new icon "layer-outline"
-
#4410 feat: new icon "notifications-snooze"
- #4403 feat: allow React 17 peer dependency
-
#4401 feat:
createNewItemPosition
prop allows placing the "Create new item" item at the beginning of a QueryList (Select, MultiSelect, etc.) -
#4413 feat(
MultiSelect
): newonRemove
prop provides a more intuitive API for reacting to values removed from the selection -
#4368 fix(
Omnibar
): handle initialContent undefined value correctly
- #4403 feat: allow React 17 peer dependency
-
#4356 refactor: replace
force-hardware-acceleration
mixin with"will-change: transform"
CSS rule
- #4403 feat: allow React 17 peer dependency
-
#4383 fix(
InputGroup
): make async control optional- This change makes "asynchronous control" of
<InputGroup>
opt-in behavior, after it was enabled across the board by default in #4266 (released in@blueprintjs/core
3.31.0). -
asyncControl={true}
should be used in places where applications expect that the state update to a controlled<InputGroup>
will be asynchronous, either by explicit design in their state management logic, or through a library like redux-form. ⚠️ Note that this is a small breaking change for any consumers who have upgraded to@blueprintjs/core
3.31.0-3.34.1 and were relying on the new behavior dealing with async control. You will need to enable this new prop to get that behavior back.
- This change makes "asynchronous control" of
-
#4377 fix(
Divider
): simplifyrender()
method signature
-
#4323 fix(
InputGroup
): better support for async controlled updates through an improved implementation of the underlying<AsyncControllableInput>
component. This fixes a bug (introduced in v3.31.0) which can occur in async controlled usage where the cursor may jump to the end of the input while typing.⚠️ This feature was later made opt-in with theasyncControl
prop in v3.35.0
-
#4308 feat: allow sliders to specify custom label values with
labelValues
prop -
#4372 fix(
TagInput
): revert #4350, a commit which sought to smooth over a small breaking change in the type signature ofonRemove
. This change ended up causing a runtime break because it changed the behavior of the event handler. Instead, we are reverting to the old behavior of the handler (value: React.ReactNode
is the first argument) and accepting the slight breaking change introduced in 3.32.0 because it makes the type signature align with runtime beavhior. -
#4371 fix: improve
iconClass
,intentClass
, andelevationClass
function signatures to improve compatibility with strict null checks -
#4365 fix(
EditableText
): respectdisabled
prop whenalwaysRenderInput={true}
-
⚠️ #4367 deprecations:Classes.ICON_STANDARD
,Classes.ICON_LARGE
,Classes.iconClass
. Note that support for Blueprint icons through the icon font is deprecated and will be removed in the next major version. Users are recommended to use the<Icon>
React component and built-in icon APIs across Blueprint components instead.
- #4357 feat: upgrade documentalist to v3.0
-
#4350 fix(
TagInput
): restore type signature of the first parameter of theonRemove
callback prop, fixing a regression introduced in #4291 which broke existing usage of theonRemove
prop under strict TS compiler flags - #4346 chore: enable strict null checks compiler flag
-
#4343, #4354 feat(
Tag
): addelementRef
prop to access native HTML element with ref callback or ref object -
#4354 feat: add support for React 16 ref objects in
elementRef
prop for HTML components (e.g.<H1>
,<Blockquote>
,<Label>
)
-
#4349 fix: resolve stray references to
name
global which may cause errors in TS v4.1+
- fix(
createMouseEvent
): setdetailArg
parameter correctly
-
#4341 fix: restore
IResizeEntry
export
- #4331 chore: fix CSS import tree shaking "sideEffects" property for rollup builds
- #4339 chore: upgrade build dependencies, compile with TypeScript 4.0
⚠️ #4291 deprecatesafeInvoke
,safeInvokeMember
, andsafeInvokeOrValue
utility functions. Use TypeScript 3.7+ optional chaining and optional call operators instead.-
#4291 fix(
TagInput
): allowReact.ReactNode
inonRemove
handler, to match the type allowed in other value positions. -
#4290 fix: cancel all requested animation frames on unmount. This guards against components calling lifecycle methods like
this.setState()
after they have been unmounted, which triggers warnings in React. -
#4310 fix(
AbstractButton
): remove reliance ongetDerivedStateFromProps
lifecycle method -
#4321 fix(
NumericInput
): revert to renderingButton
under the hood, improvehandleContinuousChange
implementation -
#4325 fix(
ControlGroup
): normalizefill
style -
#4328 fix(
Popover
): improvecaptureDismiss
mechanism -
#4309 fix(
Button
): always exit active state if blurred -
#4338 fix(
TextArea
): handle non-function refs -
#4334 feat(
Text
): addtitle
prop, supporthtmlTitle
in various components which use<Text>
-
#4290 fix: cancel all requested animation frames on unmount. This guards against components calling lifecycle methods like
this.setState()
after they have been unmounted, which triggers warnings in React. -
#4314 feat: support
highlightCurrentDay
prop in more components -
#4316 fix(
DateInput
): improve blur handling to avoid unexpected popover closures
⚠️ #4339 break: upgrade totypescript-eslint
4.0
⚠️ #4339 break: upgrade totypescript-eslint
4.0
-
#4336 feat: new
data-connection
icon
-
#4290 fix: cancel all requested animation frames on unmount. This guards against components calling lifecycle methods like
this.setState()
after they have been unmounted, which triggers warnings in React. -
#4303 feat(
QueryList
): pass "create new item" renderer to custom item list renderers
-
#4276 feat(
HotKey
,RadioGroup
): allowReactNode
inlabel
prop -
#4268 fix(
EditableText
): add small width buffer to prevent crash in component resizing implementation -
#4266 fix(
InputGroup
): allow async controlled updates tovalue
prop.InputGroup
now uses a new private component calledAsyncControllableInput
which works around some problems in React dealing with async controlled updates to text inputs which arise during IME composition.⚠️ This feature was later made opt-in with theasyncControl
prop in v3.35.0
-
#4275 fix(
Tabs
): don't animate tab indicator on first render -
#4255 fix(
Tag
): tag remove button renders with keyboard accessibletabIndex
attribute if interactive. This is especially useful for theMultiSelect
component from the@blueprintjs/select
package.
-
#4254 fix(
DateRangeInput
): check time boundaries (not just dates) when computing same day overlap. This is especially relevant whenallowSingleDayRange={true}
. -
#4274 fix(
DatePicker
,TimePicker
): allowvalue
prop to benull
-
#4261 chore!: upgrade dependencies
- BREAKING: upgrade to
eslint-plugin-jsdoc@30
- BREAKING: upgrade to
-
#4261 chore: upgrade dependencies, fix: move
jest
to a devDependency
- #4261 chore: upgrade dependencies
- #4261 chore: upgrade dependencies
-
#4238 fix(
ControlGroup
): border radius style and stacking layout for nestedNumericInput
-
#4215 fix(
ControlGroup
): improved margin around nested dividers
-
#4235 fix(
DateRangePicker
): previous month button alignment -
#4240 fix(
DateInput
): don't close popover after clicking TimePicker up/down arrows -
#4245 fix(
DatePicker
): prevent crash in iOS Safari when selecting month/year from dropdowns
-
#4250 feat: backlink and geofence icons
-
#4186 fix(
Collapse
): closing animation in Firefox -
#4198 fix(
TextArea
): update ref when inputRef prop changes -
#4201 fix(
NumericInput
): useAbstractButton
instead ofButton
to improve click-and-hold behavior on increment/decrement buttons when you reach value bounds-
Note: this may cause a small break in the rendered DOM output of the component.
<a>
anchor elements are now rendered in place of<button>
elements, but they have the same class names attached as before, so querying by class name should work as expected.
-
Note: this may cause a small break in the rendered DOM output of the component.
-
#4211 fix(
NumericInput
): more robust controlled mode wherevalue
prop behaves like other controlled inputs and -
#4211 feat(
NumericInput
): newdefaultValue
prop allows setting a default value in uncontrolled mode upon component instantiation -
#4218 fix(
Overlay
): handle document click/focus in Shadow DOM -
#4226 fix: use more inclusive terminology in code
-
IKeysBlacklist
andIKeysWhitelist
interfaces are now deprecated.
-
-
#4205 fix(
DatePicker
): apply min/max boundaries to time picker
- #4180 feat: spread data-* props to HTML elements
-
#4188 feat: send-message icon
- #4108 fix: handle new items same as selections in resetOnSelect behavior
- #4173 fix: ItemListRenderer return type may be null
-
#4160 fix(
NumericInput
): enforce numeric chars only with IME (#4160)- This closes a loophole where IMEs could be used to inject invalid characters, and handle Japanese full-width number input.
-
#4153 chore: all packages are now built with TypeScript 3.9
- This is a backwards-compatible change which does not affect generated typings.
- #4154 feat!: upgrade to ESLint v7.0, typescript-eslint v3.0
-
#4158 feat!: migrate TSLint rules to ESLint equivalents
- BREAKING CHANGES: there are some semantic changes in the new rule config, see the PR for more details
-
#4166 feat!: enable eslint-plugin-deprecation to ban usage of deprecated APIs
- BREAKING CHANGE: usage of
/** @deprecated */
APIs will now be flagged as lint errors
- BREAKING CHANGE: usage of
- #4154 feat!: upgrade to ESLint v7.0, typescript-eslint v3.0
-
#4153 chore: all packages are now built with TypeScript 3.9
- This is a backwards-compatible change which does not affect generated typings.
-
#4146 fix(
Alert
): ensure text content does not overflow
- #4120 feat: add new "method" tag to render class methods
-
#4147 fix(
Suggest
): dropdown works with inputRef set to ref hook
- #4120 docs: better formatting / layout of Table instance method documentation
-
#4130 feat(
MultiSlider
): add trackStyleBefore and trackStyleAfter Handle props
-
#4123 feat(
TimePicker
): add onFocus, onBlur, onKeyDown, onKeyUp props -
#4124 feat(
TimePicker
): add autoFocus prop to focus the hour input
-
#4132 feat: add modal, drawers, and app header icons
-
#4137 fix(
MultiSelect
): create new item behavior when entering text with IME (useful for languages like Japanese, Chinese)
- #4093 feat: add React 16 ref hook support to Button, AnchorButton, InputGroup components
- #4119 docs: fix popper v1 documentation links
- #4093 feat: add React 16 ref hook support to DateInput and DateRangeInput components
-
#4115 fix(
DatePicker
): alignment of time picker arrows - docs(
DatePicker
): clarify timePickerProps empty object
-
#4126 feat: added cycle and route icons
- #4093 feat: add React 16 ref hook support to Select and Suggest components
-
#4099 fix(Tag): fix vertical padding for large tag
before:
after:
-
#4098 fix(
PanelStack
): fix header z-index regression
![image](https://user-images.githubusercontent.com/723999/80561830-c5dd7e00-89b3-11ea-8c50-f08a3b2697cb.png)
![image](https://user-images.githubusercontent.com/723999/80561950-28cf1500-89b4-11ea-987b-f7861b00e467.png)
- #4079 feat: export DateUtils
-
#4069 feat(
NumericInput
): disable buttons when value at min/max -
#4063 feat(
InputGroup
): add leftElement prop
-
#4066 fix(
DateRangePicker
): right calendar shows the correct month when clicking shortcuts whenshowContiguousMonths={false}
-
#3630 fix(
Cell
): only modify props for specific child elements,TruncatedFormat
andJSONFormat
. This fixes a React console warning aboutparentCellWidth
not being a DOM attribute.
- #4075 chore: upgrade eslint, typescript-eslint
-
#4080 feat: add configuration for linting node script modules written as
.js
source files - Upgrade
@blueprintjs/tslint-config
to 3.0, which removes prettier formatting enforced as a lint rule.- Why? This config package should not be enforcing prettier formatting, that should be done by other non-Blueprint-related tooling.
- We recommend using prettier through ESLint for editor plugins like VSCode, as we have configured in the
.eslintrc.js
of the blueprint monorepo witheslint-plugin-prettier
. In lint tasks initiated from the command line (including CI), prefer using theprettier
CLI directly.
- This package was renamed from
@blueprintjs/eslint-plugin-blueprint
for brevity. The last part of the name was redundant, and ESLint will resolve the package correctly without it. This rename requires changing some inline enable/disable code flags.
-
#4078 BREAKING: remove
tslint-plugin-prettier
, so prettier formatting is no longer enforced through this package. - #4083 BREAKING: upgrade to TSLint 6.0
- #4085 chore: upgrade dependencies, including major rev bump of stylelint to v13
-
#4085 feat(
sass-lint
): add support for--fix
option as CLI flag
- Stabilized API. No significant API breaks in this release, it just seems like time to make the version bumps for this package easier by declaring 1.0.
- #4085 upgrade karma to v5.0
- Stabilized API. No significant API breaks in this release, it just seems like time to make the version bumps for this package easier by declaring 1.0.
- #4084 chore: upgrade dependencies, including major revs:
-
#3982 feat(
NumericInput
): supply input element inonValueChange
callback -
#3993 feat(
TagInput
): handle delete to remove items -
#3998 fix(
Button
): remove invalid HTML attr"outlined"
- #4033 docs: Add example to import variables into Less file
-
#4012 feat(
DatePicker
): add support fordayPickerProps.renderDay
-
#3983 fix(
DateRange
): values are possibly null, not undefined- 🔥 note that this may cause a minor break if you are compiling TypeScript with
strictNullChecks
enabled, but it is a necessary fix which makes the type definition align with Blueprint's runtime behavior.
- 🔥 note that this may cause a minor break if you are compiling TypeScript with
- #4003 docs: improved localization code example
-
#4050 feat: Added virus icon
-
#3832 fix(
QueryList
): trim whitespace when creating new items - #4051 fix: avoid props mutation and duplicate CSS classnames
-
#4050 feat(
generate-icons-source
): allow icons without icon font support
-
#3947 feat(Button): add "outlined" visual modifier
-
#3768, #3950 feat(PanelStack): add renderActivePanelOnly prop
-
#3956 fix(
Breadcrumbs
): remove non-HTML attributes in overflow menu items, removing an unnecessary console warning produced by React -
#3968 fix(
HtmlSelect
): text color for disabled options in dark mode -
#3973 fix(
InputGroup
): right element padding adjusting on update
-
#3966 feat: add diagnosis and lab test icons
-
#3934 feat(
Suggest
): sync activeItem with selectedItem on popover close
- 🔧 fix package reference to
@blueprintjs/tslint-config
, allowing this package to be used outside the Blueprint monorepo
- 🔧 fix(es-lint): use default ESLint resolution to find config file
- feat(es-lint): support resolution of
.eslintignore
file at the root of a git repo (useful for monorepos like Blueprint's) - feat(es-lint): support arbitrary additional arguments to
eslint
CLI
- 🔧 #3917 Use new
@blueprintjs/eslint-plugin-blueprint
lint rule implementations
-
#3917 Initial release of ESLint plugin which includes implementations of rules previously found in
@blueprintjs/tslint-config
Note: Bump major version just to make it easier to deal with internal repo dependencies
- 🔥 #3887 Replace
ts-lint
script withes-lint
script
- #3732 fix: column resize calculation on header double click when column resizing and/or header menu are enabled
- 🔥 Blueprint-specific custom lint rules have been disabled in this configuration as we transition to ESLint
- #3913 feat: add intent prop to Slider and RangeSlider
- #3911 fix(Toast): bottom toasts exit in the correct direction
- #3912 fix(Toast): bottom shadow is no longer clipped
- #3894 fix(NumericInput): correct rounding of default value
- #3924 fix(EditableText): allow setting value to null in controlled mode
- #3920 pin react-day-picker dependency version to avoid ambient typings errors
- Initial release of our ESLint configuration. For now it is just a wrapper for running TSLint rules.
- #3878 add tractor, truck, and "bring in data" icons
- #3873 fix: upgrade moment-timezone to fix Brazilian timezones
- #3876 fix: declare sideEffects properly in package.json to fix a tree shaking issue
- #3885 fix: upgrade react-popper to fix an issue that would crash the page when zooming out in a web browser
-
#3886 fix: EditableText works inside
@blueprintjs/table
tables again (after a regression introduced in #3841)
- #3862 feat: high contrast CSS with color adjustments to pass WCAG requirements
-
#3867 fix: explicitly declare
dom4
import side effects
- #3857 feat(Drawer): add Sass variables for background color
-
#3841 feat(
EditableText
): addalwaysRenderInput
experimental feature -
#3855 fix(
TagInput
): add intent styling when component is active
-
#3842 feat(
EditableText
): addalwaysRenderInput
experimental feature
-
#3843 fix(
Shortcuts
): make shortcuts container focusable
-
#3770 feat(
Toaster
): ability to set max number of active toasts -
#3786 feat(
Breadcrumb
): render icon if provided through props -
#3828 fix(
Switch
): indicator background colors -
#3831 fix(
Collapse
): simplify lifecycle, fix animation bugs -
#3814 fix(
NumericInput
): do not trigger onValueChange if value is changed via props -
#3813 fix(
InputGroup
): prevent infinite setState in componentDidUpda -
#3811 fix(
TagInput
): prevent infinite setState in componentDidUpdate -
#3787 fix(
PanelStack
): do not trigger unintended animations -
#3809 fix(
NumericInput
): correct styles when placed inside label -
#3784 fix(
Toast
): fix bottom toast animation
-
#3821 feat: export
IDateRangeInputProps
-
#3777 feat(
DateInput
): add fill prop -
#3818 feat(
DatePicker
): add shortcuts to single date picker
-
#3816 feat: new icons
- New drawing
- Data lineage
- Archive
- Unarchive
- Signal search
-
#3836 fix(
MultiSelect
): better handling of key events in TagInput remove buttons
- #3764 fix: cell copy to clipboard works in IE11
-
#3836 feat: new utility function
dispatchTestKeyboardEventWithCode
-
#3776 fix(
QueryList
): re-render when controlled items change
-
#3771 fix: lifecycle methods in
MultiSlider
- #3771 fix: lifecycle methods in various Table components
- 👍 #3702 Refactor components to use React 16.3+ lifecycle methods
- This change removes usage of deprecated methods
componentWillMount
,componentWillReceiveProps
, andcomponentWillUpdate
. New lifecycle methods from React 16.3+ are now used, with a polyfill added to ensure support for previous React versions. See this React blog post for more information. - ❌
AbstractComponent
andAbstractPureComponent
have been marked as deprecated. - 🆙 New components
AbstractComponent2
andAbstractPureComponent2
using the new lifecycle methods are now available. If you use these new components and need React 15 support, remember to apply the polyfill fromreact-lifecycles-compat
.
- This change removes usage of deprecated methods
-
#3657 docs(
Toaster
): fix position prop comment -
#3733 fix(
MultiSlider
): fix minor rendering bug with track fill -
#3766 feat(
Tab
): spread HTML props to rendered div- 🔥 usage of new
Omit
mapped type helper requires TypeScript users to compile with TS 3.5+
- 🔥 usage of new
- 👍 #3702 Refactor components to use React 16.3+ lifecycle methods
-
#3762 fix(
TimePicker
): allow more natural text entry
- 👍 (needs link) Refactor components to use React 16.3+ lifecycle methods
-
#3745 feat: add learning, new layer(s), stopwatch icons
- 👍 #3702 Refactor components to use React 16.3+ lifecycle methods
-
#3724 fix(
Suggest
): Default autoComplete for text input to "off"
- 👍 #3702 Refactor components to use React 16.3+ lifecycle methods
- 👍 #3702 Refactor components to use React 16.3+ lifecycle methods
-
#3716 👍 fix(
Popover
): click on target no longer affects hover behavior -
#3713 fix(
AnchorButton
): left text alignment - #3691 fix: support create-react-app environment variable for Blueprint namespace
-
#3689 fix(
Drawer
): use Sass variable$drawer-padding
-
#3730 fix(
MenuItem
): avoid React warning for unknown attr labelClassName
-
#3687 fix(
EditableCell
): supporttabIndex
prop correctly
-
#3688 feat(
DateRangePicker
): add active menu styles to shortcuts - #3725 fix: upgrade react-day-picker, clean up type imports
⚠️ #3654 breaking: remove unusedgetShallowUnequalKeyValues
utility function (we found that this was unused inside and outside Blueprint)-
#3560 feat(
FileInput
): addbuttonText
prop -
#3645 fix(
HotkeysTarget
): invoke user-defined key event handlers correctly -
#3647 fix(
TextArea
): grow box vertically to show initial content -
#3672 fix(
EditableText
): supportselectAllOnFocus
withtype={number}
in latest React -
#3677 fix(
Popover
): only apply active class to target in uncontrolled mode - #3653, #3654 chore: upgrade to typescript 3.5
- fix: restrict
tslib
dependency to minor version range
-
#3644 fix(
DateRangeInput
): maintain focus on time inputs during keyboard interactions -
#3658 fix(
DateRangeInput
): do not close on selection when time inputs receive key presses - #3653, #3654 chore: upgrade to typescript 3.5
- fix: restrict
tslib
dependency to minor version range
-
#3649 fix
EditableCell
update cycle, improveEditableName
docs - #3653, #3654 chore: upgrade to typescript 3.5
- fix: restrict
tslib
dependency to minor version range
⚠️ This package has been removed from the development repository since it is no longer active (last change / publish was in Feb 2018).
-
#3679 upgrade
prettier
andtslint-react
-
#3679 upgrade
autoprefixer
,css-loader
,file-loader
,webpack
- #3628 feat(DatePicker): add option to highlight current day
- Less/Sass variables are now correctly bundled into the NPM package (inside the
lib/
folder)
- ⭐️ #3636 feat(Popover): add
fill
prop to fill container width - #3637 fix(Switch): tweak dark theme hover/active colors
- #3634 fix(Toast): long words in toast messages no longer break container layout
N.B. @blueprintjs/core@3.17.0
had an issue where Less/Sass variables were not bundled correctly into the NPM package.
- 👍 #3613 fix(TimePicker): typing into minute input field works again
- ⭐️ #3636 feat: add
fill
prop toSuggest
andMultiSelect
components - #3629 fix(Select): do not call itemRenderer when component is disabled
- #3627 fix(Select): fix keyboard navigation when all filtered items are disabled
-
#3624 fix(blueprint-html-components): fix suggestion for
<table>
element replacement
- #3611 Re-release of v3.16.0 with LESS & Sass variables correctly packaged
- #3584 Typography: improve dark muted and disabled text contrast
-
#3568
HTMLSelect
: Fix number of clicks required to use component insideControlGroup
in Firefox -
#3591
TagInput
: fix Tags overflowing the container -
#3598
Tree
: Fix intent color for nestedIcon
components in dark mode -
#3600
PanelStack
: Allow hiding header -
#3601
PanelStack
: Add support for controlled mode -
#3608
AbstractButton
,Button
: Update buttontype
prop to match React's latest typings
-
#3607
DateRangeInput
: add support for disabling start or end input
-
#3350
EditableCell
: addeditableTextProps
prop to allow adjusting cells during editing -
#3447
RowHeaderCell
: addnameRenderer
prop to allow displaying custom headers
- #3502 Hovering over date no longer clears time input
-
#3504 Render the correct month when
DateRangePicker
singleMonthOnly
option is enabled -
#3557 Fix
DateRangePicker
inconsistency with single day ranges and time precision enabled
- #3510 Added new UI icons
![Screen Shot 2019-05-01 at 15 14 40](https://user-images.githubusercontent.com/23030180/57021392-f6b19880-6c23-11e9-89ac-6b34f4890144.png)
![Screen Shot 2019-05-01 at 15 14 52](https://user-images.githubusercontent.com/23030180/57021393-f6b19880-6c23-11e9-9553-49f6a9f45297.png)
![Screen Shot 2019-05-01 at 15 15 04](https://user-images.githubusercontent.com/23030180/57021394-f6b19880-6c23-11e9-91c0-9495e68f77b5.png)
![Screen Shot 2019-05-01 at 15 15 12](https://user-images.githubusercontent.com/23030180/57021395-f6b19880-6c23-11e9-9645-d893668a86a5.png)
-
#3496 Fix
<Select>
to correctly changeactiveItem
when items change
- #3375 File input text styling for active selections
- #3471 Fix DateInput IE11 bug when changing month/day
- #3461 Upgrade react-day-picker, fix caption months support
- #3451 Added new inheritance icon
- Switch to standard Apache-2.0 license (#3457)
- Checkbox: fix indeterminate state update (#3409)
- TagInput: use undefined instead of null to hide clearButton (#3436)
- PanelStack: Add z-index to panel stack header to fix layout issue (#3414)
- TextArea: Add
growVertically
prop to allow component to grow height with input text (#3398) - Drawer: Add
position
prop, deprecatevertical
prop (#3386)
- Switch to standard Apache-2.0 license (#3457)
- Fix react-day-picker API hyperlink in documentation (#3435)
- Switch to standard Apache-2.0 license (#3457)
- Switch to standard Apache-2.0 license (#3457)
- Select: hide QueryList item list when menuContent and createItemView are both null (#3426)
- MultiSelect: Enable pasting of multiple values (same as TagInput) (#3428)
- Switch to standard Apache-2.0 license (#3457)
- Fix resizable props documentation (#3400)
- Switch to standard Apache-2.0 license (#3457)
- Switch to standard Apache-2.0 license (#3457)
- Switch to standard Apache-2.0 license (#3457)
- Switch to standard Apache-2.0 license (#3457)
- Switch to standard Apache-2.0 license (#3457)
- Switch to standard Apache-2.0 license (#3457)
- Switch to standard Apache-2.0 license (#3457)
-
#3356 Fix
shortcuts.tsx
react import typings
-
#3348 Popover: Fix the type of
onInteraction
prop -
#3347 ButtonGroup: supports
fill
prop when Buttons are wrapped in Popovers -
#3351 Tabs: add
panelClassName
prop - #3355 TreeNode: Icons with intents inside this component are now colored properly
-
#3354 TreeNode: add
disabled
prop - #3382 Drawer: fix prop validation warning when using default props
-
#3381 Components now allow users to create new items not found in the items list
📢 Dear Blueprint users,
This is my (@giladgray) final release as the leader of this project. It's been my greatest pleasure to steward Blueprint and I am leaving it in the very capable hands of @adidahiya who, like me, has been on this project since its earliest days. Remember, I'm always only an at-mention away 👋☂️.
- 🌟 #2957 New
Drawer
component!
- This is exactly the same as
Dialog
but it slides it from the right edge of the screen. - Use the
size
prop to control the width or height (based onvertical
prop).
- This is exactly the same as
- 🌟 #3327 New
Switch
innerLabel
andinnerLabelChecked
props.
-
#3314 New
NumericInput
rightElement
prop (a laInputGroup
). -
#3296
NumericInput
allowsmin === max
. -
#3342
Spinner
SIZE_SMALL
is now 20px instead of 24px (to match other components). -
#3337 Fix
NumericInput
handling of arbitrarily small step sizes (>6 decimal places).
-
#3343 Fix
DatePicker
onChange
on month change after initial day selection. -
#3311 Merge the two definitions of
IDateRangeShortcut
(only one was actually exported so this is not an API break).
-
#3335 New icons:
inbox-filtered
,inbox-geo
,inbox-search
,inbox-update
.
- #3305 Small refactors for internal code consistency.
-
#3301 Add
directory
details to package.json repository entries to allow third party tools to provide better support when working with monorepos.- Patch versions of all public packages not mentioned below have been published to benefit from this.
-
#3237 New
Tag
fill
prop and styles. -
#3237 New
TagInput
intent
prop. -
#3278
OverflowList
is now a regularComponent
(not pure) so it always re-renders.- This is necessary because renderer behavior can change in ways that would not cause organic re-renders.
-
#3295
PanelStack
initialPanel
supports arbitrary user props. -
#3275
Toast
always clears existing timeout when restarting. -
#3291
Tooltip
supports hover interactions via newinteractionKind: HOVER | HOVER_TARGET_ONLY
prop. -
#3283 🎨 Add
!default
to$headings
Sass map variable.
-
#3223, #3293
DateRangePicker
shortcuts
can now change time viaincludeTime: true
.<DateRangePicker shortcuts={[{ label: "With time", dateRange: [...], includeTime: true }]}>
- Also add a "Shortcuts" section to the documentation.
- 🌟 #3285 New
itemsEqual
prop on all package components to customize item equality check.- The default implementation simply uses
===
to test strict equality, but this requires careful management of object instances. - Use
itemsEqual="id"
as a shorthand to compare theid
prop of two items to test equality. - Use
itemsEqual={(a, b) => boolean}
to implement more advanced custom logic.
- The default implementation simply uses
-
#3292 New
Suggest
disabled
andresetOnClose
props. -
#3290
QueryList
initializeactiveItem
state correctly when controlled. -
#3289
Suggest
query remains visible when closed if no item is selected.
-
#3287
TimezonePicker
supports custom target viachildren
prop.- Only one child is supported; providing more than one will print a console warning in dev mode.
- If a custom child is provided, all button-specific props will be ignored (i.e.,
buttonProps
,disabled
,placeholder
,valueDisplayFormat
).
-
#3287 Export
getTimezoneMetadata()
from package root to easily support arbitrary timezone formatting in custom targets.
- 🌟 #3230 Add
esnext
build target and package entry.-
lib/esnext/
is a third compile target using the latest supported ES features (pretty much TypeScript without the types). - This will prevent bugs with incompatibility between ES5 and ES6+ features. Additionally, when targeting newer browsers, being able the use esnext will reduce bundle size.
- Use this by configuring your build to read the
esnext
entry in package.json.
-
⚠️ #3276 Fix externals in*.bundle.js
files.- Properly mark all listed package dependencies as externals.
- Specifically: add
popper.js
,react-popper
,resize-observer-polyfill
to the list. - Fix
tslib
global variable name. - Update documentation example in Getting Started guide.
- 🔧 #3252 Upgrade to Webpack 4 in development.
-
#3235 Add
EditableText
type
prop. -
#3251 Add
MenuItem
labelClassName
andtextClassName
props. -
#3236
ResizeSensor
handles fatal error state iffindDOMNode
fails.
- See "General" notes above: add
esnext
target and fix*.bundle.js
externals.
⚠️ DO NOT enable CircleCI for your fork. (If you've already done so, you should disable it from the Circle UI.)
- Our build runs on forked PRs and provides a better experience for OSS contributors than configuring your own Circle instance and setting up the preview comment.
- Preview comments will no longer post from forked PRs, but the artifact URLs will be logged directly to the Circle console for easy access (example here, expand last step).
-
#3213 Add
Popover
/Tooltip
targetProps
prop to add attributes toClasses.POPOVER_TARGET
element.- This provides much improved support for an advanced use case of
positioning the target manually using style attributes:
targetProps={{ style: { left, top } }}
- This provides much improved support for an advanced use case of
positioning the target manually using style attributes:
-
#3215 Add
Popover
/Tooltip
reposition()
instance method to manually trigger a Popper update.- Use
ref
to get an instance:<Popover ref={ref => ref.reposition()} />
- This method should be used rarely when the default behavior does not detect changes, such as changing position without changing size (this can happen when using
targetProps.style
as suggested above).
- Use
-
#3216 Add
Icon
htmlTitle
prop to settitle
attribute on DOM element for browser tooltips.-
Icon
's existingtitle
prop explicitly does not render a browser tooltip, so we had to add a new prop for this. - These two props will be refactored for consistency in Blueprint 4 (eventually).
-
-
#3211 Add
Tree
onNodeMouseEnter
andonNodeMouseLeave
callback props. -
#3170 Fix
HTMLTable
props type to support<table>
-specific HTML props likecellPadding
. -
#3190 Fix
Icon
render()
return type (for React 15 consumers). -
#3204 Fix
NumericInput
continuous keyboard click (holding space/enter on one of the buttons) and tenderly refactor the internal render and event logic. -
#3164 Fix
Toast
to support changingtimeout
after it has been shown for the first time. -
#3200 Fix
Popover
to supporttabIndex
on target element.
-
#3182
Months
enum is now a regular TypeScript enum (not aconst enum
), so you can use it in JS code. -
#3200 Fix
DateInput
inputRef
support. -
#3198 Fix
DateRangePicker
right caption behavior in contiguous month mode.-
DateRangePicker
now always renders the two months in separate calendars (as opposed to one two-month calendar).
-
-
#3199 Remove unused
DateRangePicker
styles.
-
#3222 New icons:
cube
,cube-add
,cube-remove
,lifesaver
,table-filtered
.
-
#3180 Fix
QueryList
activeItem
change whenquery
anditems
props change. -
#3167 Standardize
inputProps
docs across components.
- 🌟 #3148 Add
Overlay
portalClassName
prop to set CSS class on element created byPortal
.- Supported on
Overlay
,Dialog
,Popover
, andTooltip
.
- Supported on
-
#3061 Add
MenuItem
tagName
prop to change HTML element. -
#3149 Add
Popover
boundary
prop to quickly set Popper boundary element (andPopperBoundary
exported type). -
#3156 New
PopoverPosition
enum for the allowed values in<Popover position>
.- 👍 No API change, just a new type that includes the
"auto"
options and provides constants for them.
- 👍 No API change, just a new type that includes the
-
#3118 New
MaybeElement
type represents "JSX element or empty render," used inicon
props.- Now supported:
icon={endorsed && "tick"}
,icon={condition ? null : "cross"}
- Now supported:
-
#3150 Fix
HTMLSelect
disappearing caret on focus insideControlGroup
. -
#3147
Classes.CONDENSED
(added in #2904) renamed toClasses.HTML_TABLE_CONDENSED
to match other<table>
modifiers.- 👍 This actually reverts a 2.0->3.0 API break where the
CONDENSED
class was simply removed.
- 👍 This actually reverts a 2.0->3.0 API break where the
-
#3137 Fix
TagInput
inputValue
respects controlled mode (no more auto-clear) when adding new items. -
#3157 Fix
Callout
styles to support title-only usage.
-
#3142 Add
DateRangePicker
singleMonthOnly
prop to show only one month calendar.
-
#3096 Add
scrollToActiveItem
prop to all components. Defaults totrue
.When
activeItem
is controlled, whether the active item should always be scrolled into view when the prop changes. Iffalse
, only changes that result from built-in interactions (clicking, querying, or using arrow keys) will scroll the active item into view. Ignored if theactiveItem
prop is omitted (uncontrolled behavior). -
#3130 Fix
Omnibar
to allow browsing items when query is empty.
-
#3162 Add fixer for
blueprint-html-components
rule.
- 🌟 #3106 New
Breadcrumbs
component composesBreadcrumb
items with anOverflowList
container. -
#3120 Add
FormGroup
contentClassName
andstyle
props. -
#3045 Add
Portal
container
prop to attach to things other thandocument.body
. -
#3113 Fix
Checkbox
indicator display edge case. -
#3102 Fix
Icon
vertical alignment with inline text -
#3117 Fix
Tag
text centering with other fonts. -
#3115 Set default
font-family
only onbody
tag. - #3123 Remove some unused CSS rules.
-
#3052 Add
"clean"
icon ✨
-
#2005 Add
Table
forceRerenderOnSelectionChange
prop (defaults tofalse
) which provides a noticeable performance improvement in selection.
-
#2951 🔧 Support for the latest version of
@types/react
(16.4.14). -
#2953, #2992 🌟
InputGroup
,TextArea
, andClasses.INPUT
now supportsmall
modifier! -
#2975 Add
OverflowList
onOverflow
callback prop, invoked once per resize and only if the overflowed items have changed. -
#2964
Dialog
close button is now a minimalButton
(instead of custom styles). -
#2960
FormGroup
hides label element when the prop is omitted. -
#2970
Spinner
track now always exactly fills the frame and never overflows. -
#2971
Utils.isElementOfType
now comparesdisplayName
instead of element type to support equality checks across multiple instances of Blueprint.⚠️ If you use this method in your code, you must set adisplayName
on the components being compared or it will always fail.- Multiple instances can be brought in through transitive dependencies.
-
#2938 Fix
Hotkeys
sorting of labeled global groups. -
#2994 Fix
Tag
extra margin with icons only. -
#2466 Fix
Tree
small visual issues.
-
#2939 Add
DatePicker
todayButtonText
andclearButtonText
props to customize the text of those buttons.
-
#2967 Added new icons
list-columns
,flow-linear
,flow-branch
,flow-review
,flow-review-branch
,flow-end
-
#2988 Invoke
selectedRegionTransform
after keyboard navigation (in addition to existing mouse interactions).⚠️ The second argument to this method is nowMouseEvent | KeyboardEvent
, which may require small code migration if you depended on mouse event properties.
-
#2969 🌟 Add a fixer to the
blueprint-classes-constants
rule!- The fixer replaces literals with
Classes.*
references and adds the appropriate import to the file!
- The fixer replaces literals with
-
#2996 The
blueprint-classes-constants
rule now also bans thebp3-
prefix (in addition to the v1pt-
prefix).
-
#2945 Fix
Tag
remove button centering.
-
#2928 👍 Unknown icon names are now rendered as blank icons instead of as
null
to avoid interrupting flow -
#2904 Add
HTMLTable
condensed
prop for more compact appearance without cascade to other components -
#2911 Fix
Collapse
initial opening animation -
#2912 Fix
Switch
dark theme variables -
#2929 Fix
Switch
indicator sensitivity toline-height
-
#2900 Fix
TagInput
left padding when empty for consistency withInputGroup
- #2927 (IE11) Fix font icons to prevent double vision
-
#2895 🌟 Time support in
DatePicker
#2856 andDateRangePicker
- Enable via new
timePrecision
shorthand ortimePickerProps
for advanced control. - ❌ Deprecate
DateTimePicker
sinceDatePicker
can do it all now.
- Enable via new
-
#2792 Replace custom styles with existing Blueprint components
- Use minimal
HTMLSelect
for month/year dropdowns. - Use minimal
Button
for next/previous buttons. - Use
Divider
for the internal separators. - Upgrade
react-day-picker
dependency and leverage some new features likenavbarElement
.
- Use minimal
-
#2795 Fix
TimePicker
to prevent typing time that exceeds bounds - Freshen up the implementations of
DatePicker
(#2789) andDateRangePicker
(#2858, #2859) with some gentle yet significant refactors; no outward changes. - Refactor test suite for
DateRangePicker
(#2793) to use Enzyme and a hand-built DRY harness
-
#2894 Add
resetOnQuery
prop to all components- Whether the active item should be reset to the first matching item every time the query changes (via prop or by user input).
- This behavior is enabled by default.
-
#2923 Add
MultiSelect
placeholder
prop shorthand forinputProps.placeholder
-
#2874 Add
Suggest
controlledselectedItem
prop -
#2920 Add
Suggest
uncontrolleddefaultSelectedItem
prop -
#2916 Fix
QueryList
reset behavior when active item becomes invalid so active state rarely disappears- Also fix viewport scrolling so the active item is always visible.
-
#2930 Enable webpack-dev-server port configuration via
PORT
environment variable
- 🌟 #2884
Icon
now renders an HTML element wrapper around the SVG image- Also brought back the icon CSS class to mitigate migration pain (it has no associated styles when using SVG icons)
-
#2881 Remove quotes on
$ns
/@ns
style variable, for consumers ofvariables.less
.- Less emits the quotes when interpolating in class names, leading to invalid syntax in selectors.
-
#2890
Spinner
properly isolates the animation from surrounding styles. -
#2886 Fix
OverflowList
collapsing all when zoomed. -
#2887 Fix
Skeleton
animation in Firefox! -
#2885 Increase
Skeleton
animation contrast
- 🌟 #2854 New
Divider
component! -
#2804
TagInput
only adds on paste if pasted text includes separator. -
#2868 Restore
Spinner
support for IE and Edge. - #2862 Update Sketch file.
-
#2783
RadioGroup
andHTMLSelect
options supportclassName
anddisabled
. -
#2772
Popover
now supports"auto-start"
and"auto-end"
positions. -
#2776
Popover
captureDismiss
defaults tofalse
. -
#2775 Fix
Button
icon-only appearance. -
#2761 Fix
Tabs
rendering fail injsdom
.
-
#2758 NEW
Popover
captureDismiss
prop for better uncontrolled click-to-close behavior, especially with nestedPopover
s (defaults totrue
).- When prop is enabled,
Popover
invokespreventDefault()
onClasses.POPOVER_DISMISS
clicks.Popover
now ignores dismiss clicks if default is prevented, so popovers around a<Popover captureDismiss>
will not close when an inner popover is dismissed. -
MenuItem
disablescaptureDismiss
(can override viapopoverProps
) to preserve existing desired behavior where clicking a nested submenu closes the entire hierarchy.
- When prop is enabled,
-
#2756 Fix
Dialog
eagerly closing when childPopover
closes. -
#2757
Menu
supports arbitrary HTML attributes.
🎆 Highlights: new PanelStack
and ResizeSensor
components, major Checkbox
improvements, select
components support controlled query
and activeItem
.
- 📦 #2741 Fix all component
displayName
s to beBlueprint3.<name>
. (Oops!) - 🔧 #2710 Fixed Sass compilation so source map remains external (major reduction in size of NPM package CSS files).
- 🌟 #2642 NEW
PanelStack
component! - 🌟 #2745 NEW
ResizeSensor
component is a React wrapper aroundResizeObserver
. - 🌟 #2709
Checkbox
now embeds thesmall-tick
andsmall-minus
SVG images into the CSS so states are CSS-only again.- Checkbox suffered greatly in the switch to SVG icons because its implementation no longer relied purely on CSS: React state was necessary to ensure the correct icon was rendered at the correct time. This introduced a bunch of subtle bugs where the DOM and the state could get out of sync (due to an incorrect implementation of un/controlled state).
- Inlining the two icons results in an insignificant <1kB increase in size of
blueprint.css
and allowed the removal of much state logic from theCheckbox
component.
- 🌟 Major improvements to
Checkbox
,Switch
, andRadio
:-
#2708 Add
tagName
prop to wrap in something other than<label>
, which can cause event problems when listening for click on a parent element. -
#2716 The control indicator is now an inline element, and line height restriction has been removed.
- The indicator used to be absolutely positioned, which resulted in a small vertical misalignment.
- Controls now assume the default
line-height
so they fit better with other text and react to changes in this property.
- #2721 Refactor indicator styles to share as much as possible across the three control types.
-
#2708 Add
- 🌟 #2718
Popover
position updates automatically when content or target change size! -
#2707 Use
IOptionProps
instead ofIHTMLOptionProps
.- The latter was added in 3.0.0 without realizing we already had the former, so this is a simple correction.
-
RadioGroup
options
prop now supports optionallabel
.
-
#2742
Breadcrumbs
now embeds its SVG icons just likeCheckbox
above.- This was the final user of the icon fonts. They're now officially legacy!
-
#2727
Button
now renderstext={0}
. -
#2734
ControlGroup
sets correct border-radius on only child. -
#2744
ControlGroup
supportsHTMLSelect
components. -
#2731
Popover
targets inControlGroup
now correctly inherit border-radius.
-
#2724
DateInput
removenull
from signature offormatDate
asnull
values are handled by the component itself. -
#2751
DateInput
supportsshowActionsBar
prop fromDatePicker
.
- 🌟 #2747
activeItem
(keyboard focus) andquery
(predicate string) can now be controlled via props or uncontrolled.- Optional
query
/onQueryChange
andactiveItem
/onActiveItemChange
props supported in all 4 components.- Supply
query
oractiveItem
to control that feature. Listen to changes using the associated event prop.
- Supply
-
resetOnSelect
is also a "common" prop, supported by all 4 components and implemented inQueryList
. - Refactor: most state has been pushed into
QueryList
, which is now responsible for this behavior.
- Optional
-
#2748
Suggest
now shows the selected item as the placeholder text when the popover is open. - #2723 Ensure the active item is always an enabled item.
- #2646 Added a common test suite for all components to assert common functionality works identically.
-
#2701
EditableCell
correctly passeswrapText
prop.
-
#2747 Updated
TimezonePicker
for latestSelect
behavior.
-
#2740 Added
new
tags to pages with new content. - #2746 Navigator limits to 10 results and has more helpful placeholder text.
-
#2419 Omnibar example hotkey is now
shift+o
to avoid Firefox conflict. - Improved checkbox/switch/radio examples to include some props options.
@badams @face @kadhirvelm @ntrinquier
-
#2667
Spinner
acceptsClasses.LARGE/SMALL
to set large/small size (instead ofsize
prop).- A warning is logged if both
Classes.LARGE/SMALL
andsize
are provided to aSpinner
. - 🆙 This undoes a breaking change from 3.0.0 where we removed support for these CSS classes.
- A warning is logged if both
-
#2671
Icon
uses<desc>
element for title (no browser tootltip, still a11y).
-
#2666 Fix
Button
loading
spinner size. -
#2670 Fix
Button
dark+minimal style. -
#2681 Fix
ButtonGroup
vertical style. -
#2681 Fix
ContextMenu
behavior when right-clicking on backdrop. -
#2681 Fix
HTMLSelect
option label rendering. -
#2681 Fix
MenuItem
submenu behavior withusePortal={false}
.- This prop was removed erroneously in #2539 in 3.0.0-rc.0, so we're bringing it back.
-
#2629 Fix
Tree
generic types support on node callbacks. -
#2676 Fix
MenuItem
submenu styles. -
#2672 Disabled Buttons now have
tabIndex={-1}
.
- Fix broken links.
- Update v1 and v2 docs sites.
🆙 Migration guide is at the bottom of this document.
- 🔥 #2638 Relicense all packages to "Blueprint License based on Apache 2.0"
- When we originally licensed to Apache 2.0 in #1751, we added a section 10 to prohibit impersonating Palantir.
- It was brought to our attention that this modification makes the license no longer Apache 2.0, so we have decided to declare our own license based on Apache 2.0.
⚠️ The only modification is this addition of section 10.
- 🔥 #2441 Change CSS namespace to
bp3-
to avoid conflicts with previous major versions.- If you use
Classes
constants instead of hardcoded string literals then this upgrade is essentially free (except for your own CSS rules). - The best practice for CSS is to style your own classes instead of Blueprint classes, but in the short term you can replace all
pt-
prefixes in Sass code with#{$ns}-
(exactly like our own source code). - 🆙 Use the
blueprint-classes-constants
TSLint rule to aid in this migration. ⚠️ SCSS/Less variables are unchanged and continue to use the$pt-
prefix:$pt-grid-size
, etc.
- If you use
- 🌟 #2426 Restore support for React 15 (in addition to 16).
-
#2462 Declare
sideEffects: ["*.css"]
in package.json to preserve CSS imports during tree shaking. -
#2562 Add
tslib
to webpack externals so it is not included in*.bundle.js
. -
#2608 Publish TypeScript source maps alongside compiled output: add
*.js.map
next to*.js
and*.d.ts
.
- 👍 #2511 Move
react-transition-group
from peer to standard dependency. -
#2488 New 3.0 upgrade script
upgrade-blueprint-3.0.0-rename
, improvements to 2.0 upgrade script.
🔁 These changes can be replaced by the 🆙 upgrade script.
- 🔥 #2441 Change CSS namespace to
bp3-
to avoid conflicts with previous major versions.- 🆙 Use the
blueprint-classes-constants
TSLint rule to aid in this migration.
- 🆙 Use the
- 🔥 #2366 Move styles attached to global selectors to their own CSS classes.
- Global resets remain for
<body>
,<p>
,<small>
,<strong>
tags. ⚠️ The following HTML elements now require CSS classes to apply Blueprint styles:-
<h1>
-<h6>
⇒<H1>
-<H6>
orClasses.HEADING
-
<blockquote>
⇒<Blockquote>
orClasses.BLOCKQUOTE
-
<code>
⇒<Code>
orClasses.CODE
-
<pre>
⇒<Pre>
orClasses.CODE_BLOCK
-
<ol>
&<ul>
⇒<OL>
&<UL>
orClasses.LIST
-
Not linted by new
blueprint-html-components
rule as there are legit un-classed uses of list elements.
-
Not linted by new
-
<hr>
(no class yet;Divider
coming soon)
-
- 👍 The above elements do not require classes when used inside a container element with
Classes.RUNNING_TEXT
. -
#2456 Add React components for elements above (and
HTMLTable
forClasses.HTML_TABLE
). - 🆙 Use the
blueprint-html-components
TSLint rule to aid in this migration.
- Global resets remain for
- 🔥 Refactors to base typography styles:
Classes.RUNNING_TEXT
now uses the default font-size andClasses.TEXT_LARGE
can be applied anywhere to use the large font-size.- Try it out in the new interactive Typography example!
- 🌟 #2484 Allow string literals for enums!
- Most former string enums are now
const/type
pairs, the official TypeScript solution for non-opaque string enumerations. - Affects
Alignment
,CollapseFrom
,Elevation
,Intent
,Position
,PopoverInteractionKind
- 🔁
CollapseFrom
⇒Boundary
- Most former string enums are now
- 🔥 #2579
Spinner
size
prop replacessmall
/large
props.- 🆙 @blueprintjs/core 3.0.1 reverts this breaking change by restoring support for
Classes.SMALL/LARGE
assize
shorthands.
- 🆙 @blueprintjs/core 3.0.1 reverts this breaking change by restoring support for
-
#2581
Overlay
lifecycle props for all overlay components.-
IOverlayLifecycleProps
definesonOpening
,onOpened
,onClosing
,onClosed
tied to CSS transition timing.-
onOpening
andonClosing
fire before the enter or exit transition (respectively) begins andonOpened
andonClosed
fire after it ends. - Overlay content is always mounted in the DOM during these lifecycles, but it is not visible during
onOpening
andonClosed
.
-
- These new props are supported by
Overlay
,Dialog
,Popover
andTooltip
. - 🔁
Overlay
didOpen
⇒onOpened
,didClose
⇒onClosed
- 🔁
Popover
popoverDidClose
⇒onClosed
,popoverDidOpen
⇒onOpened
,popoverWillClose
⇒onClosing
,popoverWillOpen
⇒onOpening
-
- 🔥 #2601 Delete
SVGPopover
andSVGTooltip
.-<SVGPopover content="..." target="..." /> +<Popover targetTagName="g" wrapperTagName="g" content="..." target="..." />
- 🔥 #2477 Delete
SVGSpinner
component as the normalSpinner
can now safely be used inside another SVG.- Delete
Classes.SPINNER_SVG_CONTAINER
andClasses.SVG_SPINNER
.
- Delete
-
#2571
Label
is now a simple HTML tag wrapper likeCode
orH1
.- 🔥 Removed required
text
prop. Pass content aschildren
now. - 🔥 No support for
inline
orhelperText
, just basic HTML props. - Prefer
FormGroup
for your labeling needs. The complexity of two approaches was unnecessary, andFormGroup
can handle any use case you throw at it (not true ofLabel
).
- 🔥 Removed required
- 🔁 #2570
FormGroup
requiredLabel
⇒labelInfo
and removeboolean
shorthand.-<FormGroup label="Name" requiredLabel={true}> +<FormGroup label="Name" labelInfo="(required)">
- 🔁 #2443
Classes.HEADING
replaces the following constants:Classes.CALLOUT_TITLE
Classes.DIALOG_TITLE
Classes.HOTKEY_GROUP
Classes.NON_IDEAL_STATE_TITLE
-
#2617
Popover
andTooltip
now extend a shared props interface for consistency.- 🔁
rootElementTag
⇒wrapperTagName
- 🔁
targetElementTag
⇒targetTagName
- 🔁
tooltipClassName
⇒popoverClassName
- 🔁
- 🌟 #2537 New
OverflowList
component is likeCollapsibleList
with auto-collapse behavior!- Renders as many items as can fit inside itself, then collapses the rest into a single element.
- Accepts generic
items: T[]
with props to render visible and overflowed items. - Uses resize-observer-polyfill (new dependency) to intelligently detect element resizing.
- ❌ #2616 Deprecate
CollapsibleList
in favor ofOverflowList
.
- 🌟 #2536 New
MultiSlider
component provides a low-level API for manipulating number lines.- 👍
Slider
andRangeSlider
each render aMultiSlider
, making them little more than convenience wrappers for single values or ranges. - Handles are configured as
<MultiSlider.Handle>
children and support multiple appearances and interaction types.
- 👍
-
#2605 New
HTMLSelect
component for<select>
tag.- Named thusly to avoid conflict with
@blueprintjs/select
package. - Supports
<option>
tags as children oroptions: IHTMLOption[]
prop shorthand. - ❌ Deprecate
Classes.SELECT
in favor of this component, which usesClasses.HTML_SELECT
to support the SVG icon. - The CSS-only API for
<select>
tags was one of the last holdouts of the icon font.
- Named thusly to avoid conflict with
-
#2609 Upgrade to
react-popper@1.0.0
-
#2583 Static aliases for
Menu
child components:Menu.Item
,Menu.Divider
-
#2477
Spinner
markup refactor: remove all wrapping<div>
elements so the root is the<svg>
itself! -
#2431 New
Tag
icon
andrightIcon
props.-
Tag
styles now work similarly toButton
: a flex row with children wrapped in a span.
-
-
#2592
TagInput
support for pasting in new items withaddOnPaste
prop. -
#2522
Toaster.create()
throws error if used within lifecycle method -
#2499
ensureElement
utility supportsReact.Fragment
(React 16 only) -
#2475 Improve
<kbd>
element styles and allow un-classed usage insideClasses.RUNNING_TEXT
-
#2540 Fix
Button
alignment inNavbar
. -
#2561 Fix
Button
alignment without icon. -
#2497 Fix
Button
width with large CSS icon only -
#2538 Fix
Callout
icon color. -
#2541 Fix
Icon
dark intent colors. -
#2527 Fix
InputGroup
React warning aboutround
prop. -
#2491 Fix
Spinner
stroke width -
#2494 Fix
Switch
align-right style -
#2495 Fix
Tabs
vertical style -
#2428 Fix
Tag
outline behavior -
#2582 Fix
TagInput
React warning. -
#2509 Fix typings of
HTMLTable
component - #2554 Add default type parameters for decorator APIs.
-
#2593 Monospace typography uses relative
font-size: smaller
. -
#2544 Move
NonIdealState
width styles to child elements.
- 🔥 #2441 Change CSS namespace to
bp3-
. -
#2539 Components use default
usePortal
value (true
). -
#2573
DateInput
onChange
now has second argumentisUserChange
(likeDatePicker
). -
#2484 Allow string literals for enums, and rename a few:
- 🔁
TimePickerPrecision
⇒TimePrecision
- 🔁
DateRangeBoundary
⇒Boundary
(from@blueprintjs/core
)
- 🔁
- 🔥 #2441 Change CSS namespace to
bp3-
. -
#2580 New
itemDisabled
prop on all components allows disabling individual items.- Keyboard controls intelligently skip disabled items.
- 🔥 #2441 Change CSS namespace to
bp3-
. -
#2556
Table
without data can now scroll horizontally. - #2586 Fix React unknown prop warning.
- 🌟 #2456 Add
blueprint-html-components
rule to enforce usage of Blueprint components over JSX intrinsic elements.- Marks as errors HTML elements for which Blueprint provides wrappers. See list in
core
breaking changes above.
- Marks as errors HTML elements for which Blueprint provides wrappers. See list in
-
#2589 Fix
blueprint-classes-constants
prefix detection. -
#2457 Improve error messages in
blueprint-icon-components
lint rule.
- 🌟 #2574 Complete refactor of documentation content to focus on React usage and de-emphasize CSS/HTML usage.
- 🌟 #2489 New design for examples visually separates them from content.
- CSS examples now provide checkboxes for each modifier, instead of re-rendering the same markup for each modifier. This allows more than one modifier to be set at a time to demonstrate interactions between them.
- 🔥 #2545 New docs site URL scheme:
/docs/(versions/:v)
. - #2546 Split core components into several subsections.
-
#2591 New
Documentation
navigatorExclude
prop to exclude items from the search results. -
#2615 New
Documentation
renderPageActions
prop to add custom actions on each page.- Add "Edit this page" links at the top of each documentation page.
- #2459 Fix content width due to code blocks.
@badams @devinhalladay @invliD @jaamison @JKillian @jscheiny @mcintyret @PrincipalsOffice @qcz @Que3216 @rafeememon @rosscourt
- react-day-picker v8 migration
- HotkeysTarget & useHotkeys migration
- PanelStack2 migration
- Table 6.0 changes