Skip to content
Open
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "feat: add dynamic imports support to prefer-fluentui-v9 rule",
"packageName": "@fluentui/eslint-plugin-react-components",
"email": "[email protected]",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,21 @@ ruleTester.run(RULE_NAME, rule, {
{
code: `import { Button } from '@fluentui/react-components';`,
},
{
code: `import { Dialog } from '@fluentui/react-components';`,
},
{
code: `import { DatePicker } from '@fluentui/react-datepicker-compat';`,
},
{
code: `import { Calendar } from '@fluentui/react-calendar-compat';`,
},
{
code: `const Calendar = React.lazy(() => import('@fluentui/react-calendar-compat').then(m => ({ default: m.Calendar })));`,
},
{
code: `const Dialog = React.lazy(async () => { const m = await import('@fluentui/react-components'); return { default: m.Dialog }; });`,
},
],
invalid: [
{
Expand All @@ -36,6 +51,60 @@ ruleTester.run(RULE_NAME, rule, {
},
],
},
{
code: `const Calendar = React.lazy(() => import('@fluentui/react').then(m => ({ default: m.Calendar })));`,
Copy link
Contributor

Choose a reason for hiding this comment

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

will this catch also standard dynamic imports outside React.lazy() ?

contrived example:

function hello(){
 import('@fluentui/react').then(m => ( 
window.v8 = m
console.log('react loaded') )
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

errors: [
{
messageId: 'replaceFluent8With9',
data: { fluent8: 'Calendar', fluent9: 'Calendar', package: '@fluentui/react-calendar-compat' },
},
],
},
{
code: `const Calendar = React.lazy(() => import('@fluentui/react').then(({ Calendar }) => ({ default: Calendar })));`,
errors: [
{
messageId: 'replaceFluent8With9',
data: { fluent8: 'Calendar', fluent9: 'Calendar', package: '@fluentui/react-calendar-compat' },
},
],
},
{
code: `const Dialog = React.lazy(async () => { const m = await import('@fluentui/react'); return { default: m.Dialog }; });`,
errors: [
{
messageId: 'replaceFluent8With9',
data: { fluent8: 'Dialog', fluent9: 'Dialog', package: '@fluentui/react-components' },
},
],
},
{
code: `const Dialog = React.lazy(async () => { const { Dialog } = await import('@fluentui/react'); return { default: Dialog }; });`,
errors: [
{
messageId: 'replaceFluent8With9',
data: { fluent8: 'Dialog', fluent9: 'Dialog', package: '@fluentui/react-components' },
},
],
},
{
code: `function hello() { import('@fluentui/react').then(m => { window.v8 = m.Button; console.log('react loaded'); }); }`,
errors: [
{
messageId: 'replaceFluent8With9',
data: { fluent8: 'Button', fluent9: 'Button', package: '@fluentui/react-components' },
},
],
},
{
code: `async function loadComponent() { const m = await import('@fluentui/react'); return m.Calendar; }`,
errors: [
{
messageId: 'replaceFluent8With9',
data: { fluent8: 'Calendar', fluent9: 'Calendar', package: '@fluentui/react-calendar-compat' },
},
],
},
{
code: `import { CompoundButton } from '@fluentui/react/lib/Button';`,
errors: [
Expand Down
Loading