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

[typescript] Allow lab components to have overrides in theme #21279

Merged
merged 6 commits into from
Jun 11, 2020

Conversation

CarsonF
Copy link
Contributor

@CarsonF CarsonF commented Jun 1, 2020

Closes #19427

Wasn't sure the best place to put this within lab/. Happy to move.

/cc @oliviertassinari @eps1lon

@mui-pr-bot
Copy link

mui-pr-bot commented Jun 1, 2020

Details of bundle changes.

Comparing: 1f18002...bc62bb8

Details of page changes
bundle Size Change Size Gzip Change Gzip
/components/about-the-lab ▲ +270 B (+3.96% ) 7.09 kB -- -1 B
/blog/material-ui-v1-is-out ▼ -10 B (-0.15% ) 6.66 kB -- -1 B
/performance/table-emotion ▲ +10 B (+0.12% ) 8.5 kB -- -1 B
/_app -- 37.4 kB -- -1 B
/api-docs/alert-title -- 1.4 kB -- -1 B
/api-docs/alert -- 2.4 kB -- -1 B
/api-docs/app-bar -- 1.94 kB -- -1 B
/api-docs/autocomplete -- 4.62 kB -- -1 B
/api-docs/avatar-group -- 1.51 kB -- -1 B
/api-docs/avatar -- 1.86 kB -- -1 B
/api-docs/backdrop -- 1.73 kB -- -1 B
/api-docs/badge -- 2.13 kB -- -1 B
/api-docs/bottom-navigation-action -- 1.81 kB -- -1 B
/api-docs/bottom-navigation -- 1.7 kB -- -1 B
/api-docs/breadcrumbs -- 1.79 kB -- -1 B
/api-docs/button-base -- 2.22 kB -- -1 B
/api-docs/button-group -- 2.22 kB -- -1 B
/api-docs/button -- 2.53 kB -- -1 B
/api-docs/card-action-area -- 1.58 kB -- -1 B
/api-docs/card-actions -- 1.47 kB -- -1 B
/api-docs/card-content -- 1.45 kB -- -1 B
/api-docs/card-header -- 1.78 kB -- -1 B
/api-docs/card-media -- 1.69 kB -- -1 B
/api-docs/card -- 1.5 kB -- -1 B
/api-docs/checkbox -- 2.3 kB -- -1 B
/api-docs/chip -- 2.46 kB -- -1 B
/api-docs/circular-progress -- 2.07 kB -- -1 B
/api-docs/click-away-listener -- 1.45 kB -- -1 B
/api-docs/collapse -- 2.13 kB -- -1 B
/api-docs/container -- 1.83 kB -- -1 B
/api-docs/css-baseline -- 1.4 kB -- -1 B
/api-docs/dialog-actions -- 1.47 kB -- -1 B
/api-docs/dialog-content-text -- 1.48 kB -- -1 B
/api-docs/dialog-content -- 1.45 kB -- -1 B
/api-docs/dialog-title -- 1.49 kB -- -1 B
/api-docs/dialog -- 2.74 kB -- -1 B
/api-docs/divider -- 1.81 kB -- -1 B
/api-docs/drawer -- 2.13 kB -- -1 B
/api-docs/expansion-panel-actions -- 1.49 kB -- -1 B
/api-docs/expansion-panel-details -- 1.41 kB -- -1 B
/api-docs/expansion-panel-summary -- 1.72 kB -- -1 B
/api-docs/expansion-panel -- 1.98 kB -- -1 B
/api-docs/fab -- 2.1 kB -- -1 B
/api-docs/fade -- 1.5 kB -- -1 B
/api-docs/filled-input -- 2.87 kB -- -1 B
/api-docs/form-control-label -- 1.99 kB -- -1 B
/api-docs/form-control -- 2.36 kB -- -1 B
/api-docs/form-group -- 1.55 kB -- -1 B
/api-docs/form-helper-text -- 1.91 kB -- -1 B
/api-docs/form-label -- 1.84 kB -- -1 B
/api-docs/grid-list-tile-bar -- 1.8 kB -- -1 B
/api-docs/grid-list-tile -- 1.72 kB -- -1 B
/api-docs/grid-list -- 1.63 kB -- -1 B
/api-docs/grid -- 2.56 kB -- -1 B
/api-docs/grow -- 1.55 kB -- -1 B
/api-docs/hidden -- 1.53 kB -- -1 B
/api-docs/icon-button -- 2.08 kB -- -1 B
/api-docs/icon -- 1.78 kB -- -1 B
/api-docs/input-adornment -- 1.94 kB -- -1 B
/api-docs/input-base -- 2.95 kB -- -1 B
/api-docs/input-label -- 2.07 kB -- -1 B
/api-docs/input -- 2.83 kB -- -1 B
/api-docs/linear-progress -- 2.03 kB -- -1 B
/api-docs/link -- 1.94 kB -- -1 B
/api-docs/list-item-avatar -- 1.51 kB -- -1 B
/api-docs/list-item-icon -- 1.51 kB -- -1 B
/api-docs/list-item-secondary-action -- 1.47 kB -- -1 B
/api-docs/list-item-text -- 1.79 kB -- -1 B
/api-docs/list-item -- 2.25 kB -- -1 B
/api-docs/list-subheader -- 1.77 kB -- -1 B
/api-docs/list -- 1.68 kB -- -1 B
/api-docs/menu-item -- 1.74 kB -- -1 B
/api-docs/menu-list -- 1.57 kB -- -1 B
/api-docs/menu -- 2.42 kB -- -1 B
/api-docs/mobile-stepper -- 1.94 kB -- -1 B
/api-docs/modal -- 2.43 kB -- -1 B
/api-docs/native-select -- 2.11 kB -- -1 B
/api-docs/no-ssr -- 1.3 kB -- -1 B
/api-docs/outlined-input -- 2.98 kB -- -1 B
/api-docs/pagination-item -- 1.97 kB -- -1 B
/api-docs/pagination -- 2.24 kB -- -1 B
/api-docs/paper -- 1.87 kB -- -1 B
/api-docs/popover -- 2.7 kB -- -1 B
/api-docs/popper -- 1.92 kB -- -1 B
/api-docs/portal -- 1.34 kB -- -1 B
/api-docs/radio-group -- 1.45 kB -- -1 B
/api-docs/radio -- 2.12 kB -- -1 B
/api-docs/rating -- 2.49 kB -- -1 B
/api-docs/root-ref -- 1.42 kB -- -1 B
/api-docs/scoped-css-baseline -- 1.4 kB -- -1 B
/api-docs/select -- 2.96 kB -- -1 B
/api-docs/skeleton -- 1.87 kB -- -1 B
/api-docs/slide -- 1.54 kB -- -1 B
/api-docs/slider -- 3.11 kB -- -1 B
/api-docs/snackbar-content -- 1.61 kB -- -1 B
/api-docs/snackbar -- 2.71 kB -- -1 B
/api-docs/speed-dial-action -- 2.04 kB -- -1 B
/api-docs/speed-dial-icon -- 1.55 kB -- -1 B
/api-docs/speed-dial -- 2.32 kB -- -1 B
/api-docs/step-button -- 1.63 kB -- -1 B
/api-docs/step-connector -- 1.54 kB -- -1 B
/api-docs/step-content -- 1.72 kB -- -1 B
/api-docs/step-icon -- 1.57 kB -- -1 B
/api-docs/step-label -- 1.9 kB -- -1 B
/api-docs/step -- 1.64 kB -- -1 B
/api-docs/stepper -- 1.84 kB -- -1 B
/api-docs/svg-icon -- 2.26 kB -- -1 B
/api-docs/swipeable-drawer -- 2.01 kB -- -1 B
/api-docs/switch -- 2.46 kB -- -1 B
/api-docs/tab-context -- 1.08 kB -- -1 B
/api-docs/tab-list -- 1.09 kB -- -1 B
/api-docs/tab-panel -- 1.48 kB -- -1 B
/api-docs/tab-scroll-button -- 1.62 kB -- -1 B
/api-docs/tab -- 1.97 kB -- -1 B
/api-docs/table-body -- 1.47 kB -- -1 B
/api-docs/table-cell -- 2.13 kB -- -1 B
/api-docs/table-container -- 1.48 kB -- -1 B
/api-docs/table-footer -- 1.47 kB -- -1 B
/api-docs/table-head -- 1.46 kB -- -1 B
/api-docs/table-pagination -- 2.47 kB -- -1 B
/api-docs/table-row -- 1.69 kB -- -1 B
/api-docs/table-sort-label -- 1.83 kB -- -1 B
/api-docs/table -- 1.7 kB -- -1 B
/api-docs/tabs -- 2.68 kB -- -1 B
/api-docs/text-field -- 3.18 kB -- -1 B
/api-docs/textarea-autosize -- 1.13 kB -- -1 B
/api-docs/toggle-button-group -- 1.92 kB -- -1 B
/api-docs/toggle-button -- 1.79 kB -- -1 B
/api-docs/toolbar -- 1.65 kB -- -1 B
/api-docs/tooltip -- 2.57 kB -- -1 B
/api-docs/tree-item -- 1.89 kB -- -1 B
/api-docs/tree-view -- 1.92 kB -- -1 B
/api-docs/typography -- 2.59 kB -- -1 B
/api-docs/unstable-trap-focus -- 1.46 kB -- -1 B
/api-docs/zoom -- 1.52 kB -- -1 B
/blog/2019-developer-survey-results -- 6.35 kB -- -1 B
/blog/2019 -- 4.24 kB -- -1 B
/blog/2020-introducing-sketch -- 3.51 kB -- -1 B
/blog/2020-q1-update -- 4.33 kB -- -1 B
/blog/april-2019-update -- 3.13 kB -- -1 B
/blog/august-2019-update -- 2.24 kB -- -1 B
/blog/december-2019-update -- 2.37 kB -- -1 B
/blog/july-2019-update -- 2.13 kB -- -1 B
/blog/june-2019-update -- 2 kB -- -1 B
/blog/march-2019-update -- 2.53 kB -- -1 B
/blog/material-ui-v4-is-out -- 9.68 kB -- -1 B
/blog/may-2019-update -- 2.35 kB -- -1 B
/blog/november-2019-update -- 2.75 kB -- -1 B
/blog/october-2019-update -- 2.5 kB -- -1 B
/blog/september-2019-update -- 2.68 kB -- -1 B
/company/about -- 1.74 kB -- -1 B
/company/contact -- 1.33 kB -- -1 B
/company/jobs -- 1.34 kB -- -1 B
/components/alert -- 12.9 kB -- -1 B
/components/app-bar -- 30.2 kB -- -1 B
/components/autocomplete -- 111 kB -- -1 B
/components/avatars -- 9.2 kB -- -1 B
/components/backdrop -- 2.68 kB -- -1 B
/components/badges -- 15.4 kB -- -1 B
/components/bottom-navigation -- 6.25 kB -- -1 B
/components/box -- 8.05 kB -- -1 B
/components/breadcrumbs -- 14.7 kB -- -1 B
/components/button-group -- 7.61 kB -- -1 B
/components/buttons -- 26.6 kB -- -1 B
/components/cards -- 17.3 kB -- -1 B
/components/checkboxes -- 16.5 kB -- -1 B
/components/chips -- 21.9 kB -- -1 B
/components/click-away-listener -- 4.94 kB -- -1 B
/components/container -- 3.81 kB -- -1 B
/components/css-baseline -- 7.04 kB -- -1 B
/components/dialogs -- 43.1 kB -- -1 B
/components/dividers -- 12.8 kB -- -1 B
/components/drawers -- 31.5 kB -- -1 B
/components/expansion-panels -- 20.7 kB -- -1 B
/components/floating-action-button -- 10.9 kB -- -1 B
/components/grid-list -- 12 kB -- -1 B
/components/grid -- 32.4 kB -- -1 B
/components/hidden -- 10.5 kB -- -1 B
/components/icons -- 27.6 kB -- -1 B
/components/links -- 7.04 kB -- -1 B
/components/lists -- 26.5 kB -- -1 B
/components/material-icons -- 729 kB -- -1 B
/components/menus -- 25.2 kB -- -1 B
/components/modal -- 12.9 kB -- -1 B
/components/no-ssr -- 5.33 kB -- -1 B
/components/pagination -- 8.19 kB -- -1 B
/components/paper -- 3.52 kB -- -1 B
/components/pickers -- 39.3 kB -- -1 B
/components/popover -- 17.6 kB -- -1 B
/components/popper -- 22.5 kB -- -1 B
/components/portal -- 3.17 kB -- -1 B
/components/progress -- 21.2 kB -- -1 B
/components/radio-buttons -- 15.6 kB -- -1 B
/components/rating -- 11 kB -- -1 B
/components/selects -- 33.1 kB -- -1 B
/components/skeleton -- 13.7 kB -- -1 B
/components/slider -- 16.3 kB -- -1 B
/components/snackbars -- 22.4 kB -- -1 B
/components/speed-dial -- 14.7 kB -- -1 B
/components/steppers -- 36.9 kB -- -1 B
/components/switches -- 16.9 kB -- -1 B
/components/tables -- 174 kB -- -1 B
/components/tabs -- 25.2 kB -- -1 B
/components/text-fields -- 56.6 kB -- -1 B
/components/textarea-autosize -- 3.04 kB -- -1 B
/components/toggle-button -- 11.9 kB -- -1 B
/components/tooltips -- 17.5 kB -- -1 B
/components/transfer-list -- 9.7 kB -- -1 B
/components/transitions -- 12.6 kB -- -1 B
/components/tree-view -- 11.3 kB -- -1 B
/components/typography -- 10.1 kB -- -1 B
/components/use-media-query -- 12.9 kB -- -1 B
/customization/breakpoints -- 16.4 kB -- -1 B
/customization/color -- 18.9 kB -- -1 B
/customization/components -- 38.7 kB -- -1 B
/customization/default-theme -- 8.92 kB -- -1 B
/customization/density -- 9.72 kB -- -1 B
/customization/globals -- 5.23 kB -- -1 B
/customization/palette -- 12.9 kB -- -1 B
/customization/spacing -- 2.82 kB -- -1 B
/customization/theming -- 19.7 kB -- -1 B
/customization/typography -- 12.5 kB -- -1 B
/customization/z-index -- 3.49 kB -- -1 B
/discover-more/backers -- 3.03 kB -- -1 B
/discover-more/changelog -- 1.45 kB -- -1 B
/discover-more/languages -- 3.44 kB -- -1 B
/discover-more/related-projects -- 7.73 kB -- -1 B
/discover-more/roadmap -- 3.72 kB -- -1 B
/discover-more/showcase -- 15.1 kB -- -1 B
/discover-more/team -- 6.83 kB -- -1 B
/discover-more/vision -- 6.76 kB -- -1 B
/getting-started/example-projects -- 7.57 kB -- -1 B
/getting-started/faq -- 34.6 kB -- -1 B
/getting-started/installation -- 7.85 kB -- -1 B
/getting-started/learn -- 8.98 kB -- -1 B
/getting-started/support -- 9.15 kB -- -1 B
/getting-started/supported-components -- 6.74 kB -- -1 B
/getting-started/supported-platforms -- 6.14 kB -- -1 B
/getting-started/templates -- 8.92 kB -- -1 B
/getting-started/templates/album -- 5.57 kB -- -1 B
/getting-started/templates/blog -- 7.44 kB -- -1 B
/getting-started/templates/checkout -- 10.2 kB -- -1 B
/getting-started/templates/dashboard -- 8.86 kB -- -1 B
/getting-started/templates/pricing -- 7.78 kB -- -1 B
/getting-started/templates/sign-in-side -- 8.2 kB -- -1 B
/getting-started/templates/sign-in -- 8.44 kB -- -1 B
/getting-started/templates/sign-up -- 8.54 kB -- -1 B
/getting-started/templates/sticky-footer -- 1.54 kB -- -1 B
/getting-started/usage -- 9.6 kB -- -1 B
/guides/api -- 14.7 kB -- -1 B
/guides/composition -- 14.9 kB -- -1 B
/guides/flow -- 2.26 kB -- -1 B
/guides/interoperability -- 16 kB -- -1 B
/guides/localization -- 19 kB -- -1 B
/guides/migration-v0x -- 7.51 kB -- -1 B
/guides/migration-v3 -- 19.3 kB -- -1 B
/guides/minimizing-bundle-size -- 10 kB -- -1 B
/guides/responsive-ui -- 4.27 kB -- -1 B
/guides/right-to-left -- 5.24 kB -- -1 B
/guides/server-rendering -- 8.75 kB -- -1 B
/guides/testing -- 8.7 kB -- -1 B
/guides/typescript -- 15.6 kB -- -1 B
/performance/table-component -- 1.44 kB -- -1 B
/performance/table-hook -- 2.24 kB -- -1 B
/performance/table-mui -- 4.5 kB -- -1 B
/performance/table-raw -- 612 B -- -1 B
/performance/table-styled-components -- 2.6 kB -- -1 B
/premium-themes/onepirate -- 7.34 kB -- -1 B
/premium-themes/onepirate/forgot-password -- 1.01 kB -- -1 B
/premium-themes/onepirate/privacy -- 4.44 kB -- -1 B
/premium-themes/onepirate/sign-in -- 1.07 kB -- -1 B
/premium-themes/onepirate/sign-up -- 1.12 kB -- -1 B
/premium-themes/onepirate/terms -- 11.8 kB -- -1 B
/premium-themes/paperbase -- 7.67 kB -- -1 B
/production-error -- 3.11 kB -- -1 B
/styles/advanced -- 31.7 kB -- -1 B
/styles/api -- 16.9 kB -- -1 B
/styles/basics -- 16.5 kB -- -1 B
/system/api -- 5.96 kB -- -1 B
/system/basics -- 27.6 kB -- -1 B
/system/borders -- 4.1 kB -- -1 B
/system/display -- 6.75 kB -- -1 B
/system/flexbox -- 5.85 kB -- -1 B
/system/palette -- 4.35 kB -- -1 B
/system/positions -- 2.53 kB -- -1 B
/system/shadows -- 3.85 kB -- -1 B
/system/sizing -- 3.53 kB -- -1 B
/system/spacing -- 6.01 kB -- -1 B
/system/typography -- 4.42 kB -- -1 B
/versions -- 23 kB -- -1 B
docs:chunk:shared -- 65.8 kB -- -1 B
docs:shared:chunk/commons -- 5.99 kB -- -1 B
docs:shared:chunk/framework -- 42.3 kB -- -1 B
docs:shared:runtime/main -- 6.78 kB -- -1 B
docs:shared:runtime/webpack -- 1.24 kB -- -1 B
bundle Size Change Size Gzip Change Gzip
@material-ui/core -- 369 kB -- 102 kB
@material-ui/lab -- 217 kB -- 64.7 kB
@material-ui/styles -- 52.1 kB -- 15.6 kB
@material-ui/system -- 17.2 kB -- 4.52 kB
@material-ui/utils -- 7.19 kB -- 2.61 kB
Alert -- 87.4 kB -- 27.6 kB
AlertTitle -- 68.7 kB -- 21.5 kB
AppBar -- 68.5 kB -- 21.4 kB
Autocomplete -- 136 kB -- 42.8 kB
Avatar -- 69.7 kB -- 21.8 kB
AvatarGroup -- 70.7 kB -- 22.4 kB
Backdrop -- 73.1 kB -- 22.6 kB
Badge -- 69.8 kB -- 21.7 kB
BottomNavigation -- 66.8 kB -- 20.9 kB
BottomNavigationAction -- 79.6 kB -- 25.2 kB
Box -- 73.3 kB -- 22.2 kB
Breadcrumbs -- 84.6 kB -- 26.8 kB
Button -- 83.8 kB -- 25.7 kB
ButtonBase -- 78 kB -- 24.5 kB
ButtonGroup -- 87.5 kB -- 27 kB
Card -- 67.3 kB -- 21 kB
CardActionArea -- 79.1 kB -- 25 kB
CardActions -- 66.5 kB -- 20.8 kB
CardContent -- 66.4 kB -- 20.7 kB
CardHeader -- 69.6 kB -- 21.8 kB
CardMedia -- 66.8 kB -- 20.9 kB
Checkbox -- 86.3 kB -- 27.3 kB
Chip -- 86.8 kB -- 26.6 kB
CircularProgress -- 68.6 kB -- 21.6 kB
ClickAwayListener -- 4.13 kB -- 1.66 kB
Collapse -- 73.5 kB -- 22.7 kB
colorManipulator -- 4.14 kB -- 1.63 kB
Container -- 67.7 kB -- 21.1 kB
CssBaseline -- 66.4 kB -- 20.8 kB
Dialog -- 88.4 kB -- 27.7 kB
DialogActions -- 66.5 kB -- 20.8 kB
DialogContent -- 66.7 kB -- 20.8 kB
DialogContentText -- 68.5 kB -- 21.5 kB
DialogTitle -- 68.8 kB -- 21.6 kB
Divider -- 67.1 kB -- 21.1 kB
docs:/ -- 12.5 kB -- -1 B
docs:/_app -- 37.4 kB -- -1 B
Drawer -- 90.4 kB -- 27.5 kB
ExpansionPanel -- 77.1 kB -- 24.3 kB
ExpansionPanelActions -- 66.5 kB -- 20.8 kB
ExpansionPanelDetails -- 66.4 kB -- 20.7 kB
ExpansionPanelSummary -- 82.2 kB -- 26 kB
Fab -- 80.9 kB -- 25.2 kB
Fade -- 28.9 kB -- 9.66 kB
FilledInput -- 78 kB -- 24.2 kB
FormControl -- 68.9 kB -- 21.4 kB
FormControlLabel -- 70 kB -- 21.9 kB
FormGroup -- 66.4 kB -- 20.8 kB
FormHelperText -- 67.8 kB -- 21 kB
FormLabel -- 67.9 kB -- 21 kB
Grid -- 69.5 kB -- 21.8 kB
GridList -- 66.9 kB -- 21 kB
GridListTile -- 68.2 kB -- 21.3 kB
GridListTileBar -- 67.7 kB -- 21.2 kB
Grow -- 29.5 kB -- 9.87 kB
Hidden -- 70.5 kB -- 22.1 kB
Icon -- 67.3 kB -- 21 kB
IconButton -- 80.2 kB -- 25.1 kB
Input -- 76.9 kB -- 24 kB
InputAdornment -- 69.6 kB -- 21.9 kB
InputBase -- 75 kB -- 23.5 kB
InputLabel -- 69.8 kB -- 21.5 kB
LinearProgress -- 69.9 kB -- 21.6 kB
Link -- 71.1 kB -- 22.4 kB
List -- 66.8 kB -- 20.8 kB
ListItem -- 81.1 kB -- 25.4 kB
ListItemAvatar -- 66.5 kB -- 20.8 kB
ListItemIcon -- 66.6 kB -- 20.8 kB
ListItemSecondaryAction -- 66.4 kB -- 20.8 kB
ListItemText -- 69.5 kB -- 21.8 kB
ListSubheader -- 67.3 kB -- 21.1 kB
Menu -- 93.9 kB -- 28.9 kB
MenuItem -- 82.2 kB -- 25.7 kB
MenuList -- 70.5 kB -- 22 kB
MobileStepper -- 72.4 kB -- 22.7 kB
Modal -- 15.1 kB -- 5.26 kB
NativeSelect -- 81.4 kB -- 25.6 kB
NoSsr -- 2.18 kB -- 1.03 kB
OutlinedInput -- 79 kB -- 24.5 kB
packages/material-ui/material-ui.production.min.js -- 325 kB -- 94.7 kB
Pagination -- 88.6 kB -- 27.3 kB
PaginationItem -- 85 kB -- 26.2 kB
Paper -- 66.8 kB -- 20.8 kB
Popover -- 88.3 kB -- 27.3 kB
Popper -- 28.7 kB -- 10.3 kB
Portal -- 2.87 kB -- 1.29 kB
Radio -- 87.3 kB -- 27.6 kB
RadioGroup -- 68.4 kB -- 21.2 kB
Rating -- 75.3 kB -- 24.2 kB
RootRef -- 4.64 kB -- 1.76 kB
ScopedCssBaseline -- 67.3 kB -- 21 kB
Select -- 121 kB -- 36.1 kB
Skeleton -- 67.7 kB -- 21.3 kB
Slide -- 30.7 kB -- 10.1 kB
Slider -- 80.4 kB -- 25.6 kB
Snackbar -- 80.9 kB -- 25.4 kB
SnackbarContent -- 68 kB -- 21.3 kB
SpeedDial -- 91.1 kB -- 28.9 kB
SpeedDialAction -- 123 kB -- 39.1 kB
SpeedDialIcon -- 69 kB -- 21.6 kB
Step -- 67.2 kB -- 21.1 kB
StepButton -- 86.4 kB -- 27.3 kB
StepConnector -- 67.2 kB -- 21.1 kB
StepContent -- 74.7 kB -- 23.3 kB
StepIcon -- 69.1 kB -- 21.5 kB
StepLabel -- 73 kB -- 22.6 kB
Stepper -- 69.2 kB -- 21.8 kB
styles/createMuiTheme -- 21.9 kB -- 7.58 kB
SvgIcon -- 67.5 kB -- 21 kB
SwipeableDrawer -- 97.8 kB -- 30.7 kB
Switch -- 85.5 kB -- 26.8 kB
Tab -- 80.6 kB -- 25.6 kB
TabContext -- 2.65 kB -- 1.15 kB
Table -- 67 kB -- 21 kB
TableBody -- 66.6 kB -- 20.8 kB
TableCell -- 68.6 kB -- 21.5 kB
TableContainer -- 66.4 kB -- 20.7 kB
TableFooter -- 66.6 kB -- 20.8 kB
TableHead -- 66.6 kB -- 20.8 kB
TablePagination -- 148 kB -- 43.6 kB
TableRow -- 67 kB -- 21 kB
TableSortLabel -- 81.5 kB -- 25.8 kB
TabList -- 91.4 kB -- 29.2 kB
TabPanel -- 67.3 kB -- 21 kB
Tabs -- 90.2 kB -- 28.2 kB
TabScrollButton -- 81.1 kB -- 25.4 kB
TextareaAutosize -- 5.23 kB -- 2.19 kB
TextField -- 130 kB -- 38.2 kB
ToggleButton -- 80.2 kB -- 25.4 kB
ToggleButtonGroup -- 67.8 kB -- 21.3 kB
Toolbar -- 66.8 kB -- 20.9 kB
Tooltip -- 107 kB -- 33.8 kB
TreeItem -- 80.5 kB -- 25.6 kB
TreeView -- 72.8 kB -- 22.8 kB
Typography -- 68.1 kB -- 21.2 kB
Unstable_TrapFocus -- 3.85 kB -- 1.59 kB
useAutocomplete -- 14.7 kB -- 5.27 kB
useMediaQuery -- 2.56 kB -- 1.06 kB
useScrollTrigger -- 2.66 kB -- 1.08 kB
Zoom -- 29 kB -- 9.8 kB

Generated by 🚫 dangerJS against bc62bb8

@oliviertassinari oliviertassinari added package: icons Specific to @mui/icons typescript package: lab Specific to @mui/lab and removed package: icons Specific to @mui/icons labels Jun 1, 2020
Copy link
Member

@oliviertassinari oliviertassinari left a comment

Choose a reason for hiding this comment

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

@CarsonF Thanks for spending time on it :)

Wasn't sure the best place to put this within lab/. Happy to move.

Maybe in an overrides.d.ts file?

Should we handle theme.props at the same time that theme.overrides?

@oliviertassinari
Copy link
Member

If this approach is successful, we should be able to apply it too for mui/material-ui-pickers#1794, cc @dmtrKovalenko

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 1, 2020

@oliviertassinari I got the hint lol 😉

Maybe in an overrides.d.ts file?

Yeah sure

Should we handle theme.props at the same time that theme.overrides?

Oh I forgot about that. Yeah we should.

@CarsonF CarsonF force-pushed the feature/lab-component-mapping branch from 7d62b68 to 56a84e4 Compare June 1, 2020 19:40
Copy link
Member

@eps1lon eps1lon left a comment

Choose a reason for hiding this comment

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

Thanks! I think we should include docs in this PR as well.

packages/material-ui-lab/src/overrides.d.ts Outdated Show resolved Hide resolved
packages/material-ui-lab/src/overrides.d.ts Outdated Show resolved Hide resolved
@dmtrKovalenko
Copy link
Member

dmtrKovalenko commented Jun 2, 2020

It works perfectly for pickers

  1. Props and tests for props
  2. Classes and tests for classes

@CarsonF CarsonF force-pushed the feature/lab-component-mapping branch from 56a84e4 to 98301c0 Compare June 2, 2020 15:31
@CarsonF CarsonF requested a review from eps1lon June 2, 2020 15:32
@CarsonF CarsonF force-pushed the feature/lab-component-mapping branch from 98301c0 to 951b370 Compare June 2, 2020 15:37
Copy link
Member

@oliviertassinari oliviertassinari left a comment

Choose a reason for hiding this comment

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

Should we split the definitions into two files, overrides.d.ts and props.d.ts?

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 2, 2020

@eps1lon What would you like documented? Theme overrides are already documented...

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 2, 2020

Should we split the definitions into two files, overrides.d.ts and props.d.ts?

Sure

@eps1lon
Copy link
Member

eps1lon commented Jun 2, 2020

@eps1lon What would you like documented? Theme overrides are already documented...

I think the current tests only works incidentally. Those tests shouldn't work in isolation. How would typescript know to include @material-ui/lab/overrides?

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 2, 2020

Ah you're right. I thought I had checked that but it was a bad check on my part.

Ok at some point in user's src they'll need to import those files

import '@material-ui/lab/overrides';
import '@material-ui/lab/props';

They should probably be re-exported from a single point for connivence.
Maybe theme?

import '@material-ui/lab/theme';

I don't think that will cause problems for tree shaking as long as it's from an import without any complied JS.


Since the user will need to do something I can add it to the docs too.
Should it be in About the Lab or maybe somewhere in Customizing components?

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 4, 2020

@oliviertassinari @eps1lon Thoughts on what you would like the import to be and where in the docs this should go?

@oliviertassinari
Copy link
Member

oliviertassinari commented Jun 4, 2020

@CarsonF It seems that we have 4 options.

  1. We only abstract the ComponentNameToClassKey type, this is the path explored in #1796 by @dmtrKovalenko. Here is the documentation: https://next.material-ui-pickers.dev/guides/css-overrides#typescript.
  2. We let people cherry-pick the features they want:
import '@material-ui/lab/overrides';
import '@material-ui/lab/props';
  1. We handle the theming as a single entity:
import '@material-ui/lab/theme';
  1. We handle it automatically as proposed in Cannot use theme.overrides with the lab #19427 (comment).

What about we go with 4? Would it work with the lab and the pickers at the same time? Otherwise, maybe we should keep it to 1?

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 4, 2020

I vote for 4 as well. There's caveats though. TS will only pick up the overrides if there's an import for it in the users src files. So we could include the overrides in index.ts and assume that users only import from root.

import { AvatarGroup } from '@material-ui/lab'; // overrides in index.ts so TS picks them up
import AvatarGroup from '@material-ui/lab/AvatarGroup'; // overrides are missed

I always import from root and let the build chain figure out tree shaking which seems to work fine for me, but idk about others.

If we wanted to support multiple different import paths, we would need to do the overrides individually at that level.

// src/AvatarGroup/AvatarGroup.d.ts
...

declare module '@material-ui/core/styles/overrides' {
  interface ComponentNameToClassKey {
    MuiAvatarGroup: AvatarGroupClassKey;
  }
}

declare module '@material-ui/core/styles/props' {
  interface ComponentsPropsList {
    MuiAvatarGroup: AvatarGroupProps;
  }
}

This still could be the best solution as it would cover all cases automatically and keeps logic closer to the component. But the boilerplate for every component isn't nothing.

@oliviertassinari
Copy link
Member

What about the overrides for multiple packages: lab, pickers, x (soon), etc.? For the import issue, can't the individual components be written so they import the theme.d.ts file (no need to cherry-picking)?

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 4, 2020

Yeah if you wanted to keep the overrides in a single place and then imported them for every component that would work too.
It's a little weird because you fan the components in to a single place (overrides.ts, index.ts) and then fan back out to each component file.

// AvatarGroup
import '../overrides';

// TabList
import '../overrides';

// overrides
import './AvatarGroup';
import './TabList';

If this wasn't just for TS types I would be worried about circular dependencies, but since there is no runtime code here it will be fine.
If the goal is to reduce boilerplate in each component, then this strategy should work fine.

I'm not sure what you mean for multiple packages. The pattern we decide here can be applied to every non-core package.

@oliviertassinari
Copy link
Member

oliviertassinari commented Jun 9, 2020

import '@material-ui/lab/theme-types'

Do we have a precedent in the codebase for a kebab-case filename? It seems that camelCase for modules and PascalCase for components is the current convention.

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 9, 2020

Looks like not, other than a couple edge cases.

types could left out...
Since TS has import type it could be redundant.

import type '@material-ui/lab/theme';

I know that we are still supporting TS 3.2, but there's no real reason not to upgrade to latest TS for users (unless I'm missing something...). We could document it this way or at least document both. This should give enough clarity and could leave room for actual logic in this theme folder in the future...

@oliviertassinari
Copy link
Member

In this case, my vote would go for something close to:

import type '@material-ui/lab/themeAugmentation';

or even

import type '@material-ui/lab/themeComponentsAugmentation';

There is no need for the import name to be short, the more details, the better.

@CarsonF CarsonF force-pushed the feature/lab-component-mapping branch from 79e4fd5 to 7dbb7a1 Compare June 9, 2020 16:56
@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 9, 2020

There is no need for the import name to be short, the more details, the better.

I'm bad about that 😉

Went with themeAugmentation

@eps1lon
Copy link
Member

eps1lon commented Jun 9, 2020

import type '@material-ui/lab/themeAugmentation';

I prefer that.

@oliviertassinari
Copy link
Member

Regarding the documentation, should we have it covered in https://material-ui.com/components/about-the-lab/?

@CarsonF
Copy link
Contributor Author

CarsonF commented Jun 9, 2020

Yeah we can add something there. I can get to it later tonight if someone doesn't beat me to it.

@oliviertassinari
Copy link
Member

@CarsonF I'm giving the documentation a try.

@oliviertassinari oliviertassinari force-pushed the feature/lab-component-mapping branch from 7efa767 to 0002d52 Compare June 10, 2020 21:25
Copy link
Contributor Author

@CarsonF CarsonF left a comment

Choose a reason for hiding this comment

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

Thanks for the assistance @oliviertassinari

docs/src/pages/components/about-the-lab/about-the-lab.md Outdated Show resolved Hide resolved
docs/src/pages/components/about-the-lab/about-the-lab.md Outdated Show resolved Hide resolved
docs/src/pages/components/about-the-lab/about-the-lab.md Outdated Show resolved Hide resolved
Copy link
Member

@eps1lon eps1lon left a comment

Choose a reason for hiding this comment

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

Two remaining points of Carson's review and this is good to go.

@oliviertassinari oliviertassinari merged commit db11266 into mui:master Jun 11, 2020
@@ -0,0 +1,2 @@
export * from './overrides';
Copy link
Contributor

Choose a reason for hiding this comment

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

this files is not exported in the main index.d.ts

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It was decided above that that would be too magical for users and that an explicit import for themeAugmentation would be better.

Copy link
Contributor

Choose a reason for hiding this comment

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

orite, makes sense. How exactly should we use this

e.g. this is my current theme file theme.tsx

import createMuiTheme from "@material-ui/core/styles/createMuiTheme";
import type '@material-ui/lab/themeAugmentation'; // error: '=' expected.ts(1005)

export const theme = createMuiTheme({
  overrides: {
    // MuiAlert: {},
  }
})

Copy link
Contributor

Choose a reason for hiding this comment

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

I am using create-react-app BTW

Copy link
Contributor

Choose a reason for hiding this comment

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

Tried this

import type * as LabTypes from '@material-ui/lab/themeAugmentation';

worked but eslint is complaining that

'LabTypes' is declared but its value is never read.ts(6133)

Copy link
Contributor

Choose a reason for hiding this comment

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

Thank you very much. very helpful.

I googled so much but cannot find a best way for this.

What is the way to tell makeStyles that you are only allowed to use Alert classes? The following works but I am sure there must be a better way.

import { Theme, makeStyles } from "@material-ui/core";
import { AlertClassKey } from "@material-ui/lab/Alert";

export const useAlertClasses = makeStyles<Theme>(
  (): Partial<Record<AlertClassKey, any>> => ({
    root: {
      borderRadius: 3,
    }
}));

Copy link

Choose a reason for hiding this comment

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

@CarsonF I'm facing the same issue. I'm also using create-react-app. Already made sure that all sub-dependencies are up to date by using yarn upgrade react-scripts. I'm using TypeScript 3.8.3.
Named type imports are working completely fine but not these unnamed ones.

Copy link
Member

Choose a reason for hiding this comment

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

It should be fixed in v5.0.0-alpha.3 with #21724

Copy link

Choose a reason for hiding this comment

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

@oliviertassinari Could you backport this fix to the 4.x line of labs? I don't want to upgrade to 5.x yet.

Copy link
Member

Choose a reason for hiding this comment

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

@levrik For now, you can copy & paste the diff of this pull request

@CarsonF CarsonF deleted the feature/lab-component-mapping branch June 17, 2020 16:52
@mui mui deleted a comment from levrik Jul 14, 2020
@Domino987
Copy link
Contributor

This does not seem to work for CRA. Can you verify that?

@oliviertassinari
Copy link
Member

@Domino987 It should be fixed in v5.0.0-alpha.3 with #21724

@oliviertassinari oliviertassinari changed the title [TypeScript] Allow lab components to have overrides in theme [typescript] Allow lab components to have overrides in theme Jan 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package: lab Specific to @mui/lab typescript
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cannot use theme.overrides with the lab
9 participants