Skip to content

Commit

Permalink
chore: migrate react-provider to use Griffel (#21360)
Browse files Browse the repository at this point in the history
* chore: use Griffel in react-provider

* fix to lock, hoist linaria pkg

* fix syncpack

* enable hack for presets
  • Loading branch information
layershifter authored Jan 24, 2022
1 parent c2706ce commit 7063053
Show file tree
Hide file tree
Showing 18 changed files with 98 additions and 218 deletions.
9 changes: 9 additions & 0 deletions .storybook/custom-loader.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const excludePlugins = ['module:@fluentui/babel-make-styles'];
const excludePresets = ['@griffel'];

module.exports = () => {
return {
Expand All @@ -14,9 +15,17 @@ module.exports = () => {
return !excludePlugins.includes(requestedPlugin);
});

const existingPresets = /** @type {Required<import('@babel/core').ConfigItem[]>} */ (cfg.options.presets || []);
const presetsToInclude = existingPresets.filter(plugin => {
const requestedPreset = /** @type {NonNullable<typeof plugin['file']>} */ (plugin.file).request;

return !excludePresets.includes(requestedPreset);
});

return {
...cfg.options,
plugins: pluginsToInclude,
presets: presetsToInclude,
};
},
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "use Griffel packages",
"packageName": "@fluentui/react-provider",
"email": "[email protected]",
"dependentChangeType": "patch"
}
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@
"@babel/standalone": "7.14.8",
"@ctrl/tinycolor": "3.3.4",
"@fluentui/react-icons": "^2.0.154-beta.5",
"@griffel/babel-preset": "1.0.0",
"@griffel/jest-serializer": "1.0.0",
"@linaria/babel-preset": "3.0.0-beta.14",
"@microsoft/api-extractor": "7.18.1",
"@nrwl/cli": "13.4.5",
"@nrwl/devkit": "13.4.5",
Expand Down Expand Up @@ -297,6 +300,7 @@
"dependencies": [
"@babel/core",
"@babel/preset-typescript",
"@linaria/babel-preset",
"@rnx-kit/eslint-plugin",
"@types/react-test-renderer",
"@typescript-eslint/eslint-plugin",
Expand Down
3 changes: 2 additions & 1 deletion packages/react-provider/.babelrc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{
"plugins": ["module:@fluentui/babel-make-styles", "annotate-pure-calls", "@babel/transform-react-pure-annotations"]
"presets": ["@griffel"],
"plugins": ["annotate-pure-calls", "@babel/transform-react-pure-annotations"]
}
2 changes: 2 additions & 0 deletions packages/react-provider/etc/react-provider.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ export interface FluentProviderContextValues extends Pick<FluentProviderState, '
// (undocumented)
provider: ProviderContextValue;
// (undocumented)
textDirection: 'ltr' | 'rtl';
// (undocumented)
themeClassName: ThemeClassNameContextValue;
// (undocumented)
tooltip: TooltipContextType;
Expand Down
2 changes: 1 addition & 1 deletion packages/react-provider/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ module.exports = {
},
coverageDirectory: './coverage',
setupFilesAfterEnv: ['./config/tests.js'],
snapshotSerializers: ['@fluentui/jest-serializer-make-styles'],
snapshotSerializers: ['@griffel/jest-serializer'],
};
6 changes: 2 additions & 4 deletions packages/react-provider/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@
"type-check": "tsc -b tsconfig.json"
},
"devDependencies": {
"@fluentui/babel-make-styles": "9.0.0-beta.4",
"@fluentui/eslint-plugin": "*",
"@fluentui/jest-serializer-make-styles": "9.0.0-beta.4",
"@fluentui/react-conformance": "*",
"@fluentui/react-conformance-make-styles": "9.0.0-beta.4",
"@fluentui/react-conformance-griffel": "9.0.0-beta.0",
"@fluentui/scripts": "^1.0.0",
"@types/enzyme": "3.10.3",
"@types/enzyme-adapter-react-16": "1.0.3",
Expand All @@ -43,7 +41,7 @@
"react-test-renderer": "^16.3.0"
},
"dependencies": {
"@fluentui/react-make-styles": "9.0.0-beta.4",
"@griffel/react": "1.0.0",
"@fluentui/react-shared-contexts": "9.0.0-beta.4",
"@fluentui/react-tabster": "9.0.0-beta.5",
"@fluentui/react-theme": "9.0.0-beta.4",
Expand Down
4 changes: 2 additions & 2 deletions packages/react-provider/src/common/isConformant.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { isConformant as baseIsConformant } from '@fluentui/react-conformance';
import type { IsConformantOptions, TestObject } from '@fluentui/react-conformance';
import makeStylesTests from '@fluentui/react-conformance-make-styles';
import griffelTests from '@fluentui/react-conformance-griffel';

export function isConformant<TProps = {}>(
testInfo: Omit<IsConformantOptions<TProps>, 'componentPath'> & { componentPath?: string },
Expand All @@ -9,7 +9,7 @@ export function isConformant<TProps = {}>(
disabledTests: ['has-docblock'],
asPropHandlesRef: true,
componentPath: module!.parent!.filename.replace('.test', ''),
extraTests: makeStylesTests as TestObject<TProps>,
extraTests: griffelTests as TestObject<TProps>,
};

baseIsConformant(defaultOptions, testInfo);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { resetIdsForTests } from '@fluentui/react-utilities';
import { TextDirectionProvider } from '@griffel/react';
import * as React from 'react';
import { FluentProvider } from './FluentProvider';
import * as renderer from 'react-test-renderer';
Expand All @@ -18,7 +19,7 @@ describe('FluentProvider', () => {
Component: FluentProvider,
displayName: 'FluentProvider',
skipAsPropTests: true,
helperComponents: [ProviderContext.Provider],
helperComponents: [ProviderContext.Provider, TextDirectionProvider],
});

afterEach(() => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@ export interface FluentProviderState extends ComponentState<FluentProviderSlots>
export interface FluentProviderContextValues extends Pick<FluentProviderState, 'theme'> {
provider: ProviderContextValue;
themeClassName: ThemeClassNameContextValue;
textDirection: 'ltr' | 'rtl';
tooltip: TooltipContextType;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as React from 'react';
import { TextDirectionProvider } from '@griffel/react';
import { ProviderContext, TooltipContext, ThemeContext, ThemeClassNameContext } from '@fluentui/react-shared-contexts';
import { getSlots } from '@fluentui/react-utilities';
import type { FluentProviderSlots, FluentProviderContextValues, FluentProviderState } from './FluentProvider.types';
Expand All @@ -14,7 +15,9 @@ export const renderFluentProvider = (state: FluentProviderState, contextValues:
<ThemeContext.Provider value={contextValues.theme}>
<ThemeClassNameContext.Provider value={contextValues.themeClassName}>
<TooltipContext.Provider value={contextValues.tooltip}>
<slots.root {...slotProps.root}>{state.root.children}</slots.root>
<TextDirectionProvider dir={contextValues.textDirection}>
<slots.root {...slotProps.root}>{state.root.children}</slots.root>
</TextDirectionProvider>
</TooltipContext.Provider>
</ThemeClassNameContext.Provider>
</ThemeContext.Provider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export function useFluentProviderContextValues(state: FluentProviderState): Flue

return {
provider,
textDirection: dir,
tooltip,
theme,
themeClassName: root.className!,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { makeStyles, mergeClasses } from '@fluentui/react-make-styles';
import { makeStyles, mergeClasses } from '@griffel/react';
import { tokens } from '@fluentui/react-theme';
import type { FluentProviderState } from './FluentProvider.types';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react';
import { Button } from '@fluentui/react-button';
import { makeStyles, shorthands } from '@fluentui/react-make-styles';
import { makeStyles, shorthands } from '@griffel/react';
import { teamsDarkTheme, teamsLightTheme, tokens, webLightTheme } from '@fluentui/react-theme';

import { FluentProvider } from '../FluentProvider';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { shorthands, makeStyles } from '@fluentui/react-make-styles';
import { shorthands, makeStyles } from '@griffel/react';
import { tokens } from '@fluentui/react-theme';

import { FluentProvider } from '../FluentProvider';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { Button } from '@fluentui/react-button';
import { createDOMRenderer, makeStyles, RendererProvider, shorthands } from '@fluentui/react-make-styles';
import { createDOMRenderer, makeStyles, RendererProvider, shorthands } from '@griffel/react';
import { tokens } from '@fluentui/react-theme';

import { FluentProvider } from '../FluentProvider';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { shorthands, makeStyles } from '@fluentui/react-make-styles';
import { shorthands, makeStyles } from '@griffel/react';
import { tokens, webLightTheme } from '@fluentui/react-theme';

import { FluentProvider } from '../FluentProvider';
Expand Down
Loading

0 comments on commit 7063053

Please sign in to comment.