-
Notifications
You must be signed in to change notification settings - Fork 2.9k
fix(Popup): prevent closing popup when finishing select text outside #19201
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
Conversation
|
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit 83a7995:
|
Asset size changes
Baseline commit: 86476ee0511ad2693c2829b959f93a87ad10f095 (build) |
📊 Bundle size report🤖 This report was generated against 86476ee0511ad2693c2829b959f93a87ad10f095 |
Perf Analysis (
|
| Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
|---|---|---|---|---|---|
| Avatar | mount | 792 | 845 | 5000 | |
| BaseButton | mount | 888 | 934 | 5000 | |
| Breadcrumb | mount | 2669 | 2624 | 1000 | |
| ButtonNext | mount | 432 | 418 | 5000 | |
| Checkbox | mount | 1524 | 1563 | 5000 | |
| CheckboxBase | mount | 1290 | 1283 | 5000 | |
| ChoiceGroup | mount | 4759 | 4804 | 5000 | |
| ComboBox | mount | 1014 | 969 | 1000 | |
| CommandBar | mount | 10377 | 10163 | 1000 | |
| ContextualMenu | mount | 6322 | 6309 | 1000 | |
| DefaultButton | mount | 1114 | 1112 | 5000 | |
| DetailsRow | mount | 3743 | 3741 | 5000 | |
| DetailsRowFast | mount | 3734 | 3711 | 5000 | |
| DetailsRowNoStyles | mount | 3587 | 3550 | 5000 | |
| Dialog | mount | 2149 | 2121 | 1000 | |
| DocumentCardTitle | mount | 146 | 142 | 1000 | |
| Dropdown | mount | 3310 | 3224 | 5000 | |
| FluentProviderNext | mount | 7567 | 7471 | 5000 | |
| FocusTrapZone | mount | 1794 | 1830 | 5000 | |
| FocusZone | mount | 1803 | 1845 | 5000 | |
| IconButton | mount | 1768 | 1727 | 5000 | |
| Label | mount | 340 | 331 | 5000 | |
| Layer | mount | 1800 | 1762 | 5000 | |
| Link | mount | 465 | 461 | 5000 | |
| MakeStyles | mount | 1864 | 1830 | 50000 | |
| MenuButton | mount | 1443 | 1475 | 5000 | |
| MessageBar | mount | 2146 | 2138 | 5000 | |
| Nav | mount | 3261 | 3311 | 1000 | |
| OverflowSet | mount | 1061 | 1037 | 5000 | |
| Panel | mount | 1359 | 2120 | 1000 | |
| Persona | mount | 810 | 832 | 1000 | |
| Pivot | mount | 1405 | 1427 | 1000 | |
| PrimaryButton | mount | 1289 | 1262 | 5000 | |
| Rating | mount | 7780 | 7634 | 5000 | |
| SearchBox | mount | 1370 | 1343 | 5000 | |
| Shimmer | mount | 2563 | 2568 | 5000 | |
| Slider | mount | 1958 | 2004 | 5000 | |
| SpinButton | mount | 5166 | 5018 | 5000 | |
| Spinner | mount | 417 | 434 | 5000 | |
| SplitButton | mount | 3257 | 3137 | 5000 | |
| Stack | mount | 498 | 509 | 5000 | |
| StackWithIntrinsicChildren | mount | 1533 | 1496 | 5000 | |
| StackWithTextChildren | mount | 4544 | 4547 | 5000 | |
| SwatchColorPicker | mount | 10320 | 10160 | 5000 | |
| Tabs | mount | 1437 | 1421 | 1000 | |
| TagPicker | mount | 2611 | 2582 | 5000 | |
| TeachingBubble | mount | 12115 | 11993 | 5000 | |
| Text | mount | 421 | 415 | 5000 | |
| TextField | mount | 1411 | 1362 | 5000 | |
| ThemeProvider | mount | 1198 | 1205 | 5000 | |
| ThemeProvider | virtual-rerender | 597 | 618 | 5000 | |
| Toggle | mount | 820 | 826 | 5000 | |
| buttonNative | mount | 122 | 120 | 5000 |
Perf Analysis (@fluentui/react-northstar)
Perf tests with no regressions
| Scenario | Current PR Ticks | Baseline Ticks | Ratio |
|---|---|---|---|
| ImageMinimalPerf.default | 390 | 359 | 1.09:1 |
| VideoMinimalPerf.default | 629 | 579 | 1.09:1 |
| TreeWith60ListItems.default | 175 | 162 | 1.08:1 |
| MenuButtonMinimalPerf.default | 1709 | 1618 | 1.06:1 |
| SkeletonMinimalPerf.default | 361 | 342 | 1.06:1 |
| PortalMinimalPerf.default | 188 | 179 | 1.05:1 |
| RefMinimalPerf.default | 241 | 231 | 1.04:1 |
| TextMinimalPerf.default | 352 | 340 | 1.04:1 |
| AnimationMinimalPerf.default | 405 | 393 | 1.03:1 |
| ChatMinimalPerf.default | 660 | 638 | 1.03:1 |
| CheckboxMinimalPerf.default | 2793 | 2719 | 1.03:1 |
| ListCommonPerf.default | 619 | 603 | 1.03:1 |
| ListMinimalPerf.default | 523 | 509 | 1.03:1 |
| PopupMinimalPerf.default | 601 | 584 | 1.03:1 |
| ProviderMergeThemesPerf.default | 1702 | 1650 | 1.03:1 |
| AttachmentMinimalPerf.default | 150 | 147 | 1.02:1 |
| ButtonSlotsPerf.default | 559 | 549 | 1.02:1 |
| CarouselMinimalPerf.default | 463 | 455 | 1.02:1 |
| GridMinimalPerf.default | 334 | 326 | 1.02:1 |
| ItemLayoutMinimalPerf.default | 1232 | 1211 | 1.02:1 |
| LabelMinimalPerf.default | 391 | 384 | 1.02:1 |
| ProviderMinimalPerf.default | 984 | 969 | 1.02:1 |
| StatusMinimalPerf.default | 680 | 666 | 1.02:1 |
| TableMinimalPerf.default | 417 | 410 | 1.02:1 |
| AccordionMinimalPerf.default | 148 | 147 | 1.01:1 |
| ButtonOverridesMissPerf.default | 1677 | 1666 | 1.01:1 |
| ChatDuplicateMessagesPerf.default | 294 | 290 | 1.01:1 |
| DividerMinimalPerf.default | 359 | 356 | 1.01:1 |
| EmbedMinimalPerf.default | 4115 | 4090 | 1.01:1 |
| HeaderMinimalPerf.default | 363 | 358 | 1.01:1 |
| InputMinimalPerf.default | 1283 | 1269 | 1.01:1 |
| LayoutMinimalPerf.default | 364 | 361 | 1.01:1 |
| LoaderMinimalPerf.default | 719 | 713 | 1.01:1 |
| SliderMinimalPerf.default | 1584 | 1569 | 1.01:1 |
| IconMinimalPerf.default | 615 | 607 | 1.01:1 |
| TreeMinimalPerf.default | 813 | 804 | 1.01:1 |
| AlertMinimalPerf.default | 282 | 281 | 1:1 |
| DropdownManyItemsPerf.default | 676 | 679 | 1:1 |
| DropdownMinimalPerf.default | 3110 | 3103 | 1:1 |
| HeaderSlotsPerf.default | 757 | 757 | 1:1 |
| ListNestedPerf.default | 550 | 548 | 1:1 |
| ListWith60ListItems.default | 633 | 634 | 1:1 |
| MenuMinimalPerf.default | 842 | 838 | 1:1 |
| TableManyItemsPerf.default | 1920 | 1911 | 1:1 |
| TextAreaMinimalPerf.default | 486 | 485 | 1:1 |
| CustomToolbarPrototype.default | 3821 | 3835 | 1:1 |
| ToolbarMinimalPerf.default | 920 | 920 | 1:1 |
| TooltipMinimalPerf.default | 1012 | 1012 | 1:1 |
| BoxMinimalPerf.default | 347 | 352 | 0.99:1 |
| ButtonMinimalPerf.default | 169 | 170 | 0.99:1 |
| DialogMinimalPerf.default | 748 | 753 | 0.99:1 |
| FlexMinimalPerf.default | 280 | 284 | 0.99:1 |
| AvatarMinimalPerf.default | 191 | 195 | 0.98:1 |
| CardMinimalPerf.default | 535 | 544 | 0.98:1 |
| DatepickerMinimalPerf.default | 5346 | 5452 | 0.98:1 |
| FormMinimalPerf.default | 397 | 407 | 0.98:1 |
| RadioGroupMinimalPerf.default | 445 | 453 | 0.98:1 |
| ReactionMinimalPerf.default | 361 | 370 | 0.98:1 |
| SegmentMinimalPerf.default | 333 | 340 | 0.98:1 |
| SplitButtonMinimalPerf.default | 3775 | 3847 | 0.98:1 |
| AttachmentSlotsPerf.default | 1039 | 1069 | 0.97:1 |
| RosterPerf.default | 1098 | 1151 | 0.95:1 |
| ChatWithPopoverPerf.default | 342 | 374 | 0.91:1 |
| <EventListener | ||
| listener={handleDocumentClick(getRefs)} | ||
| target={context.target} | ||
| type="mousedown" |
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 an interesting solution, you might have to modify tests since, generally tests will only trigger the specific event.
Perhaps this should also be brought up in open hours as an FYI.
…ix/popup-click-outside
…i into fix/popup-click-outside
packages/fluentui/react-northstar/src/components/Popup/Popup.tsx
Outdated
Show resolved
Hide resolved
…icrosoft#19201) * fix(Popup): prevent closing popup on finishing select text outside * fix: tests * fix: test * fix popup * update test * fix test Co-authored-by: Charles Assuncao <charlesassuncao@192.168.1.39>
Pull request checklist
$ yarn changeDescription of changes
Starting selecting text inside popup and finishing it outside will trigger
clickevent and consider a click outside, therefore closing the popup. That happens because click event fires after themousedownandmouseupevents.To fix that I am replacing the document event listener from click to
mousedownachieving the desired behavior of keeping the popup open in that situation.Focus areas to test
(optional)