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

[material-ui] Add DefaultPropsProvider for Pigment CSS integration #42638

Merged
merged 24 commits into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
d8ae2b8
v6.0.0-alpha.11
brijeshb42 Jun 11, 2024
c1302e7
Bump versions
brijeshb42 Jun 12, 2024
715df3c
Merge branch 'next' of https://github.com/mui/material-ui into v6.0.0…
siriwatknp Jun 12, 2024
95ed43b
restore
siriwatknp Jun 12, 2024
8a138f9
update changelog
siriwatknp Jun 12, 2024
3caa5f8
fix non-breaking space
siriwatknp Jun 12, 2024
dfa8bf9
Merge branch 'next' of https://github.com/mui/material-ui into v6.0.0…
siriwatknp Jun 13, 2024
e57ac7b
add PropsProvider
siriwatknp Jun 13, 2024
ea9650a
migrate to useDefaultProps
siriwatknp Jun 13, 2024
66146d0
run proptypes and docs:api
siriwatknp Jun 13, 2024
672c180
fix lint
siriwatknp Jun 13, 2024
d2ddf3b
fix lint and test
siriwatknp Jun 13, 2024
37c6c5d
fix lint plugin
siriwatknp Jun 13, 2024
4b89434
remove createUseThemeProps
siriwatknp Jun 13, 2024
37e9996
remove useThemeProps
siriwatknp Jun 14, 2024
ba20d00
Merge branch 'next' of https://github.com/mui/material-ui into feat/p…
siriwatknp Jun 14, 2024
0dec6b2
fix lint
siriwatknp Jun 14, 2024
68fd0ca
Merge branch 'next' of https://github.com/mui/material-ui into feat/p…
siriwatknp Jun 17, 2024
57ad7b6
Merge branch 'next' of https://github.com/mui/material-ui into feat/p…
siriwatknp Jun 19, 2024
8f66700
apply suggestion
siriwatknp Jun 19, 2024
e955495
use custom getThemeProps logic
siriwatknp Jun 19, 2024
894a6a4
fix line mismatch
siriwatknp Jun 19, 2024
01b6988
Merge branch 'next' of https://github.com/mui/material-ui into feat/p…
siriwatknp Jun 20, 2024
f2b658a
restore
siriwatknp Jun 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion packages/api-docs-builder-core/materialUi/projectSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ export const projectSettings: ProjectSettings = {
getComponentInfo: getMaterialUiComponentInfo,
translationLanguages: LANGUAGES,
skipComponent(filename: string) {
return filename.match(/(ThemeProvider|CssVarsProvider|InitColorSchemeScript|Grid2)/) !== null;
return (
filename.match(
/(ThemeProvider|CssVarsProvider|DefaultPropsProvider|InitColorSchemeScript|Grid2)/,
) !== null
);
},
translationPagesDirectory: 'docs/translations/api-docs',
generateClassName: generateUtilityClass,
Expand Down
4 changes: 3 additions & 1 deletion packages/api-docs-builder-core/muiSystem/projectSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ export const projectSettings: ProjectSettings = {
translationLanguages: LANGUAGES,
skipComponent(filename) {
return (
filename.match(/(ThemeProvider|CssVarsProvider|GlobalStyles|InitColorSchemeScript)/) !== null
filename.match(
/(ThemeProvider|CssVarsProvider|DefaultPropsProvider|GlobalStyles|InitColorSchemeScript)/,
) !== null
);
},
translationPagesDirectory: 'docs/translations/api-docs',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,18 +68,9 @@ const rule = {

return {
CallExpression(node) {
const isCreateUseThemePropsCall = node.callee.name === 'createUseThemeProps';
if (isCreateUseThemePropsCall) {
if (!node.arguments.length) {
context.report({ node, messageId: 'noNameValue' });
} else if (node.arguments[0].type !== 'Literal' || !node.arguments[0].value) {
context.report({ node: node.arguments[0], messageId: 'noNameValue' });
}
}

let nameLiteral = null;
const isUseThemePropsCall = node.callee.name === 'useThemeProps';
if (isUseThemePropsCall) {
const isUseDefaultPropsCall = node.callee.name === 'useDefaultProps';
if (isUseDefaultPropsCall) {
let isCalledFromCustomHook = false;
let parent = node.parent;
while (parent != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ ruleTester.run('mui-name-matches-component-name', rule, {
inProps: StaticDateRangePickerProps<TDate>,
ref: React.Ref<HTMLDivElement>,
) {
const props = useThemeProps({ props: inProps, name: 'MuiStaticDateRangePicker' });
const props = useDefaultProps({ props: inProps, name: 'MuiStaticDateRangePicker' });
});
`,
`
function CssBaseline(inProps) {
useThemeProps({ props: inProps, name: 'MuiCssBaseline' });
useDefaultProps({ props: inProps, name: 'MuiCssBaseline' });
}
`,
`
Expand All @@ -32,7 +32,7 @@ ruleTester.run('mui-name-matches-component-name', rule, {
];
},
}),
useThemeProps: (inProps) => useThemeProps({ props: inProps, name: 'MuiContainer' }),
useDefaultProps: (inProps) => useDefaultProps({ props: inProps, name: 'MuiContainer' }),
});
`,
`
Expand All @@ -42,12 +42,9 @@ ruleTester.run('mui-name-matches-component-name', rule, {
overridesResolver: (props, styles) => styles.root,
}),
componentName: 'MuiGrid2',
useThemeProps: (inProps) => useThemeProps({ props: inProps, name: 'MuiGrid2' }),
useDefaultProps: (inProps) => useDefaultProps({ props: inProps, name: 'MuiGrid2' }),
}) as OverridableComponent<Grid2TypeMap>;
`,
`
const useThemeProps = createUseThemeProps('MuiBadge');
`,
{
code: `
const StaticDateRangePicker = React.forwardRef(function StaticDateRangePicker<TDate>(
Expand All @@ -62,7 +59,7 @@ ruleTester.run('mui-name-matches-component-name', rule, {
{
code: `
function useDatePickerDefaultizedProps(props, name) {
useThemeProps({ props, name });
useDefaultProps({ props, name });
}
`,
options: [{ customHooks: ['useDatePickerDefaultizedProps'] }],
Expand All @@ -75,7 +72,7 @@ ruleTester.run('mui-name-matches-component-name', rule, {
inProps: StaticDateRangePickerProps<TDate>,
ref: React.Ref<HTMLDivElement>,
) {
const props = useThemeProps({ props: inProps, name: 'MuiPickersDateRangePicker' });
const props = useDefaultProps({ props: inProps, name: 'MuiPickersDateRangePicker' });
});
`,
errors: [
Expand All @@ -87,7 +84,7 @@ ruleTester.run('mui-name-matches-component-name', rule, {
],
},
{
code: 'useThemeProps({ props: inProps })',
code: 'useDefaultProps({ props: inProps })',
errors: [
{
message: 'Unable to find `name` property. Did you forget to pass `name`?',
Expand All @@ -96,7 +93,7 @@ ruleTester.run('mui-name-matches-component-name', rule, {
],
},
{
code: 'useThemeProps({ props: inProps, name })',
code: 'useDefaultProps({ props: inProps, name })',
errors: [
{
message:
Expand All @@ -106,7 +103,7 @@ ruleTester.run('mui-name-matches-component-name', rule, {
],
},
{
code: "useThemeProps({ props: inProps, name: 'MuiPickersDateRangePicker' })",
code: "useDefaultProps({ props: inProps, name: 'MuiPickersDateRangePicker' })",
errors: [{ message: 'Unable to find component for this call.', type: 'CallExpression' }],
},
{
Expand Down Expand Up @@ -145,37 +142,5 @@ ruleTester.run('mui-name-matches-component-name', rule, {
},
],
},
{
code: `
const useThemeProps = createUseThemeProps();

const Badge = React.forwardRef(function Badge(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiBadge' });
});
`,
errors: [
{
message:
'Unable to resolve `name`. Please hardcode the `name` i.e. use a string literal.',
type: 'CallExpression',
},
],
},
{
code: `
const useThemeProps = createUseThemeProps({ name: 'MuiBadge' });

const Badge = React.forwardRef(function Badge(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiBadge' });
});
`,
errors: [
{
message:
'Unable to resolve `name`. Please hardcode the `name` i.e. use a string literal.',
type: 'ObjectExpression',
},
],
},
],
});
7 changes: 3 additions & 4 deletions packages/mui-lab/src/LoadingButton/LoadingButton.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@ import PropTypes from 'prop-types';
import { chainPropTypes } from '@mui/utils';
import { capitalize, unstable_useId as useId } from '@mui/material/utils';
import { unstable_composeClasses as composeClasses } from '@mui/base';
import { useDefaultProps } from '@mui/material/DefaultPropsProvider';
import Button from '@mui/material/Button';
import { ButtonGroupContext } from '@mui/material/ButtonGroup';
import CircularProgress from '@mui/material/CircularProgress';
import resolveProps from '@mui/utils/resolveProps';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import loadingButtonClasses, { getLoadingButtonUtilityClass } from './loadingButtonClasses';

const useThemeProps = createUseThemeProps('MuiLoadingButton');

const useUtilityClasses = (ownerState) => {
const { loading, loadingPosition, classes } = ownerState;

Expand Down Expand Up @@ -198,7 +197,7 @@ const LoadingButtonLoadingIndicator = styled('span', {
const LoadingButton = React.forwardRef(function LoadingButton(inProps, ref) {
const contextProps = React.useContext(ButtonGroupContext);
const resolvedProps = resolveProps(contextProps, inProps);
const props = useThemeProps({ props: resolvedProps, name: 'MuiLoadingButton' });
const props = useDefaultProps({ props: resolvedProps, name: 'MuiLoadingButton' });
const {
children,
disabled = false,
Expand Down
8 changes: 1 addition & 7 deletions packages/mui-lab/src/zero-styled/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,2 @@
import { useThemeProps } from '@mui/material/styles';

/* eslint-disable import/prefer-default-export */
export { styled } from '@mui/material/styles';

// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function createUseThemeProps(name: string) {
return useThemeProps;
}
7 changes: 3 additions & 4 deletions packages/mui-material/src/Accordion/Accordion.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import chainPropTypes from '@mui/utils/chainPropTypes';
import composeClasses from '@mui/utils/composeClasses';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import { useDefaultProps } from '../DefaultPropsProvider';
import Collapse from '../Collapse';
import Paper from '../Paper';
import AccordionContext from './AccordionContext';
import useControlled from '../utils/useControlled';
import useSlot from '../utils/useSlot';
import accordionClasses, { getAccordionUtilityClass } from './accordionClasses';

const useThemeProps = createUseThemeProps('MuiAccordion');

const useUtilityClasses = (ownerState) => {
const { classes, square, expanded, disabled, disableGutters } = ownerState;

Expand Down Expand Up @@ -126,7 +125,7 @@ const AccordionRoot = styled(Paper, {
);

const Accordion = React.forwardRef(function Accordion(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiAccordion' });
const props = useDefaultProps({ props: inProps, name: 'MuiAccordion' });
const {
children: childrenProp,
className,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import { useDefaultProps } from '../DefaultPropsProvider';
import { getAccordionActionsUtilityClass } from './accordionActionsClasses';

const useThemeProps = createUseThemeProps('MuiAccordionActions');

const useUtilityClasses = (ownerState) => {
const { classes, disableSpacing } = ownerState;

Expand Down Expand Up @@ -44,7 +43,7 @@ const AccordionActionsRoot = styled('div', {
});

const AccordionActions = React.forwardRef(function AccordionActions(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiAccordionActions' });
const props = useDefaultProps({ props: inProps, name: 'MuiAccordionActions' });
const { className, disableSpacing = false, ...other } = props;
const ownerState = { ...props, disableSpacing };

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import { useDefaultProps } from '../DefaultPropsProvider';
import { getAccordionDetailsUtilityClass } from './accordionDetailsClasses';

const useThemeProps = createUseThemeProps('MuiAccordionDetails');

const useUtilityClasses = (ownerState) => {
const { classes } = ownerState;

Expand All @@ -27,7 +26,7 @@ const AccordionDetailsRoot = styled('div', {
}));

const AccordionDetails = React.forwardRef(function AccordionDetails(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiAccordionDetails' });
const props = useDefaultProps({ props: inProps, name: 'MuiAccordionDetails' });
const { className, ...other } = props;
const ownerState = props;
const classes = useUtilityClasses(ownerState);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import { useDefaultProps } from '../DefaultPropsProvider';
import ButtonBase from '../ButtonBase';
import AccordionContext from '../Accordion/AccordionContext';
import accordionSummaryClasses, {
getAccordionSummaryUtilityClass,
} from './accordionSummaryClasses';

const useThemeProps = createUseThemeProps('MuiAccordionSummary');

const useUtilityClasses = (ownerState) => {
const { classes, expanded, disabled, disableGutters } = ownerState;

Expand Down Expand Up @@ -101,7 +100,7 @@ const AccordionSummaryExpandIconWrapper = styled('div', {
}));

const AccordionSummary = React.forwardRef(function AccordionSummary(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiAccordionSummary' });
const props = useDefaultProps({ props: inProps, name: 'MuiAccordionSummary' });
const { children, className, expandIcon, focusVisibleClassName, onClick, ...other } = props;

const { disabled = false, disableGutters, expanded, toggle } = React.useContext(AccordionContext);
Expand Down
7 changes: 3 additions & 4 deletions packages/mui-material/src/Alert/Alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { darken, lighten } from '@mui/system/colorManipulator';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import { useDefaultProps } from '../DefaultPropsProvider';
import useSlot from '../utils/useSlot';
import capitalize from '../utils/capitalize';
import Paper from '../Paper';
Expand All @@ -16,8 +17,6 @@ import ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';
import InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';
import CloseIcon from '../internal/svg-icons/Close';

const useThemeProps = createUseThemeProps('MuiAlert');

const useUtilityClasses = (ownerState) => {
const { variant, color, severity, classes } = ownerState;

Expand Down Expand Up @@ -157,7 +156,7 @@ const defaultIconMapping = {
};

const Alert = React.forwardRef(function Alert(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiAlert' });
const props = useDefaultProps({ props: inProps, name: 'MuiAlert' });
const {
action,
children,
Expand Down
7 changes: 3 additions & 4 deletions packages/mui-material/src/AlertTitle/AlertTitle.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import { useDefaultProps } from '../DefaultPropsProvider';
import Typography from '../Typography';
import { getAlertTitleUtilityClass } from './alertTitleClasses';

const useThemeProps = createUseThemeProps('MuiAlertTitle');

const useUtilityClasses = (ownerState) => {
const { classes } = ownerState;

Expand All @@ -31,7 +30,7 @@ const AlertTitleRoot = styled(Typography, {
});

const AlertTitle = React.forwardRef(function AlertTitle(inProps, ref) {
const props = useThemeProps({
const props = useDefaultProps({
props: inProps,
name: 'MuiAlertTitle',
});
Expand Down
7 changes: 3 additions & 4 deletions packages/mui-material/src/AppBar/AppBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { styled, createUseThemeProps } from '../zero-styled';
import { styled } from '../zero-styled';
import { useDefaultProps } from '../DefaultPropsProvider';
import capitalize from '../utils/capitalize';
import Paper from '../Paper';
import { getAppBarUtilityClass } from './appBarClasses';

const useThemeProps = createUseThemeProps('MuiAppBar');

const useUtilityClasses = (ownerState) => {
const { color, position, classes } = ownerState;

Expand Down Expand Up @@ -161,7 +160,7 @@ const AppBarRoot = styled(Paper, {
}));

const AppBar = React.forwardRef(function AppBar(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiAppBar' });
const props = useDefaultProps({ props: inProps, name: 'MuiAppBar' });
const {
className,
color = 'primary',
Expand Down
Loading