-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
feat(keyboard-keys): Export keys and legacy keyCodes #18896
Conversation
This PR implements what was proposed in microsoft#18587 and exports all named `key` values specified by w3c. Also adds legacy keycode exports as a deep import. Happy to take any suggestions to avoid this. Originallly this was the plan: ```ts export * as keyCodes from './keyCodes' ``` but unfortunately API extractor does not support this syntax microsoft/rushstack#2780
Asset size changesSize Auditor did not detect a change in bundle size for any component! Baseline commit: 6dbf1ed0a505a860eeb6c8b065c3422e324ff3d7 (build) |
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 2b4f0fb:
|
Perf Analysis (
|
Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
---|---|---|---|---|---|
Avatar | mount | 888 | 906 | 5000 | |
BaseButton | mount | 1005 | 1004 | 5000 | |
Breadcrumb | mount | 2940 | 2852 | 1000 | |
ButtonNext | mount | 589 | 617 | 5000 | |
Checkbox | mount | 1721 | 1702 | 5000 | |
CheckboxBase | mount | 1450 | 1492 | 5000 | |
ChoiceGroup | mount | 5297 | 5308 | 5000 | |
ComboBox | mount | 1060 | 1041 | 1000 | |
CommandBar | mount | 11314 | 11248 | 1000 | |
ContextualMenu | mount | 6614 | 6755 | 1000 | |
DefaultButton | mount | 1266 | 1193 | 5000 | |
DetailsRow | mount | 4102 | 4098 | 5000 | |
DetailsRowFast | mount | 4112 | 4111 | 5000 | |
DetailsRowNoStyles | mount | 3857 | 3924 | 5000 | |
Dialog | mount | 2263 | 2263 | 1000 | |
DocumentCardTitle | mount | 161 | 146 | 1000 | |
Dropdown | mount | 3624 | 3596 | 5000 | |
FluentProviderNext | mount | 7539 | 7724 | 5000 | |
FocusTrapZone | mount | 1978 | 1974 | 5000 | |
FocusZone | mount | 1906 | 1954 | 5000 | |
IconButton | mount | 1973 | 1973 | 5000 | |
Label | mount | 360 | 365 | 5000 | |
Layer | mount | 2002 | 1942 | 5000 | |
Link | mount | 516 | 515 | 5000 | |
MakeStyles | mount | 1910 | 1905 | 50000 | |
MenuButton | mount | 1686 | 1660 | 5000 | |
MessageBar | mount | 2216 | 2191 | 5000 | |
Nav | mount | 3622 | 3590 | 1000 | |
OverflowSet | mount | 1140 | 1121 | 5000 | |
Panel | mount | 2201 | 2201 | 1000 | |
Persona | mount | 920 | 892 | 1000 | |
Pivot | mount | 1527 | 1514 | 1000 | |
PrimaryButton | mount | 1432 | 1408 | 5000 | |
Rating | mount | 8618 | 8587 | 5000 | |
SearchBox | mount | 1484 | 1519 | 5000 | |
Shimmer | mount | 2857 | 2809 | 5000 | |
Slider | mount | 2236 | 2207 | 5000 | |
SpinButton | mount | 5527 | 5449 | 5000 | |
Spinner | mount | 437 | 446 | 5000 | |
SplitButton | mount | 3474 | 3397 | 5000 | |
Stack | mount | 551 | 571 | 5000 | |
StackWithIntrinsicChildren | mount | 1689 | 1744 | 5000 | |
StackWithTextChildren | mount | 5176 | 5239 | 5000 | |
SwatchColorPicker | mount | 11120 | 11043 | 5000 | |
Tabs | mount | 1511 | 1536 | 1000 | |
TagPicker | mount | 2663 | 2650 | 5000 | |
TeachingBubble | mount | 12600 | 12557 | 5000 | |
Text | mount | 465 | 464 | 5000 | |
TextField | mount | 1520 | 1462 | 5000 | |
ThemeProvider | mount | 1294 | 1266 | 5000 | |
ThemeProvider | virtual-rerender | 639 | 658 | 5000 | |
Toggle | mount | 865 | 890 | 5000 | |
buttonNative | mount | 113 | 129 | 5000 |
Perf Analysis (@fluentui/react-northstar
)
Perf tests with no regressions
Scenario | Current PR Ticks | Baseline Ticks | Ratio |
---|---|---|---|
ImageMinimalPerf.default | 446 | 405 | 1.1:1 |
ButtonSlotsPerf.default | 636 | 584 | 1.09:1 |
FlexMinimalPerf.default | 338 | 310 | 1.09:1 |
ChatDuplicateMessagesPerf.default | 362 | 336 | 1.08:1 |
SkeletonMinimalPerf.default | 421 | 393 | 1.07:1 |
FormMinimalPerf.default | 484 | 456 | 1.06:1 |
LoaderMinimalPerf.default | 782 | 737 | 1.06:1 |
TableMinimalPerf.default | 466 | 440 | 1.06:1 |
TextMinimalPerf.default | 412 | 394 | 1.05:1 |
TooltipMinimalPerf.default | 1209 | 1147 | 1.05:1 |
VideoMinimalPerf.default | 725 | 689 | 1.05:1 |
AlertMinimalPerf.default | 324 | 311 | 1.04:1 |
BoxMinimalPerf.default | 410 | 396 | 1.04:1 |
GridMinimalPerf.default | 385 | 369 | 1.04:1 |
ListMinimalPerf.default | 585 | 561 | 1.04:1 |
ReactionMinimalPerf.default | 434 | 416 | 1.04:1 |
CardMinimalPerf.default | 672 | 652 | 1.03:1 |
DialogMinimalPerf.default | 828 | 800 | 1.03:1 |
DividerMinimalPerf.default | 442 | 430 | 1.03:1 |
ItemLayoutMinimalPerf.default | 1398 | 1351 | 1.03:1 |
IconMinimalPerf.default | 692 | 673 | 1.03:1 |
AnimationMinimalPerf.default | 464 | 455 | 1.02:1 |
AvatarMinimalPerf.default | 232 | 227 | 1.02:1 |
ButtonOverridesMissPerf.default | 1912 | 1873 | 1.02:1 |
CarouselMinimalPerf.default | 525 | 517 | 1.02:1 |
DropdownMinimalPerf.default | 3412 | 3355 | 1.02:1 |
EmbedMinimalPerf.default | 4557 | 4469 | 1.02:1 |
LabelMinimalPerf.default | 447 | 437 | 1.02:1 |
ListWith60ListItems.default | 737 | 726 | 1.02:1 |
MenuButtonMinimalPerf.default | 1846 | 1816 | 1.02:1 |
ProviderMergeThemesPerf.default | 1770 | 1727 | 1.02:1 |
ProviderMinimalPerf.default | 1109 | 1090 | 1.02:1 |
RadioGroupMinimalPerf.default | 531 | 520 | 1.02:1 |
CustomToolbarPrototype.default | 4359 | 4260 | 1.02:1 |
ButtonMinimalPerf.default | 200 | 198 | 1.01:1 |
ChatMinimalPerf.default | 739 | 729 | 1.01:1 |
CheckboxMinimalPerf.default | 2956 | 2934 | 1.01:1 |
InputMinimalPerf.default | 1346 | 1335 | 1.01:1 |
PopupMinimalPerf.default | 658 | 649 | 1.01:1 |
DropdownManyItemsPerf.default | 794 | 791 | 1:1 |
HeaderSlotsPerf.default | 860 | 863 | 1:1 |
LayoutMinimalPerf.default | 421 | 423 | 1:1 |
RefMinimalPerf.default | 255 | 256 | 1:1 |
SplitButtonMinimalPerf.default | 4200 | 4193 | 1:1 |
TextAreaMinimalPerf.default | 579 | 580 | 1:1 |
AccordionMinimalPerf.default | 175 | 176 | 0.99:1 |
AttachmentMinimalPerf.default | 187 | 189 | 0.99:1 |
HeaderMinimalPerf.default | 415 | 420 | 0.99:1 |
SegmentMinimalPerf.default | 411 | 414 | 0.99:1 |
AttachmentSlotsPerf.default | 1224 | 1245 | 0.98:1 |
DatepickerMinimalPerf.default | 6334 | 6462 | 0.98:1 |
ListCommonPerf.default | 705 | 720 | 0.98:1 |
SliderMinimalPerf.default | 1678 | 1712 | 0.98:1 |
StatusMinimalPerf.default | 774 | 787 | 0.98:1 |
TableManyItemsPerf.default | 2179 | 2227 | 0.98:1 |
TreeMinimalPerf.default | 920 | 941 | 0.98:1 |
ChatWithPopoverPerf.default | 410 | 424 | 0.97:1 |
MenuMinimalPerf.default | 911 | 953 | 0.96:1 |
RosterPerf.default | 1276 | 1323 | 0.96:1 |
TreeWith60ListItems.default | 191 | 200 | 0.96:1 |
PortalMinimalPerf.default | 188 | 201 | 0.94:1 |
ToolbarMinimalPerf.default | 1057 | 1119 | 0.94:1 |
ListNestedPerf.default | 617 | 663 | 0.93:1 |
@@ -0,0 +1,163 @@ | |||
export const Cancel = 3; |
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.
how about using as const
here for typings?
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.
yeah sounds good, need another round of my generation script :D
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.
no need const
on primitives are not widened
const Cancel = 3;
// is same as
const Cancel = 3 as const;
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.
need another round of my generation script :D
would you mind to make this tool a part of our repo ?
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.
@Hotell thx for the ts expertise :)
The generation script is just some web scraping I did from the w3c spec site, nothing to be added to the repo
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.
The generation script is just some web scraping
to me that sounds very appealing to have proper automation for our consumers ;) I'll be happy to help get that in
* feat(keyboard-keys): Export keys and legacy keyCodes This PR implements what was proposed in microsoft#18587 and exports all named `key` values specified by w3c. Also adds legacy keycode exports as a deep import. Happy to take any suggestions to avoid this. Originallly this was the plan: ```ts export * as keyCodes from './keyCodes' ``` but unfortunately API extractor does not support this syntax microsoft/rushstack#2780 * remove deep export * update fixture
This PR implements what was proposed in #18587 and exports all named
key
values specified by w3c.Also adds legacy keycode exports as a deep import. Happy to take anysuggestions to avoid this.
Current workaround caused by API-Extractor limitations:
Future change:
Pull request checklist
$ yarn change
Description of changes
(give an overview)
Focus areas to test
(optional)