-
Notifications
You must be signed in to change notification settings - Fork 64
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
LG-4121: popover refactor #2520
Changes from all commits
5522136
2035613
24973e6
acfe4ca
f367562
82c9341
6794c10
6b07b6d
c695571
21c4080
f96bde5
cd7d68d
4d645a2
9188b61
b57c720
18de486
732fae5
24578ce
82b7417
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
'@lg-chat/input-bar': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `InputBar` renders results menu in top layer using popover API. As a result, the following props are deprecated and removed: | ||
- `portalClassName` | ||
- `portalContainer` | ||
- `portalRef` | ||
- `scrollContainer` | ||
- `usePortal` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
--- | ||
'@leafygreen-ui/chip': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): Removes `popoverZIndex` prop because the `InlineDefinition` component instance will now render in the top layer | ||
Comment on lines
+2
to
+5
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: Could avoid a major change by just deprecating the prop, and having it not do anything. Not a huge deal though since we have so many other major changes |
||
|
||
#### Migration guide | ||
|
||
##### Old | ||
```js | ||
<Chip popoverZIndex={9999} /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<Chip /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
'@lg-tools/cli': minor | ||
--- | ||
|
||
Adds `--packages` flag to `lg codemod` command. Passing in this flag will specify which package names should be filtered for in a given codemod. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
--- | ||
'@leafygreen-ui/code': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `Code` renders the copy button tooltip and language selector in the top layer using popover API. As a result, the following props are removed: | ||
- `popoverZIndex` | ||
- `portalClassName` | ||
- `portalContainer` | ||
- `scrollContainer` | ||
- `usePortal` | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<Code popoverZIndex={9999} usePortal={false} /> | ||
<Code portalClassName="portal-class" usePortal /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<Code /> | ||
<Code /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
--- | ||
'@lg-tools/codemods': minor | ||
--- | ||
|
||
[LG-4525](https://jira.mongodb.org/browse/LG-4525) Adds `popover-v12` codemod which can be used to refactor popover component instances. Users can filter for specific packages using the `--packages` flag. | ||
|
||
This codemod does the following: | ||
|
||
1. Adds an explicit `usePortal={true}` declaration if left undefined and consolidates the `usePortal` and `renderMode` props into a single `renderMode` prop for components in the following packages: | ||
|
||
- `@leafygreen-ui/combobox` | ||
- `@leafygreen-ui/menu` | ||
- `@leafygreen-ui/popover` | ||
- `@leafygreen-ui/select` | ||
- `@leafygreen-ui/split-button` | ||
- `@leafygreen-ui/tooltip` | ||
|
||
2. Removes `popoverZIndex`, `portalClassName`, `portalContainer`, `portalRef`, `scrollContainer`, and `usePortal` props from the following components: | ||
|
||
- `@leafygreen-ui/info-sprinkle` | ||
- `@leafygreen-ui/inline-definition` | ||
- `@leafygreen-ui/number-input` | ||
|
||
3. Removes `popoverZIndex`, `portalClassName`, `portalContainer`, `portalRef`, and `scrollContainer` props from the following components: | ||
|
||
- `@leafygreen-ui/date-picker` | ||
- `@leafygreen-ui/guide-cue` | ||
|
||
4. Removes `popoverZIndex`, `portalClassName`, `portalContainer`, `scrollContainer`, and `usePortal` props from `Code` component in the `@leafygreen-ui/code` package | ||
|
||
5. Removes `portalClassName`, `portalContainer`, `portalRef`, `scrollContainer`, and `usePortal` props from `SearchInput` component in the `@leafygreen-ui/search-input` package | ||
|
||
6. Removes `shouldTooltipUsePortal` prop from `Copyable` component in the `@leafygreen-ui/copyable` package | ||
|
||
7. Replaces `justify="fit"` prop value with `justify="middle"` for components in the following packages: | ||
|
||
- `@leafygreen-ui/date-picker` | ||
- `@leafygreen-ui/info-sprinkle` | ||
- `@leafygreen-ui/inline-definition` | ||
- `@leafygreen-ui/menu` | ||
- `@leafygreen-ui/popover` | ||
- `@leafygreen-ui/tooltip` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
'@leafygreen-ui/combobox': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): Replaces `usePortal` prop with `renderMode` prop. `renderMode="inline"` and `renderMode="portal"` are deprecated, and all popover elements should migrate to using the top layer. The old default was `usePortal=true`, and the new default is `renderMode="top-layer"`. | ||
|
||
See [@leafygreen-ui/popover package 12.0.0 changelog](https://github.com/mongodb/leafygreen-ui/blob/main/packages/popover/CHANGELOG.md#1200) for more info. | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<Combobox popoverZIndex={9999} usePortal={false} /> | ||
<Combobox portalClassName="portal-class" usePortal /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<Combobox popoverZIndex={9999} renderMode="inline" /> | ||
<Combobox portalClassName="portal-class" renderMode="portal" /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
--- | ||
'@leafygreen-ui/copyable': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `Copyable` renders tooltip in the top layer using popover API. As a result, the `shouldTooltipUsePortal` prop is removed | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<Copyable shouldTooltipUsePortal={false} /> | ||
<Copyable shouldTooltipUsePortal /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<Copyable /> | ||
<Copyable /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- | ||
'@leafygreen-ui/date-picker': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `DatePicker` renders menu, month selector, and year selector in top layer using popover API. As a result, the following props are deprecated and removed: | ||
- `popoverZIndex` | ||
- `portalClassName` | ||
- `portalContainer` | ||
- `portalRef` | ||
- `scrollContainer` | ||
|
||
Additional changes include: | ||
- Deprecates and removes `justify="fit"`. Instead, use `justify="middle"` | ||
- Removes unused `contentClassName` prop | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<DatePicker portalContainer={containerRef} scrollContainer={containerRef} /> | ||
<DatePicker portalClassName="portal-class" /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<DatePicker /> | ||
<DatePicker /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
--- | ||
'@leafygreen-ui/guide-cue': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `GuideCue` renders beacon and tooltip using popover API. As a result, the following props are removed: | ||
- `popoverZIndex` | ||
- `portalClassName` | ||
- `portalContainer` | ||
- `portalRef` | ||
- `scrollContainer` | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<GuideCue popoverZIndex={9999} /> | ||
<GuideCue portalContainer={containerRef} scrollContainer={containerRef} /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<GuideCue /> | ||
<GuideCue /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
'@leafygreen-ui/hooks': minor | ||
--- | ||
|
||
Add `useMergeRefs` hook for merging array of refs into a single memoized callback ref or `null` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
--- | ||
'@leafygreen-ui/info-sprinkle': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `InfoSprinkle` renders tooltip in the top layer using popover API. As a result, the following props are removed: | ||
- `popoverZIndex` | ||
- `portalClassName` | ||
- `portalContainer` | ||
- `portalRef` | ||
- `scrollContainer` | ||
- `usePortal` | ||
|
||
Additional changes include: | ||
- Deprecates and removes `justify="fit"`. Instead, use `justify="middle"` | ||
- Opens tooltip immediately on hover instead of default 500ms delay | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<InfoSprinkle popoverZIndex={9999} usePortal={false} /> | ||
<InfoSprinkle portalClassName="portal-class" usePortal /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<InfoSprinkle /> | ||
<InfoSprinkle /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
--- | ||
'@leafygreen-ui/inline-definition': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `InlineDefinition` renders tooltip in the top layer using popover API. As a result, the following props are removed: | ||
- `popoverZIndex` | ||
- `portalClassName` | ||
- `portalContainer` | ||
- `portalRef` | ||
- `scrollContainer` | ||
- `usePortal` | ||
|
||
Additional changes include: | ||
- Deprecates and removes `justify="fit"`. Instead, use `justify="middle"` | ||
- Opens tooltip immediately on hover instead of default 500ms delay | ||
- Reorganizes file structure | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<InlineDefinition popoverZIndex={9999} usePortal={false} /> | ||
<InlineDefinition portalClassName="portal-class" usePortal /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<InlineDefinition /> | ||
<InlineDefinition /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
'@leafygreen-ui/leafygreen-provider': minor | ||
--- | ||
|
||
[LG-4446](https://jira.mongodb.org/browse/LG-4446): Adds `PopoverPropsContext` to pass props to a deeply nested popover element | ||
|
||
Additionally exposes a `forceUseTopLayer` prop in the `LeafyGreenProvider` which can be used to test interactions with all LG popover elements forcibly set to `renderMode="top-layer"`. This can help pressure test for any regressions to more confidently and safely migrate. However, this should only be used when all LG dependencies are relying on v12+ of `@leafygreen-ui/popover`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What does this do if someone has old popover dependencies? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It won't do anything in those cases, but its purpose is nullified in that case since it's intended to test if using all top layer popovers is viable @TheSonOfThomp I think the current naming is fine with me, but do you feel strongly about renaming to include that prefix pattern? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nah don't feel too strongly on that, just wanted to check |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
--- | ||
'@leafygreen-ui/menu': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): Replaces `usePortal` prop with `renderMode` prop. `renderMode="inline"` and `renderMode="portal"` are deprecated, and all popover elements should migrate to using the top layer. The old default was `usePortal=true`, and the new default is `renderMode="top-layer"`. | ||
|
||
See [@leafygreen-ui/popover package 12.0.0 changelog](https://github.com/mongodb/leafygreen-ui/blob/main/packages/popover/CHANGELOG.md#1200) for more info. | ||
|
||
Additional changes include: | ||
- Deprecates and removes `justify="fit"`. Instead, use `justify="middle"` | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<Menu popoverZIndex={9999} usePortal={false} /> | ||
<Menu portalClassName="portal-class" usePortal /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<Menu popoverZIndex={9999} renderMode="inline" /> | ||
<Menu portalClassName="portal-class" renderMode="portal" /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- | ||
'@leafygreen-ui/number-input': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `NumberInput` renders unit selector and tooltip in the top layer using popover API. As a result, the following props are removed: | ||
- `popoverZIndex` | ||
- `portalClassName` | ||
- `portalContainer` | ||
- `portalRef` | ||
- `scrollContainer` | ||
- `usePortal` | ||
|
||
Additional changes include: | ||
- Opens tooltip immediately on hover instead of default 500ms delay | ||
|
||
#### Migration guide | ||
|
||
Use [popover-v12 codemod](https://github.com/mongodb/leafygreen-ui/tree/main/tools/codemods#popover-v12) for migration assistance. | ||
|
||
##### Old | ||
```js | ||
<NumberInput popoverZIndex={9999} usePortal={false} /> | ||
<NumberInput portalClassName="portal-class" usePortal /> | ||
``` | ||
|
||
##### New | ||
```js | ||
<NumberInput /> | ||
<NumberInput /> | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
'@lg-tools/validate': minor | ||
--- | ||
|
||
Updates `ignoreFilePatterns` and `depcheckOptions.ignorePatterns` to exclude validating dependencies in `*.input.*` and `*.output.*` files in `tools/codemods` directory |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
'@leafygreen-ui/pagination': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `Pagination` renders page selectors in the top layer using popover API |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
'@leafygreen-ui/pipeline': major | ||
--- | ||
|
||
[LG-4121](https://jira.mongodb.org/browse/LG-4121): `Pipeline` renders tooltip in the top layer using popover API | ||
|
||
Additionally, the tooltip opens immediately on hover instead of default 500ms delay |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This one is codemod-able, right? Maybe we should mention the codemod in the changeset?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's excluded from the codemod because users haven't used the props in the wild