Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Select] Create-able Select components (a different approach) #3381

Merged
merged 32 commits into from
Feb 28, 2019

Conversation

cmslewis
Copy link
Contributor

@cmslewis cmslewis commented Feb 27, 2019

ℹ️ A second attempt at the work started in #3306. Requesting feedback.

Fixes #1710

  • Includes tests
  • Update documentation

Changes proposed in this pull request:

I forked #3306 to see if I could avoid breaking the API without bloating the props interface. I think I've found a workable approach! There's a non-zero chance that this could break someone, but the probability is effectively zero. Read on for an explanation.

API

// Changed in this PR:
// ===================

/**
 * The currently focused item for keyboard interactions, or `null` to
 * indicate that no item is active. If omitted or `undefined`, this prop will be
 * uncontrolled (managed by the component's state). Use `onActiveItemChange`
 * to listen for updates.
 */
activeItem?: T | ICreateNewItem | null;

/**
 * Invoked when user interaction should change the active item: arrow keys
 * move it up/down in the list, selecting an item makes it active, and
 * changing the query may reset it to the first item in the list if it no
 * longer matches the filter.
 *
 * If the "Create Item" option is displayed and currently active, then
 * `isCreateNewItem` will be `true` and `activeItem` will be `null`. In this
 * case, you should provide a valid "Create Item" object to the `activeItem`
 * _prop_ in order for the "Create Item" option to appear as active.
 *
 * __Note:__ You can instantiate a "Create Item" object using the
 * `getCreateNewItem()` utility exported from this package.
 */
// I added a second parameter here:
onActiveItemChange?: (activeItem: T | null, isCreateNewItem: boolean) => void;

// Unchanged from #3306:
// =====================

/**
 * If provided, allows new items to be created using the current query
 * string. This is invoked when user interaction causes a new item to be
 * created, either by pressing the `Enter` key or by clicking on the "Create
 * Item" option. It transforms a query string into an item type.
 */
createNewItemFromQuery?: (query: string) => T;

/**
 * Custom renderer to transform the current query string into a selectable
 * "Create Item" option. If this function is provided, a "Create Item"
 * option will be rendered at the end of the list of items. If this function
 * is not provided, a "Create Item" option will not be displayed.
 */
createNewItemRenderer?: (
    query: string,
    active: boolean,
    handleClick: React.MouseEventHandler<HTMLElement>,
) => JSX.Element | undefined;

Here's the shape of ICreateNewItem. It's designed to be as unlikely as possible to conflict with an actual custom type <T>:

interface ICreateNewItem {
    __blueprintCreateNewItemBrand: "blueprint-create-new-item";
}

Technically, if a custom type T === ICreateNewItem, there could be a type conflict, but that seems really, really unlikely. The only nuance is around controlling the active item when a "Create Item" option is present; see my docs changes for more information on that.

Overall, note that no existing tests had to change to support this. 👍

Old description (still valid)

  • Select components, via IListItemsProps, now takes two additional props:
    • createNewItemFromQuery?: (query: string) => T which converts a query to a new item; if this prop is present, the select component is considered "create-able";
    • createNewItemRenderer?: (query: string, handleClick: React.MouseEventHandler<HTMLElement>) => JSX.Element | undefined which could be used to render a custom MenuItem at the end of the list, that represents "create a new element from query".
  • If these props are provided, when the component has a non-empty input, a "create new item" entry is rendered at the end of the filtered item list using the given createNewItemRenderer, and the user can activate it to create a new item with the current query.
  • If the component is create-able, when a query returns no results, pressing "enter" key will create a new item with the current query.

@cmslewis
Copy link
Contributor Author

Hmm, lint was failing in an unrelated file, resources.tsx. Went ahead and fixed it. 🤷‍♂️

@blueprint-bot
Copy link

Fix lint in unrelated files?

Previews: documentation | landing | table

@cmslewis
Copy link
Contributor Author

cmslewis commented Feb 27, 2019

📚 Here's a direct link to the updated docs from the most recent build.

@palantir palantir deleted a comment from blueprint-bot Feb 27, 2019
@adidahiya
Copy link
Contributor

2019-02-26 19 22 51

the popover opens again briefly after creating an item, is there anything we can do about that?

Copy link
Contributor

@adidahiya adidahiya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

didn't look through all the new code but this approach looks reasonable

*
* If the "Create Item" option is displayed and currently active, then
* `isCreateNewItem` will be `true` and `activeItem` will be `null`. In this
* case, you should provide a valid "Create Item" object to the `activeItem`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should use the actual type here, ICreateNewItem, instead of "Create Item"

* case, you should provide a valid "Create Item" object to the `activeItem`
* _prop_ in order for the "Create Item" option to appear as active.
*
* __Note:__ You can instantiate a "Create Item" object using the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here

*/
onActiveItemChange?: (activeItem: T | null) => void;
onActiveItemChange?: (activeItem: T | null, isCreateNewItem: boolean) => void;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is (activeItem: T | null) => void (the old typedef) assignable to this new type? if not, it's a break, and we can mitigate that by making the second param optional.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adidahiya Yes, it's assignable.

You could assign an incorrect second-parameter type, and TS would complain:

image

But simply omitting the parameter is acceptable:

image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another example with component usage. Works great. 👍

image

@cmslewis cmslewis force-pushed the cl/1710-create-able-multiselect-v2 branch from 46e09a3 to 6ecdfa0 Compare February 27, 2019 18:52
@cmslewis
Copy link
Contributor Author

(Force pushed the last commit to fix your GHE handle in the commit message.)

@blueprint-bot
Copy link

Respond to @adidahiya CR

Previews: documentation | landing | table

@cmslewis
Copy link
Contributor Author

@adidahiya Looks like the menu flashing is actually not a new thing; it already happens whenever the query is not empty:

2019-02-27 11 07 13

Haven't determined exactly why yet, but it's related to this block, which invokes setState again after it's already invoked a few lines above:

if (hasQueryChanged && shouldUpdateActiveItem) {
this.setActiveItem(getFirstEnabledItem(filteredItems, props.itemDisabled));
}

TL;DR: This PR shouldn't block on the flickering.

Copy link
Contributor

@adidahiya adidahiya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code looks good, but there's a small UX problem in the docs... you need to update the list of items after one has been created. see here where I've "created" Moonlight but it doesn't show up in the list when I search for it again:

image

e.g. if the user has already created an item that matches
the current query, or if the query exactly matches an item
from the existing list
@cmslewis cmslewis force-pushed the cl/1710-create-able-multiselect-v2 branch from 384a6bf to f126a9d Compare February 28, 2019 04:18
@blueprint-bot
Copy link

Write tests

Previews: documentation | landing | table

@cmslewis
Copy link
Contributor Author

@adidahiya I fixed two issues that we discussed offline:

  1. Fix the <MultiSelect> example. Keep track of which items have already been created, and render created items as selected items in the list.

2019-02-27 20 16 06

  1. Hide the "Create item" option if the query exactly matches an item. In tandem with the fix above, this prevents two previous annoyances: (1) you can't redundantly create a new item that would exactly match an existing one, and likewise (2) if you render a created item in the list, the "Create item" option won't appear when you input that value again (it'll just show the already created item).

2019-02-27 20 17 47

Copy link
Contributor

@adidahiya adidahiya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your latest commits look good but unfortunately with the way we've set up the examples we'd have to replicate this new logic in all the places where we allow creating new items... which includes the Select, Omnibar, and Suggest examples.

Here's Select now:

image

maybe we should remove "Create new item" from those examples?

createNewItemFromQuery != null &&
this.props.createNewItemRenderer != null &&
this.state.query !== "" &&
// this check is unfortunately O(N) on the number of items, but
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if this ends up being a problem, we can debounce it ourselves or offer some API which lets users debounce the function call, in a future PR

return films.find(f => f.title === filmToFind.title) !== undefined;
}

private addFilmToArray(films: IFilm[], filmToAdd: IFilm) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reconciliation logic now falls on the users—is it possible to keep this inside the multiselect component? i.e. wrap the passed-in onItemSelect and move the logic for maintaining the union of {passed-in items, newly-created items}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shuyangli It's a good thought, but it seems like the component should remain as data-agnostic as possible. Tracking created items would violate that. @adidahiya what do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In particular, a major blocker for doing that is that if a user passes in a totally different set of items, wiping away the ones from before, then our components won't have any way to know if they should clear their internally tracked list of createdItems (which would be stored in this.state, presumably). The mutually dependent props.items and state.createdItems could easily get out of sync and cause more problems than they solve.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah I agree with @cmslewis here, I would prefer to do less data handling in the component and keep it more presentation-focused. I know it's pretty verbose for consumers this way, but we can always add additional conveniences on top of this approach later on after we see concrete use cases of this feature

@cmslewis
Copy link
Contributor Author

cmslewis commented Feb 28, 2019

@adidahiya I went ahead and kept the create-item functionality in all the examples, because it's helpful to play with it in different contexts. I added some new functions in films.tsx to handle the updating of the items and createdItems arrays; all examples are now using these utilities and behaving properly. (Note that the Omnibar example doesn't track the selected item anywhere in the component, so I didn't update that example.)

I think we're good to merge here.

Select example

2019-02-28 10 54 31

Suggest example

2019-02-28 10 55 22

Multiselect example

2019-02-28 10 56 06

@blueprint-bot
Copy link

Small optimization: compare created item to filteredItems, not items

Previews: documentation | landing | table

@adidahiya adidahiya merged commit 3d6f13e into develop Feb 28, 2019
@adidahiya adidahiya deleted the cl/1710-create-able-multiselect-v2 branch February 28, 2019 21:33
NachoJusticia pushed a commit to graphext/blueprint that referenced this pull request Apr 12, 2019
* [DateInput] Add support for datepicker clearButtonText and todayButtonText props. (palantir#3020)

* [DateInput] Add datepicker clearButtonText and todayButtonText props support.

* [DateInput] Add unit test for clearButtonText and todayButtonText props.

* include integrity hashes in yarn lock (palantir#3035)

* Publish

 - @blueprintjs/docs-theme@3.0.2

* Publish

 - @blueprintjs/docs-theme@3.0.3
 - @blueprintjs/karma-build-scripts@0.9.0
 - @blueprintjs/node-build-scripts@0.8.0
 - @blueprintjs/webpack-build-scripts@0.7.0

* Fix reset of active item when query hasn't changed (palantir#3072)

* Fix reset active item when query hasn't changed

* Address comments

* [DateInput] close on tab key press (palantir#3038)

* Publish

 - @blueprintjs/datetime@3.3.1
 - @blueprintjs/select@3.2.1

* Correct Table reference to HTMLTable (palantir#3075)

Also correct link to html-table page.

* 🔧 fix dependencies (palantir#3078)

* node-gyp resolution

* * dep for build-scripts packages

* yarn.lock

* preview script won't fail build without GH_AUTH_TOKEN

* update yarn min version in readme

* fix icons alignment (palantir#3102)

* [Breadcrumb] Add current prop (palantir#3104)

* Render breadcrumb children (palantir#3105)

* fix checkbox indicator display (palantir#3113)

* Only set default font-family on body selector (palantir#3115)

* [FormGroup] add contentClassName and style props (palantir#3120)

* add contentClassName prop

* add style prop

* [Portal] add container prop (palantir#3045)

* [Portal] add container prop

* [Overlay] add container prop

* [Popover] add container prop

* [Tooltip] add container prop

* [Dialog] add container prop

* [Alert] add container prop

* fix test failed

* [portal] avoid possible crash on componentDidMount

* rename container to portalContainer for overlay components

* chore: remove useless code

* add isotest for className prop (palantir#3119)

* four args become two. add className isotest.

refactor generateIsomorphicTests() to use config object in mapped type

* refactor isotest suites to new config object

* [Tag] fix line-height for centering (palantir#3117)

* fix lint error

* set tag line-height to icon size

* $tag-line-height(-large) vars

* fix label documentation example (palantir#3087)

* fix label documentation example

* Use class constants

* remove first id

* Label B

* added new icon (palantir#3052)

* [table] Perf improvements with selections (palantir#2005)

* table performance improvements - reducing rerendering where possible

* reinstate enum strings

* fix compile errors

* fix lint errors

* fix test

* cell: revert changes

* code review suggestions; add forceRerenderOnSelectionChange flag

* lint

* default to false

* remove unused logo styles from navbar (palantir#3123)

* [Breadcrumbs] Add new component (palantir#3106)

* Add breadcrumbs component

* Use lambda syntax

* Add overflow list props

* Disable overflow menu items

* Add missing prop docs

* Document new Breadcrumb special case

* Add Breadcrumbs prop docs

* Use ul tag

* Add test to OverflowList

* Add tests to Breadcrumb

* Add tests for Breadcrumbs

* Fix docstring

Co-Authored-By: invliD <mail@invlid.com>

* Improve docstring

Co-Authored-By: invliD <mail@invlid.com>

* Fix Breadcrumb docs

* Fix linebreak

* Default breadcrumbRenderer

* Explain why the menu is reversed

* Add link to OL

* Add code example

* Re-use breadcrumbs example using different name

* docs edits

* Publish

 - @blueprintjs/core@3.8.0
 - @blueprintjs/icons@3.3.0
 - @blueprintjs/table@3.3.0

* fix disappearing caret on focus of HTMLSelect in ControlGroup (fixes palantir#3003) (palantir#3150)

* Single Month Only Prop in DateRangePicker (palantir#3142)

* allow singleMonthlyOnly in DateRangePicker

* updated docs comment

* added singleMonthOnly props in DateRangeInput

* added DateRangeInput test to ensure prop is passed

* updated documentation and example labels

* Allow users to browse omnibar options without query (palantir#3130)

* Using tagName JSX variable for MenuItem (palantir#3061)

* Using tagName JSX variable for MenuItem

* Fixed minnor default issues as per the requests on PR

* [Overlay] add portalClassName to IOverlayableProps (palantir#3148)

* add portalClassName to IOverlayableProps

* fix overlay test

* unmount dialog test

* fix HTML_TABLE_CONDENSED name (reverts 3.x break) (palantir#3147)

* Don't clear TagInput inputValue state if controlled (palantir#3137)

* Don't clear TagInput inputValue state if controlled

Fixes palantir#3134

* Address PR comments

* Revert fixes

* remove margin on heading-only callouts (palantir#3157)

* PopoverPosition = Position + auto values (palantir#3156)

* [Select] Flag to optionally scroll to active item for select components (palantir#3096)

* Flag to optionally scroll to active item for select components

* Respect click and keyboard interactions

* Change docs

* edit prop docs

* add uncontrolled note

* docs edits (palantir#3161)

* [tslint] blueprint-html-components fixer! (palantir#3162)

* enable strict mode in tslint-config

* sort imports before adding

* blueprint-html-components fixes imports

* refactors

* replaceTagName util

* test formatting

* add test for all imports

* h2/h5

* ts-lint --fix (palantir#3159)

* relaxed typings for optional JSX.Elements (palantir#3118)

* export type OptionalElement = JSX.Element | boolean | null | undefined;

use it in `icon` props

* more uses of OptionalElement

* Icons docs uses props

* MaybeElement, false

* [Popover] add boundary prop for easier modifiers (palantir#3149)

* Popover add boundariesElement prop for easier modifiers

* rename to boundary

* rename type to PopperBoundary

* fix examples

* Publish

 - @blueprintjs/core@3.9.0
 - @blueprintjs/datetime@3.4.0
 - @blueprintjs/select@3.3.0
 - @blueprintjs/tslint-config@1.7.0

* Fixed bug where new timeout prop passed to toastr update was ignored (palantir#3164)

* Fix change activeItem when query changes on props for QueryList (palantir#3180)

* Fix change activeItem when query changes on props for QueryList

* move willRecieveProps to componentDidUpdate

* put back

* fix import. VSCode - I ahte you

* Replace calendar months const enum with enum (palantir#3182)

* Include "enable preview comments" in PR templates (palantir#3201)

* [select] fix inputprops docs (palantir#3167)

* [HTMLTable] fix html props type (palantir#3170)

* Add elevation variables in docs (palantir#3202)

* FIXED: @HotkeyTarget -> @HotkeysTarget typo (palantir#3208)

* [Popover/DateInput] fix tabIndex & inputRef support (palantir#3200)

* fix Popover openOnTargetFocus tabIndex logic

* refactor DateInput inputRef logic & add tests

* fix import path

* add corresponding InputGroup tests

* update sandbox URL (palantir#3206)

* [NumericInput] ❤️  (palantir#3204)

* ref type | null

* remove <T> on react events

optional type!!

* Keys.isKeyboardClick

it's like a method on a java enum!

* total render refactor

- FIX: css class is applied when buttons=none
- renderButtons() and renderInput()
- conditionals to place buttons before or after input
- remove special-casing for buttons=none

* generate button event handlers, fix key holding

one little function to cache handler objects.
fix holding enter/space to continuously change value.

* onKeyUp handler is obsolete

Button handles enter/space click logic.
onKeyDown is actually enough - quite elegant.

* remove isButtonGroupFocused state

set but never read

* move shouldSelectAfterUpdate to state so it triggers updates

for the selection logic in cmpDidUpdate

* required state, missed a <T>

* update and refactor tests

not much needed here

* pull pure methods out to utils file

* fix tabs usage

* little things: public state, {value}

* orgainze

* missed a reset

* fix return type of Icon.render() (palantir#3190)

* [DateRangePicker] Remove unused styling in daterangepicker.scss (palantir#3199)

* Remove unused styling in daterangepicker.scss

* Configure CircleCI previews

* [Tree] add node mouseenter and mouseleave events (palantir#3211)

* [Popover] add targetProps (palantir#3213)

* add safeInvokeMember util

* add Popover targetProps, using new util for overridden events

* tests

* only one spread

* add note about ref

* add notes about types

* Circle bot logs artifact URLs if auth token is missing (palantir#3209)

* upgrade circle-github-bot

* refactor script so it logs artifact URLs if auth token is missing

* Add htmlTitle prop to Icon (palantir#3216)

* add htmlTitle prop to Icon

* try to kick circleci?

* comment update & backticks

* add "on hover"

* Added new icons (palantir#3222)

* update contributing notes: DO NOT enable Circle for forks. (palantir#3217)

* update contributing notes: DO NOT enable Circle for forks.

* finish the sentence

* [Popover/Tooltip] add public reposition() method to schedule popper update (palantir#3215)

* [Popover] public reposition method to schedule popper update

* add tooltip.reposition()

* [DateRangePicker] Fix caption behavior in contiguous month mode (palantir#3198)

* Add failing tests

* Use two DayPickers for contiguous months

This is so that we can customize the behavior for captions, so the left
caption changes the start month/year and the right caption changes the
end.

* Add additional rendering tests

* Lint

* Configure CircleCI previews

* Add enforcement for contiguousMonth toggling

* Publish

 - @blueprintjs/core@3.10.0
 - @blueprintjs/datetime@3.5.0
 - @blueprintjs/icons@3.4.0
 - @blueprintjs/select@3.4.0

* Update hotkeys.md (palantir#3227)

* Added EditableText input type field (palantir#3235)

* Fix setState calls using updater functions (palantir#3247)

React does not guarantee that the state changes are applied immediately. It is best practice to use an updater function if the new state relies on the current state.

* Add menu item classnames (palantir#3251)

* Add menu item label classname

* Add text classname prop

* Alphabetize props & improve docs

* docs: tag-input: fix garbled unescaped html appearing due to hard line breaking in md source (palantir#3266)

* Fix dialog css docs (palantir#3271)

* Added esnext as a build target. (palantir#3230)

* [docs] Suggest using `ContextMenuTarget` as a HOC (palantir#3259)

Instead of falling back to the imperative API, suggest using `ContextMenuTarget`, where decorators are not an option.

* [docs] show optional isDarkTheme parameter in ContextMenu API docs (palantir#3273)

To make it more obvious that you can manually create a dark context menu, as raised in palantir#3229

* [ResizeSensor] try/catch findDOMNode to handle possible error state (palantir#3236)

*  🔧 upgrade to webpack 4 (palantir#3252)

* upgrade to webpack 4

* migrate webpack config

* add cssnano, though it doesn't seem to work

* fix cssnano in docs-app

* small config refactors

* upgrade karma deps

* migrate karma webpack usage.

use webpack alias for enzyme adapter instead of template string

* upgrade sinon

* skip borked table tests that rely on now-impossible sinon spy behavior.

sinonjs/sinon#1711

* fix lint

* Use cjs modules for karma testing

* Forgot to enable cjs for table

* Popover docs: inline -> usePortal={false} (palantir#3277)

I _think_ inline is outdated b/c I don't see docs on that prop above. I'm pretty sure this section means to reference `usePortal={false}` instead.

* [docs] fix CDN usage & bundle externals (palantir#3276)

* update webpack externals

* update CDN guide in getting started

* push CDN section to the bottom (to avoid distraction)

* remove repeated install notes

* remove jquery

* Publish

 - @blueprintjs/core@3.11.0
 - @blueprintjs/datetime@3.6.0
 - @blueprintjs/icons@3.5.0
 - @blueprintjs/select@3.5.0
 - @blueprintjs/table@3.4.0
 - @blueprintjs/timezone@3.2.0

* refactor toast timeout update logic to be more obvious (palantir#3275)

always clear timeout when starting to cancel any previous now-outdated active timer.

* [OverflowList] Always re-render items (palantir#3278)

* Allow overriding of heading typography in Sass (palantir#3283)

* [TimezonePicker] Support a custom target via <children> (palantir#3287)

* Export getTimezoneMetadata(), add default value for date parameter

* Support one custom child in <TimezonePicker>

* Update example

* Update tests

* (nit) Rename to CustomTimezonePickerTarget

* Add more docs about possibly ignored props

* Update docs

* Respond to @giladgray CR

* Create CHANGELOG.md

* Suggest query remains when closed if nothing is selected. (palantir#3289)

* Allow shortcuts to change time in Date Range Picker (palantir#3223)

* Allow date range shortcuts to change time

* Address PR comments

* lint

* [Suggest] add `disabled` and `resetOnClose` props (palantir#3292)

* add Suggest resetOnClose prop a la Select

* add Suggest disabled prop

* add resetOnClose switch to example

* docs note

* [QueryList] Initialize activeItem state correctly based on prop. (palantir#3290)

* Initialize QueryList's activeItem state correctly based on prop.

* Fix comment typo

* Code cleanup

* [PanelStack] Allow any prop type for initial panels (palantir#3295)

* [Tooltip] allow HOVER interactions (palantir#3291)

* [Tag] fill & [TagInput] intent props (palantir#3237)

* add Tag fill prop

* add TagInput intent prop

* add tag fill styles & example switch

* docs: Fix link to Popover (palantir#3300)

* Add directory details to packages/*/package.json (palantir#3301)

Specifying the directory as part of the `repository` field in a `package.json`
allows third party tools to provide better support when working with monorepos.
For example, it allows them to correctly construct a commit diff for a specific
package.

This format was accepted by npm in
[npm/rfcs#19](npm/rfcs#19).

* Add directory to repository details in package.json files (palantir#3299)

Specifying the directory as part of the `repository` field in a `package.json`
allows third party tools to provide better support when working with monorepos.
For example, it allows them to correctly construct a commit diff for a specific
package.

This format was accepted by npm in npm/rfcs#19.

* [select] Add optional "itemsEqual" comparator prop to QueryList and related components (palantir#3285)

* Improve QueryList and related components to support optional
equality test implementation for non-primitive item types.

* Revert change to use undefined for representing no selection

* Finish revert change to use undefined for representing no selection

* Remove TODO

* Remove unnecessary param documentation

* Rename "areValuesEqual" prop to "itemsEqual"

* Improve "itemsEqual" prop to also support a property name.

* Documentation typos

* Documentation improvements

* Update copyright year in new file

* Rename new unit test file

* [DRP] Shortcuts support changing time & docs (palantir#3293)

* shortcut shouldChangeTime => includeTime

* revert unnecessary test changes

* add Shortcuts docs to DRP

* Publish

 - @blueprintjs/core@3.12.0
 - @blueprintjs/datetime@3.7.0
 - @blueprintjs/docs-theme@3.0.4
 - @blueprintjs/icons@3.5.1
 - @blueprintjs/karma-build-scripts@0.9.1
 - @blueprintjs/labs@0.16.3
 - @blueprintjs/node-build-scripts@0.8.1
 - @blueprintjs/select@3.6.0
 - @blueprintjs/table@3.4.1
 - @blueprintjs/test-commons@0.8.1
 - @blueprintjs/timezone@3.3.0
 - @blueprintjs/tslint-config@1.7.1
 - @blueprintjs/webpack-build-scripts@0.7.1

* [select] consistency refactors (palantir#3305)

* code consistency across `select` components:

- public state = ... (not inconstructor)
- non-optional refs
- safeInvokeMember to reduce destructuring

* fix tests, explicit null check

* dedupe shortcuts prop types (palantir#3311)

* [NumericInput] allows min === max (palantir#3296)

* NumericInput allows min === max

* add test

* [NumericInput] new rightElement prop (palantir#3314)

* Update select-component.md (palantir#3319)

* Fixing typo (palantir#3318)

Missing "and"

* Added new inbox icons (palantir#3335)

* [docs] click to download sketch files from Resources page (palantir#3334)

* click to download sketch files from Resources page

* lint

* use /raw/ url to download actual file

* rename resource files so they download correctly

* add "Missing fonts?" callout

* minor style polish

* Add internal text to switch component (palantir#3327)

* switch text v0

* font size a bit smaller

* add an example of internal text property

* test

* cleanup

* lint fixes

* review comments

* remove whitespace in tests

* more review comments

* even more review changes

* remove errant property

* restore comment

* update prop docs

* additional tests

* remove unnecessary checks

* [Spinner] SIZE_SMALL = 20 (palantir#3342)

* Spinner.SIZE_SMALL = 20

* fix isotest

* [NumericInput] countDecimalPlaces for number type (palantir#3337)

Fixes palantir#3336

* New Drawer component (palantir#2957)

* add files

* fixed styling

* dark theme added

* Added vertical orientation

* changed viewport units

* Added small and large sizes

* Standardized sizing

* backdrop fixed

* add tests

* small/large => one size prop

* update size constants

* add hasBackdrop switch to example

* use Drawer for API browser

* size prop docs

* fix isotest

* add size+vertical tests, actually run suite

* [DatePicker] fix onChange on month change after initial day selection (palantir#3343)

* fix onChange doesn't fire on month change after initial day selection
Fixes palantir#3340

* change !== to != operator

* add test onChange fired when month is changed for uncontrolled datepicker

* Publish

 - @blueprintjs/core@3.13.0
 - @blueprintjs/datetime@3.7.1
 - @blueprintjs/icons@3.6.0
 - @blueprintjs/select@3.6.1

* Corrected the type of Popover's onInteraction prop (palantir#3348)

* ButtonGroup supports "fill" prop when Buttons are wrapped in Popovers (palantir#3347)

* 🔧 upgrade tslint (palantir#3315)

* Fix shortcuts.tsx react import typings (palantir#3356)

* [Tabs] add panelClassName prop (palantir#3351)

* Fix lint (palantir#3374)

* [Core] Fixed not applying intent color for icon inside tree node (palantir#3355)

* [Core] Add option to make tree node disabled (palantir#3354)

* Drawer default prop warning fix (palantir#3382)

* [Select] Create-able Select components (palantir#3381)

* Upgrade dev dependencies and types (palantir#3370)

* Publish

 - @blueprintjs/core@3.14.0
 - @blueprintjs/docs-app@3.14.0
 - @blueprintjs/select@3.7.0

* [Core] Overlay: fix transitionDuration documentation (palantir#3391)

* [Core] Fix react types regression (palantir#3390)

* Publish

 - @blueprintjs/core@3.14.1
 - @blueprintjs/docs-app@3.14.1

* Publish

 - @blueprintjs/datetime@3.7.2

* [Core] Checkbox: fix indeterminate state update (palantir#3409)

Fixes palantir#3408

* Minor README updates

* [Core] Docs: fix small typo (palantir#3411)

"accomodate" to "accommodate"

* [Docs] Overlay Example: add option to test scrolling behavior (palantir#3406)

* Update Bug_report.md

* [datetime] docs: fix react-day-picker API hyperlink (palantir#3435)

* [core] TagInput: use undefined instead of null to hide clearButton (palantir#3436)

* [Select] hide QueryList item list when menuContent and createItemView are both null (palantir#3426)

* [MultiSelect] Enable pasting of multiple values (same as TagInput) (palantir#3428)

* [Core] Add z-index to panel stack header (palantir#3414)

* [Core] Add option to grow text area with input (palantir#3398)

* [Core] TextArea: fix style object regression (palantir#3440)

* [Core] Add position prop to Drawer component, deprecate vertical prop (palantir#3386)

* [Table] Fix resizable props documentation (palantir#3400)

* Switch to standard Apache-2.0 license (palantir#3457)

* [table] Fix documentation to use the right css file name (palantir#3452)

* Prepare release v3.15.0 (palantir#3458)

* Publish

 - @blueprintjs/core@3.15.0
 - @blueprintjs/datetime@3.8.0
 - @blueprintjs/docs-app@3.15.0
 - @blueprintjs/docs-theme@3.1.0
 - @blueprintjs/icons@3.7.0
 - @blueprintjs/karma-build-scripts@0.10.0
 - @blueprintjs/node-build-scripts@0.9.0
 - @blueprintjs/select@3.8.0
 - @blueprintjs/table@3.5.0
 - @blueprintjs/test-commons@0.9.0
 - @blueprintjs/timezone@3.4.0
 - @blueprintjs/tslint-config@1.8.0
 - @blueprintjs/webpack-build-scripts@0.8.0

* [Core] File input text styling for active selections (palantir#3375)

* Fix root package.json file that had duplicated resolutions

* Add yarn lock from upstream

* Update graphext packages versions
crispamares added a commit to graphext/blueprint that referenced this pull request Apr 2, 2020
* [OverflowList] Always re-render items (palantir#3278)

* Allow overriding of heading typography in Sass (palantir#3283)

* [TimezonePicker] Support a custom target via <children> (palantir#3287)

* Export getTimezoneMetadata(), add default value for date parameter

* Support one custom child in <TimezonePicker>

* Update example

* Update tests

* (nit) Rename to CustomTimezonePickerTarget

* Add more docs about possibly ignored props

* Update docs

* Respond to @giladgray CR

* Create CHANGELOG.md

* Suggest query remains when closed if nothing is selected. (palantir#3289)

* Allow shortcuts to change time in Date Range Picker (palantir#3223)

* Allow date range shortcuts to change time

* Address PR comments

* lint

* [Suggest] add `disabled` and `resetOnClose` props (palantir#3292)

* add Suggest resetOnClose prop a la Select

* add Suggest disabled prop

* add resetOnClose switch to example

* docs note

* [QueryList] Initialize activeItem state correctly based on prop. (palantir#3290)

* Initialize QueryList's activeItem state correctly based on prop.

* Fix comment typo

* Code cleanup

* [PanelStack] Allow any prop type for initial panels (palantir#3295)

* [Tooltip] allow HOVER interactions (palantir#3291)

* [Tag] fill & [TagInput] intent props (palantir#3237)

* add Tag fill prop

* add TagInput intent prop

* add tag fill styles & example switch

* docs: Fix link to Popover (palantir#3300)

* Add directory details to packages/*/package.json (palantir#3301)

Specifying the directory as part of the `repository` field in a `package.json`
allows third party tools to provide better support when working with monorepos.
For example, it allows them to correctly construct a commit diff for a specific
package.

This format was accepted by npm in
[npm/rfcs#19](npm/rfcs#19).

* Add directory to repository details in package.json files (palantir#3299)

Specifying the directory as part of the `repository` field in a `package.json`
allows third party tools to provide better support when working with monorepos.
For example, it allows them to correctly construct a commit diff for a specific
package.

This format was accepted by npm in npm/rfcs#19.

* [select] Add optional "itemsEqual" comparator prop to QueryList and related components (palantir#3285)

* Improve QueryList and related components to support optional
equality test implementation for non-primitive item types.

* Revert change to use undefined for representing no selection

* Finish revert change to use undefined for representing no selection

* Remove TODO

* Remove unnecessary param documentation

* Rename "areValuesEqual" prop to "itemsEqual"

* Improve "itemsEqual" prop to also support a property name.

* Documentation typos

* Documentation improvements

* Update copyright year in new file

* Rename new unit test file

* [DRP] Shortcuts support changing time & docs (palantir#3293)

* shortcut shouldChangeTime => includeTime

* revert unnecessary test changes

* add Shortcuts docs to DRP

* Publish

 - @blueprintjs/core@3.12.0
 - @blueprintjs/datetime@3.7.0
 - @blueprintjs/docs-theme@3.0.4
 - @blueprintjs/icons@3.5.1
 - @blueprintjs/karma-build-scripts@0.9.1
 - @blueprintjs/labs@0.16.3
 - @blueprintjs/node-build-scripts@0.8.1
 - @blueprintjs/select@3.6.0
 - @blueprintjs/table@3.4.1
 - @blueprintjs/test-commons@0.8.1
 - @blueprintjs/timezone@3.3.0
 - @blueprintjs/tslint-config@1.7.1
 - @blueprintjs/webpack-build-scripts@0.7.1

* [select] consistency refactors (palantir#3305)

* code consistency across `select` components:

- public state = ... (not inconstructor)
- non-optional refs
- safeInvokeMember to reduce destructuring

* fix tests, explicit null check

* dedupe shortcuts prop types (palantir#3311)

* [NumericInput] allows min === max (palantir#3296)

* NumericInput allows min === max

* add test

* [NumericInput] new rightElement prop (palantir#3314)

* Update select-component.md (palantir#3319)

* Fixing typo (palantir#3318)

Missing "and"

* Added new inbox icons (palantir#3335)

* [docs] click to download sketch files from Resources page (palantir#3334)

* click to download sketch files from Resources page

* lint

* use /raw/ url to download actual file

* rename resource files so they download correctly

* add "Missing fonts?" callout

* minor style polish

* Add internal text to switch component (palantir#3327)

* switch text v0

* font size a bit smaller

* add an example of internal text property

* test

* cleanup

* lint fixes

* review comments

* remove whitespace in tests

* more review comments

* even more review changes

* remove errant property

* restore comment

* update prop docs

* additional tests

* remove unnecessary checks

* [Spinner] SIZE_SMALL = 20 (palantir#3342)

* Spinner.SIZE_SMALL = 20

* fix isotest

* [NumericInput] countDecimalPlaces for number type (palantir#3337)

Fixes palantir#3336

* New Drawer component (palantir#2957)

* add files

* fixed styling

* dark theme added

* Added vertical orientation

* changed viewport units

* Added small and large sizes

* Standardized sizing

* backdrop fixed

* add tests

* small/large => one size prop

* update size constants

* add hasBackdrop switch to example

* use Drawer for API browser

* size prop docs

* fix isotest

* add size+vertical tests, actually run suite

* [DatePicker] fix onChange on month change after initial day selection (palantir#3343)

* fix onChange doesn't fire on month change after initial day selection
Fixes palantir#3340

* change !== to != operator

* add test onChange fired when month is changed for uncontrolled datepicker

* Publish

 - @blueprintjs/core@3.13.0
 - @blueprintjs/datetime@3.7.1
 - @blueprintjs/icons@3.6.0
 - @blueprintjs/select@3.6.1

* Corrected the type of Popover's onInteraction prop (palantir#3348)

* ButtonGroup supports "fill" prop when Buttons are wrapped in Popovers (palantir#3347)

* 🔧 upgrade tslint (palantir#3315)

* Fix shortcuts.tsx react import typings (palantir#3356)

* [Tabs] add panelClassName prop (palantir#3351)

* Fix lint (palantir#3374)

* [Core] Fixed not applying intent color for icon inside tree node (palantir#3355)

* [Core] Add option to make tree node disabled (palantir#3354)

* Drawer default prop warning fix (palantir#3382)

* [Select] Create-able Select components (palantir#3381)

* Upgrade dev dependencies and types (palantir#3370)

* Publish

 - @blueprintjs/core@3.14.0
 - @blueprintjs/docs-app@3.14.0
 - @blueprintjs/select@3.7.0

* [Core] Overlay: fix transitionDuration documentation (palantir#3391)

* [Core] Fix react types regression (palantir#3390)

* Publish

 - @blueprintjs/core@3.14.1
 - @blueprintjs/docs-app@3.14.1

* Publish

 - @blueprintjs/datetime@3.7.2

* [Core] Checkbox: fix indeterminate state update (palantir#3409)

Fixes palantir#3408

* Minor README updates

* [Core] Docs: fix small typo (palantir#3411)

"accomodate" to "accommodate"

* [Docs] Overlay Example: add option to test scrolling behavior (palantir#3406)

* Update Bug_report.md

* [datetime] docs: fix react-day-picker API hyperlink (palantir#3435)

* [core] TagInput: use undefined instead of null to hide clearButton (palantir#3436)

* [Select] hide QueryList item list when menuContent and createItemView are both null (palantir#3426)

* [MultiSelect] Enable pasting of multiple values (same as TagInput) (palantir#3428)

* [Core] Add z-index to panel stack header (palantir#3414)

* [Core] Add option to grow text area with input (palantir#3398)

* [Core] TextArea: fix style object regression (palantir#3440)

* [Core] Add position prop to Drawer component, deprecate vertical prop (palantir#3386)

* [Table] Fix resizable props documentation (palantir#3400)

* Switch to standard Apache-2.0 license (palantir#3457)

* [table] Fix documentation to use the right css file name (palantir#3452)

* Prepare release v3.15.0 (palantir#3458)

* Publish

 - @blueprintjs/core@3.15.0
 - @blueprintjs/datetime@3.8.0
 - @blueprintjs/docs-app@3.15.0
 - @blueprintjs/docs-theme@3.1.0
 - @blueprintjs/icons@3.7.0
 - @blueprintjs/karma-build-scripts@0.10.0
 - @blueprintjs/node-build-scripts@0.9.0
 - @blueprintjs/select@3.8.0
 - @blueprintjs/table@3.5.0
 - @blueprintjs/test-commons@0.9.0
 - @blueprintjs/timezone@3.4.0
 - @blueprintjs/tslint-config@1.8.0
 - @blueprintjs/webpack-build-scripts@0.8.0

* [Core] File input text styling for active selections (palantir#3375)

* [Icons] Added new inheritance icon (palantir#3451)

* Added new inheritance icon

* Updated content per CR

* Update font files

* Fix typo in bug report template

* [datetime] Fix DateInput IE11 bug when changing month/day (palantir#3471)

* Upgrade react-day-picker, fix caption months support, regen lockfile (palantir#3461)

* Publish

 - @blueprintjs/core@3.15.1
 - @blueprintjs/datetime@3.9.0
 - @blueprintjs/docs-app@3.15.1
 - @blueprintjs/icons@3.8.0

* [core] Fix NumericInput documentation of initial state value (palantir#3484)

* Upgrade documentalist, refactor CI config (palantir#3482)

* Publish

 - @blueprintjs/docs-app@3.15.2
 - @blueprintjs/docs-theme@3.2.0

* [docs] Fix accidental markdown strikethrough (palantir#3493)

- Incorrectly showed up as strikethrough text on https://blueprintjs.com/docs/#core/components/popover

* [datetime] [bugfix] Hover over date no longer clears time input (palantir#3502)

* [datetime] [bugfix] render the correct month when DRP singleMonthOnly is enabled (palantir#3504)

* [Icons] Added new UI icons (palantir#3510)

* [Select] Change activeItem when items change (palantir#3496)

* [datetime] Fix DRP inconsistency with single day ranges and time precision enabled (palantir#3557)

* Prepare datetime, icons, select release (palantir#3565)

* Publish

 - @blueprintjs/datetime@3.9.1
 - @blueprintjs/icons@3.9.0
 - @blueprintjs/select@3.8.1

* [docs-app] fix scrolling of interface definition drawer (palantir#3576)

* [core] Improve dark muted and disabled text contrast (palantir#3584)

* Fix docs rendering of mixed HTML / markdown content (palantir#3585)

* [dependencies] Bump js-yaml, cssnano, svgo

* [core] Fix number of clicks required to use HTMLSelect inside ControlGroup in Firefox (palantir#3568)

* [table] add editableTextProps to allow adjusting cells during editing (palantir#3350)

* [core] fix TagInput tags overflowing their container (palantir#3591)

* [core] Fix intent color for Icons inside Tree component in dark mode (palantir#3598)

* [core] Allow hiding panel stack header (palantir#3600)

* Update abstract button props to match react's. (palantir#3608)

React recently updated the typings for HTML button from 'string'
to a more limited union. See:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L1848
for the current types.

* [core] docs: use Pre component in Collapse example (palantir#3610)

* [core] Add controlled mode to PanelStack (palantir#3601)

* [datetime] feat(DateRangeInput): add support for disabling start or end input (palantir#3607)

* [table] feat(RowHeaderCell): Add support for nameRenderer (palantir#3447)

* Publish

 - @blueprintjs/core@3.16.0
 - @blueprintjs/datetime@3.10.0
 - @blueprintjs/docs-app@3.16.0
 - @blueprintjs/table@3.6.0

* Upgrade testing infrastructure (palantir#3615)

* Publish

 - @blueprintjs/core@3.16.1
 - @blueprintjs/karma-build-scripts@0.11.0
 - @blueprintjs/node-build-scripts@0.10.0

* Fix up inter-package dependencies

* Publish

 - @blueprintjs/core@3.16.2

* [tslint-config] Fix suggestion for <table> element replacement (palantir#3624)

* [datetime] Fix typing values into TimePicker's fields (palantir#3613)

* [docs-app] Fix minor bug in upload toast example (palantir#3626)

* [core] docs: add caveat about tooltip target element (palantir#3620)

* [select] bugfix(Select): fix keyboard navigation when all items disabled (palantir#3627)

* [select] fix: do not call itemRenderer when Select is disabled (palantir#3629)

* [core] fix(Toast): long words in toast messages no longer break container layout (palantir#3634)

* Various documentation fixes (palantir#3635)

* [core] fix(Switch): tweak dark theme hover/active colors (palantir#3637)

Fixes palantir#3599

* Split karma testing into more CI containers (palantir#3638)

* [core, select] feat: add fill prop to Popover, InputGroup, Suggest, MultiSelect (palantir#3636)

* Publish

 - @blueprintjs/core@3.17.0
 - @blueprintjs/datetime@3.10.1
 - @blueprintjs/docs-app@3.17.0
 - @blueprintjs/select@3.9.0
 - @blueprintjs/tslint-config@1.8.1

* [ci] fix: persist lib files when building dist

* Publish

 - @blueprintjs/core@3.17.1

* [datetime] feat(DatePicker): add option to highlight current day (palantir#3628)

* Publish

 - @blueprintjs/datetime@3.11.0
 - @blueprintjs/icons@3.9.1

* [core] feat(FileInput): add buttonText prop (palantir#3560)

* [core] fix(HotkeysTarget): invoke user-defined key event handlers correctly (palantir#3645)

* [core] fix(TextArea): grow box vertically to show initial content (palantir#3647)

* [table] fix EditableCell update cycle, improve EditableName docs (palantir#3649)

* [datetime] fix(DateRangeInput): maintain focus on time inputs during key interactions (palantir#3644)

* fix: restrict tslib dependency to minor version range

* chore: upgrade non-react typings

* [docs-app] feat(DateRangeInputExample): time picker toggle

* chore: upgrade to typescript 3.2 (palantir#3653)

* chore: upgrade to typescript 3.5.3 (palantir#3654)

* chore: upgrade documentalist (palantir#3656)

* [datetime] fix(DRI): do not close on selection when time inputs receive key presses (palantir#3658)

* [core] fix(EditableText): support selectAllOnFocus with type=number in latest React (palantir#3672)

* fix: correctly declare react peer deps in package.json (palantir#3676)

* [core] fix(Popover): only apply active class to target in uncontrolled mode (palantir#3677)

* [docs-app] create "Design Principles" section, mention CSS API contract (palantir#3678)

* chore: upgrade dependencies, delete labs package (palantir#3679)

* Publish

 - @blueprintjs/core@3.18.0
 - @blueprintjs/datetime@3.12.0
 - @blueprintjs/docs-app@3.18.0
 - @blueprintjs/docs-data@3.16.0
 - @blueprintjs/docs-theme@3.3.0
 - @blueprintjs/icons@3.10.0
 - @blueprintjs/karma-build-scripts@0.12.0
 - @blueprintjs/landing-app@3.16.0
 - @blueprintjs/node-build-scripts@0.11.0
 - @blueprintjs/select@3.10.0
 - @blueprintjs/table-dev-app@3.1.0
 - @blueprintjs/table@3.7.0
 - @blueprintjs/test-commons@0.10.0
 - test-react15@1.1.1
 - @blueprintjs/timezone@3.5.0
 - @blueprintjs/tslint-config@1.9.0
 - @blueprintjs/webpack-build-scripts@0.9.0

* chore: minor adjustment to vscode settings

* [core] fix(Drawer): use Sass variable $drawer-padding (palantir#3689)

Correcting use of $dialog-padding to $drawer-padding

* [core] feat: support create-react-app environment variable (palantir#3691)

Allows create-react-app users to set a custom blueprint namespace more easily.

* [table] fix(EditableCell): support tabIndex prop correctly (palantir#3687)

* [core] docs(Popover) fix import statements (palantir#3708)

* chore: Update Lerna URL in Readme (palantir#3715)

* [core] fix(Popover): click on target no longer affects hover behavior (palantir#3716)

* [core] fix(AnchorButton): left text alignment (palantir#3713)

* [datetime] feat(DateRangePicker): add active menu styles to shortcuts (palantir#3688)

* [datetime] fix: upgrade react-day-picker, clean up type imports (palantir#3725)

* [core] docs: add missing closing angle bracket (palantir#3714)

* chore: update code sandbox to latest package versions

* [core] fix(MenuItem): avoid React warning for unknown attr labelClassName (palantir#3730)

* Publish

 - @blueprintjs/core@3.18.1
 - @blueprintjs/datetime@3.13.0
 - @blueprintjs/docs-app@3.18.1
 - @blueprintjs/table@3.7.1

* [core] docs(Toaster): fix position prop comment (palantir#3657)

* [icons] feat: add learning, new layer(s), stopwatch icons (palantir#3745)

* [core] fix(MultiSlider): fix rendering bug with track fill (palantir#3733)

* Refactor to use React 16.3+ lifecycle methods (palantir#3702)

* [datetime] fix(TimePicker): allow more natural text entry (palantir#3762)

* [select] fix(Suggest): Default autoComplete for text input to "off" (palantir#3724)

* [core] feat(Tab): spread HTML props to rendered div (palantir#3766)

* Publish

 - @blueprintjs/core@3.19.0
 - @blueprintjs/datetime@3.14.0
 - @blueprintjs/docs-app@3.19.0
 - @blueprintjs/docs-theme@3.4.0
 - @blueprintjs/icons@3.11.0
 - @blueprintjs/select@3.11.0
 - @blueprintjs/table@3.8.0
 - @blueprintjs/timezone@3.6.0

* fix: lifecycle methods in MultiSlider, Resizable, and TableBodyCell (palantir#3771)

* Publish

 - @blueprintjs/core@3.19.1
 - @blueprintjs/table@3.8.1

* [select] fix(QueryList): re-render when controlled items change (palantir#3776)

* Publish

 - @blueprintjs/select@3.11.1

* [core] fix(Toast): fix bottom toast animation (palantir#3784)

* [core] feat(Breadcrumb): render icon if provided through props (palantir#3786)

* [core] fix(NumericInput): correct styles when placed inside label (palantir#3809)

* [core] fix(PanelStack): do not trigger unintended animations (palantir#3787)

* [core] docs: fix spelling of "dropdown" (palantir#3806)

* chore: use latest tree-sitter-typescript from github (palantir#3812)

* [core] fix(TagInput): prevent infinite setState in componentDidUpdate (palantir#3811)

* chore: remove commented code

* [core] fix(InputGroup): prevent infinite setState in componentDidUpdate (palantir#3813)

* [icons] feat: new icons (palantir#3816)

- New drawing
- Data lineage
- Archive
- Unarchive
- Signal search

* [core] feat(Toaster): ability to set max number of active toasts (palantir#3770)

* [datetime] feat: export IDateRangeInputProps (palantir#3821)

* [core] fix(NumericInput): do not trigger onValueChange if value is changed via props (palantir#3814)

* [datetime] feat(DateInput): add fill prop (palantir#3777)

* [datetime] feat: add shortcuts to single date picker (palantir#3818)

* [table] fix: cell copy to clipboard works in IE11 (palantir#3764)

* [core] fix(Collapse): simplify lifecycle, fix animation bugs (palantir#3831)

* [select] fix(MultiSelect): better handling of key events in Tag… (palantir#3836)

* [core] fix(Switch): indicator background colors (palantir#3828)

* Publish

 - @blueprintjs/core@3.20.0
 - @blueprintjs/datetime@3.15.0
 - @blueprintjs/docs-app@3.20.0
 - @blueprintjs/icons@3.12.0
 - @blueprintjs/select@3.11.2
 - @blueprintjs/table@3.8.2
 - @blueprintjs/test-commons@0.10.1

* [datetime] fix(Shortcuts): make shortcuts container focusable (palantir#3843)

* Publish

 - @blueprintjs/datetime@3.15.1

* [core] feat(EditableText): add alwaysRenderInput experimental feature (palantir#3841)

* [core] feat(Drawer): add Sass variables for background color (palantir#3857)

* chore: update dev env prerequisites

* [core] fix(TagInput): add intent styling when component is active (palantir#3855)

* Publish

 - @blueprintjs/core@3.21.0
 - @blueprintjs/docs-app@3.21.0

* [core] fix: Explicitly declare dom4 side effects (palantir#3867)

* [core] chore: isolate dom4 import to its own module (palantir#3868)

* [core] feat: high contrast CSS with color adjustments to pass WCAG requirements (palantir#3862)

* Publish

 - @blueprintjs/core@3.22.0
 - @blueprintjs/docs-app@3.22.0

* Fix PanelStack (palantir#3879)

Approving since only test failures are unrelated

* Fix DatePicker unit test (palantir#3880)

DatePicker unit tests started failing in December because
it relied on being able to press "next month". This change
sets the initial month to January.

* add tractor, truck, bring in data icons (palantir#3878)

* Release core 3.22.1

* Fix 3882 (palantir#3886)

Add gated input.focus to reinstate previous behavior

* Update react-popper to include important bugfix (palantir#3885)

* Update react-popper to include the fix from floating-ui/react-popper#320

* Update popper to 1.3.7

* Dedupe

* Yarn fix

* Yarny yarn

* Yo yo yarn

* Publish
- @blueprintjs/core@3.22.2
- @blueprintjs/docs-app@3.22.2

* Include index.js files in sideEffects list (palantir#3876)

* Include index files in sideEffects list

* Remove unnecessary index.js sideEffects

* Publish
- @blueprintjs/core@3.22.3
- @blueprintjs/docs-app@3.22.3

* [timezone] fix: upgrade moment-timezone to fix Brazilian timezones (palantir#3873)

* Publish

 - @blueprintjs/icons@3.13.0
 - @blueprintjs/timezone@3.6.1

* [core] fix(Toast): bottom toasts exit in the correct direction (palantir#3911)

Fixes palantir#3791

* [docs-app] fix(FormGroupExample): label ids (palantir#3892)

* [core] fix(NumericInput): correct rounding of default value (palantir#3894)

Fixes palantir#3889

* [docs-app] fix: CSS wrapping of main title in sidebar (palantir#3896)

* [core] fix(Toast): bottom shadow is no longer clipped (palantir#3912)

* [datetime] chore: fix tests which used year 2020 (palantir#3916)

* chore: use ESLint to run TSlint (palantir#3887)

* [core] feat: add intent prop to Slider and RangeSlider (palantir#3913)

* [table] fix: invalidate grid before rendering table when dimensions change (palantir#3888)

* chore: upgrade dependencies (palantir#3920)

* [core] docs: update link to popper.js modifiers reference (palantir#3922)

* [core] docs(Popover): fix text referencing "dismiss" buttons in example (palantir#3923)

* [core] fix(EditableText): allow setting value to null in controlled mode (palantir#3924)

* Publish

 - @blueprintjs/core@3.23.0
 - @blueprintjs/datetime@3.15.2
 - @blueprintjs/eslint-config@0.1.0

* [core] fix(Overlay): avoid rare crash in focus handling logic (palantir#3936)

* [resources] update sketch palette with named colors instead of hex (palantir#3931)

* chore: convert custom tslint rules to eslint (palantir#3917)

* [eslint-plugin-blueprint] fix(icon-components): autofix (palantir#3938)

also run this package's tests in CI properly

* [table] fix: column resize calculation on header double click (palantir#3732)

* [core] fix(Collapse): closing animation (palantir#3929)

* Prepare release (palantir#3939)

* Publish

 - @blueprintjs/core@3.23.1
 - @blueprintjs/docs-app@3.23.0
 - @blueprintjs/eslint-config@0.2.0
 - @blueprintjs/eslint-plugin-blueprint@0.1.0
 - @blueprintjs/node-build-scripts@1.0.0
 - @blueprintjs/table@3.8.3
 - @blueprintjs/tslint-config@2.0.0

* fix: eslint-config package reference, improve es-lint build script (palantir#3940)

* Publish

 - @blueprintjs/eslint-config@0.2.1
 - @blueprintjs/node-build-scripts@1.1.0

* chore: update README with new ESLint packages

* [core] feat(PanelStack): add renderCurrentPanelOnly prop (palantir#3768)

* [core] fix(PanelStack): rename prop and other fixes (palantir#3950)

* [core] feat(Button): add "outlined" modifier (palantir#3947)

* chore: upgrade to typescript 3.7 (palantir#3953)

* [core] remove non-HTML attributes in overflow menu items (palantir#3956)

* [icons] feat: add diagnosis and lab test icons (palantir#3966)

* [core] fix(HtmlSelect): text color for disabled options in dark mode (palantir#3968)

* [core] docs(Alert): clarify that intent applies to icon too (palantir#3978)

* [core] fix(InputGroup): right element padding adjusting on update (palantir#3973)

* [select] feat(Suggest): sync activeItem with selectedItem on popover close (palantir#3934)

* Publish

 - @blueprintjs/core@3.24.0
 - @blueprintjs/docs-app@3.24.0
 - @blueprintjs/icons@3.14.0
 - @blueprintjs/select@3.12.0

* [datetime] fix(DateRange): values are possibly null, not undefi… (palantir#3983)

fixes palantir#3970

* [core] feat(NumericInput): supply input element to onValueChange (palantir#3982)

* [core] feat(NumericInput): supply input element in onValueChange callback

* small refactor, use optional chaining to invoke callback

* fix lint

* fix more tests

* fix lint, remove describe.only

* [eslint-config] docs: add README (palantir#3985)

* [docs-app] feat(BreadcrumbsExample): render current as input (palantir#3986)

* [core] feat(TagInput): handle delete to remove items (palantir#3993)

Allows users to press `DELETE` on their keyboards to delete
an item from `<TagInput />`, which in turn is used by the
`Select` family of components.

Handling `DELETE` to remove item mimics the way `DELETE` works
in a text editor, where an user can delete from the beginning
of the line forward. Reaching the end of the line, in our
case passing the last selected item in `<TagInput />` will stop
deleting. Moving the selection to the first item and deleting
from that point onwards repeatedly will delete all the selected
items.

* [core] fix(Button): remove invalid HTML attr (palantir#3998)

update INVALID_PROPS list used by removeNonHTMLProps() utility fn

* [datetime] docs: improved localization code example (palantir#4003)

* chore(deps): bump acorn from 5.7.3 to 5.7.4 (palantir#4011)

Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](acornjs/acorn@5.7.3...5.7.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [datetime] feat(DatePicker): add support for dayPickerProps.renderDay (palantir#4012)

* docs(README): update code sandbox link

Co-authored-by: Sebastian Brückner <mail@invlid.com>
Co-authored-by: Ed Hinchliffe <ed@pixelnebula.com>
Co-authored-by: Chris Lewis <cmslewis@gmail.com>
Co-authored-by: Gilad Gray <ggray@palantir.com>
Co-authored-by: Gilad Gray <giladgray@gmail.com>
Co-authored-by: yixunx <yixunx@gmail.com>
Co-authored-by: Jeff Lau <jlau@uselesspickles.com>
Co-authored-by: Gianfrancø Palumbo <gianpaj@users.noreply.github.com>
Co-authored-by: Philip Harrison <philip@mailharrison.com>
Co-authored-by: Grey Baker <greysteil@gmail.com>
Co-authored-by: Mark Sinapilo <markdhel@users.noreply.github.com>
Co-authored-by: mohanaravind <mohanaravind@gmail.com>
Co-authored-by: Piotr Adam Kwiatkowski <contact@piotrkwiatkowski.co.uk>
Co-authored-by: Leah Anderson <leah.a.anderson@gmail.com>
Co-authored-by: Isabel Muñoz <teanocrata@gmail.com>
Co-authored-by: Endi Modric <endi.modric@outlook.com>
Co-authored-by: MGHawes <hawes.info@gmail.com>
Co-authored-by: Marvin Sum <831708+marvinsum@users.noreply.github.com>
Co-authored-by: Phil Chen <c.phillip91@gmail.com>
Co-authored-by: Yury Shevchenko <n1313@users.noreply.github.com>
Co-authored-by: Shuyang Li <shuyang.li.95@gmail.com>
Co-authored-by: Jacek Jagiełło <jacekjagiello47@gmail.com>
Co-authored-by: Acko <spasic.acko.95@gmail.com>
Co-authored-by: Adi Dahiya <adi.dahiya14@gmail.com>
Co-authored-by: Adi Dahiya <adahiya@palantir.com>
Co-authored-by: Gabe Boning <gboning@gmail.com>
Co-authored-by: Stephen Kennedy <stephenjameskennedy@gmail.com>
Co-authored-by: jamison judge <jj@jamisonjudge.com>
Co-authored-by: wangxiaolei <fatelei@gmail.com>
Co-authored-by: Matt Conway <mattconway55@gmail.com>
Co-authored-by: Thomas Rich <tnrich@teselagen.com>
Co-authored-by: Paul Okuda <paulyokuda@gmail.com>
Co-authored-by: jroitgrund <jroitgrund@gmail.com>
Co-authored-by: Nick Zelei <nickzelei@gmail.com>
Co-authored-by: peachfuzz <32380679+peachfuzz@users.noreply.github.com>
Co-authored-by: Christopher Yu <cyu06@hotmail.com>
Co-authored-by: Gertjan van Oosten <gertjan@west.nl>
Co-authored-by: Bala <bala_krishna@outlook.com>
Co-authored-by: James Greenleaf <james@greenle.af>
Co-authored-by: David <david.lobosco@uprightlabs.com>
Co-authored-by: Rhys Brett-Bowen <rhysbrettbowen@gmail.com>
Co-authored-by: Chris Lott <chrisnlott@gmail.com>
Co-authored-by: alecf <alecf@flett.org>
Co-authored-by: n1xx1 <simo.sc22@gmail.com>
Co-authored-by: Sebastian Brückner <sbrueckner@palantir.com>
Co-authored-by: Mac Lockard <mlockard@palantir.com>
Co-authored-by: ericjeney <me@ericjeney.com>
Co-authored-by: Shovon Hasan <im.shovonhasan@gmail.com>
Co-authored-by: Tanmoy Bhowmik <tanmoy.openroot@gmail.com>
Co-authored-by: Benjamin Lee <leebyp@gmail.com>
Co-authored-by: Veda <pal.veda.deepta@gmail.com>
Co-authored-by: Jeremy Paterson <jaydpaterson@gmail.com>
Co-authored-by: Mihail Novikov <thepocp@gmail.com>
Co-authored-by: 李逸飛 <45546645+li-yifei@users.noreply.github.com>
Co-authored-by: Vadzim <v@vadzim.info>
Co-authored-by: Nathan Hinish <nathan.hinish@gmail.com>
Co-authored-by: doanguyen <dungnv2410@gmail.com>
Co-authored-by: Daniel Saewitz <switz213@gmail.com>
Co-authored-by: Garrett B <garrettgsb@gmail.com>
Co-authored-by: Thibault V <8404502+thibaultvanluchene@users.noreply.github.com>
Co-authored-by: Darren Zhao <darryqueen@berkeley.edu>
Co-authored-by: Adam Storr <155064+adamstorr@users.noreply.github.com>
Co-authored-by: Lei Ferretti <lei.ferretti@oaknorth.ai>
Co-authored-by: Tobias Lengsholz <tobias.lengsholz@invision.de>
Co-authored-by: trevor <tmehard@gmail.com>
Co-authored-by: Pep Rodeja <pep@rodeja.me>
Co-authored-by: Caleb Angelino <belac9615@users.noreply.github.com>
Co-authored-by: Adam Storr <adamstorr@gmail.com>
Co-authored-by: jamesgiu <james.giuffrida@gmail.com>
Co-authored-by: Max Bucknell <me@maxbucknell.com>
Co-authored-by: Jonathan Christopher <nathanchrs@users.noreply.github.com>
Co-authored-by: Ryan Hermstein <rlhermstein@yahoo.com>
Co-authored-by: Chu-Ya Chia <chuyachia@gmail.com>
Co-authored-by: Bill Dwyer <bdwyer@palantir.com>
Co-authored-by: Miklós András Danka <danka.miklos@gmail.com>
Co-authored-by: Stephanie Yu <stephaniey@palantir.com>
Co-authored-by: Meike <meike@grewing.eu>
Co-authored-by: J Paterson <contact@jpatersondev.com>
Co-authored-by: Denis Sokolov <denis@sokolov.cc>
Co-authored-by: Igor Lysak <igorlysak@agilestacks.com>
Co-authored-by: John Wiseheart <johnwiseheart@gmail.com>
Co-authored-by: Boaz Rymland <boazrymland@users.noreply.github.com>
Co-authored-by: Johnny Goodnow <jgoodnow@fastmail.com>
Co-authored-by: David Esteves <estevesd@users.noreply.github.com>
Co-authored-by: John Wiseheart <jwiseheart@palantir.com>
Co-authored-by: Valentine Nuikin <zwerg44@gmail.com>
Co-authored-by: Radosław Miernik <radekmie@gmail.com>
Co-authored-by: Charles Perinet <charles.perinet@gmail.com>
Co-authored-by: Spencer Sutton <spencersutton@users.noreply.github.com>
Co-authored-by: Rootul Patel <rootulp@gmail.com>
Co-authored-by: lexistein <61256233+lexistein@users.noreply.github.com>
Co-authored-by: Trevor Mehard <trevor.mehard@crunchydata.com>
Co-authored-by: Leon Coto <grancalavera@users.noreply.github.com>
Co-authored-by: Lumyo <thib.bouillon@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Malik Bagwala <m.bagwala@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants