Skip to content

Commit

Permalink
react-badge: Migrate to new DX (#18746)
Browse files Browse the repository at this point in the history
* Migrate to new DX

* Change files

* Removed dependency on v9 icons for Badge storybook

* Update packages/react-examples/package.json

Co-authored-by: Martin Hochel <[email protected]>

* Update packages/react-examples/package.json

Co-authored-by: Martin Hochel <[email protected]>

* Update change/@fluentui-react-examples-7fda57e7-5640-426d-a34c-5273f5c1723b.json

Co-authored-by: Makoto Morimoto <[email protected]>

Co-authored-by: Martin Hochel <[email protected]>
Co-authored-by: Makoto Morimoto <[email protected]>
  • Loading branch information
3 people authored Jul 1, 2021
1 parent 8de04ed commit 3559542
Show file tree
Hide file tree
Showing 22 changed files with 182 additions and 34 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "Migrate to new DX",
"packageName": "@fluentui/react-badge",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "Removing react-badge examples that have been moved due to migration to new DX.",
"packageName": "@fluentui/react-examples",
"email": "[email protected]",
"dependentChangeType": "none"
}
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ module.exports = {
'<rootDir>/packages/jest-serializer-make-styles',
'<rootDir>/packages/react-context-selector',
'<rootDir>/packages/babel-make-styles',
'<rootDir>/packages/react-badge',
],
};
2 changes: 1 addition & 1 deletion nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
"@fluentui/react": { "implicitDependencies": [] },
"@fluentui/react-accordion": { "tags": ["vNext"], "implicitDependencies": [] },
"@fluentui/react-avatar": { "implicitDependencies": [] },
"@fluentui/react-badge": { "implicitDependencies": [] },
"@fluentui/react-badge": { "tags": ["vNext", "platform:web"], "implicitDependencies": [] },
"@fluentui/react-button": { "implicitDependencies": [] },
"@fluentui/react-card": { "implicitDependencies": [] },
"@fluentui/react-charting": { "implicitDependencies": [] },
Expand Down
11 changes: 11 additions & 0 deletions packages/react-badge/.storybook/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const rootMain = require('../../../.storybook/main');

module.exports = /** @type {Pick<import('../../../.storybook/main').StorybookConfig,'addons'|'stories'|'webpackFinal'>} */ ({
stories: [...rootMain.stories, '../src/**/*.stories.mdx', '../src/**/*.stories.@(ts|tsx)'],
addons: [...rootMain.addons],
webpackFinal: (config, options) => {
const localConfig = { ...rootMain.webpackFinal(config, options) };

return localConfig;
},
});
3 changes: 3 additions & 0 deletions packages/react-badge/.storybook/preview.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import * as rootPreview from '../../../.storybook/preview';

export const decorators = [...rootPreview.decorators];
9 changes: 9 additions & 0 deletions packages/react-badge/.storybook/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": true
},
"exclude": ["../**/*.test.ts", "../**/*.test.js", "../**/*.test.tsx", "../**/*.test.jsx"],
"include": ["../src/**/*", "*.js"]
}
1 change: 1 addition & 0 deletions packages/react-badge/config/api-extractor.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"extends": "@fluentui/scripts/api-extractor/api-extractor.common.json"
}
5 changes: 5 additions & 0 deletions packages/react-badge/config/api-extractor.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"extends": "./api-extractor.json",
"mainEntryPointFilePath": "<projectFolder>/dist/<unscopedPackageName>/src/index.d.ts"
}
26 changes: 19 additions & 7 deletions packages/react-badge/jest.config.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
const { createConfig } = require('@fluentui/scripts/jest/jest-resources');
const path = require('path');
// @ts-check

const config = createConfig({
setupFiles: [path.resolve(path.join(__dirname, 'config', 'tests.js'))],
/**
* @type {jest.InitialOptions}
*/
module.exports = {
displayName: 'react-badge',
preset: '../../jest.preset.js',
globals: {
'ts-jest': {
tsConfig: '<rootDir>/tsconfig.json',
diagnostics: false,
},
},
transform: {
'^.+\\.tsx?$': 'ts-jest',
},
coverageDirectory: './coverage',
setupFilesAfterEnv: ['./config/tests.js'],
snapshotSerializers: ['@fluentui/jest-serializer-make-styles'],
});

module.exports = config;
};
9 changes: 5 additions & 4 deletions packages/react-badge/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@
"code-style": "just-scripts code-style",
"just": "just-scripts",
"lint": "just-scripts lint",
"start": "just-scripts dev:storybook",
"start-test": "just-scripts jest-watch",
"test": "just-scripts test",
"update-snapshots": "just-scripts jest -u"
"start": "storybook",
"test": "jest",
"docs": "api-extractor run --config=config/api-extractor.local.json --local",
"build:local": "tsc -p . --module esnext --emitDeclarationOnly && node ../../scripts/typescript/normalize-import --output dist/react-badge/src && yarn docs",
"storybook": "start-storybook"
},
"devDependencies": {
"@fluentui/babel-make-styles": "^9.0.0-alpha.20",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { Badge } from '@fluentui/react-badge';
import { Badge } from './index';

export const BadgeAppearanceExample = () => (
<>
Expand Down Expand Up @@ -53,3 +53,8 @@ export const BadgeAppearanceExample = () => (
</div>
</>
);

export default {
title: 'Components/Badge',
component: Badge,
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { Badge } from '@fluentui/react-badge';
import { Badge } from './index';

export const BadgeAppearanceExample = () => (
<div
Expand Down Expand Up @@ -179,3 +179,8 @@ export const BadgeAppearanceExample = () => (
</div>
</div>
);

export default {
title: 'Components/BadgeAppearance',
component: Badge,
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { Badge } from '@fluentui/react-badge';
import { Badge } from './index';

export const BadgeContentExample = () => (
<div
Expand Down Expand Up @@ -84,3 +84,8 @@ export const BadgeContentExample = () => (
</div>
</div>
);

export default {
title: 'Components/BadgeContent',
component: Badge,
};
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react';
import { Badge } from '@fluentui/react-badge';
import { AcceptIcon } from '@fluentui/react-icons-mdl2';
import { Badge } from './index';
import { AcceptIcon } from './tmp-icons.stories';

export const BadgeIconExample = () => (
<div
Expand All @@ -19,3 +19,8 @@ export const BadgeIconExample = () => (
<Badge size="largest" icon={<AcceptIcon />} />
</div>
);

export default {
title: 'Components/BadgeIcon',
component: Badge,
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { CounterBadge } from '@fluentui/react-badge';
import { CounterBadge } from './index';

const DisplayBadge: React.FC<{}> = props => (
<div style={{ display: 'flex', alignItems: 'center', gap: 4, margin: 4 }}>{props.children}</div>
Expand Down Expand Up @@ -57,3 +57,8 @@ export const BadgeAppearanceExample = () => {
</>
);
};

export default {
title: 'Components/CounterBadge',
component: CounterBadge,
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { PresenceBadge } from '@fluentui/react-badge';
import { PresenceBadge } from './index';

export const PresenceBadgeStatus = () => (
<>
Expand Down Expand Up @@ -37,3 +37,8 @@ export const PresenceBadgeStatus = () => (
</div>
</>
);

export default {
title: 'Components/PresenceBadge',
component: PresenceBadge,
};
62 changes: 62 additions & 0 deletions packages/react-badge/src/tmp-icons.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
//
// !!! A temporary workaround to avoid dependencies on any icon packages.
// !!! A usage of converged icon package should be considered.
// !!! Used for converged stories to avoid dependencies on non-converged icons
//

import * as React from 'react';
import { mergeClasses, makeStyles } from '@fluentui/react-make-styles';
import { getNativeProps, htmlElementProperties } from '@fluentui/react-utilities';

const useStyles = makeStyles({
root: {
display: 'inline-block',
verticalAlign: 'middle',
speak: 'none',
width: '1em',
height: '1em',
},
svg: {
height: '100%',
fill: 'currentColor',
verticalAlign: 'top',
},
});

const useIconProps = (props: React.HTMLAttributes<HTMLSpanElement>) => {
const containerProps = props['aria-label']
? {}
: {
role: 'presentation',
['aria-hidden']: true,
};
const nativeProps = getNativeProps<React.HTMLAttributes<HTMLElement>>(props, htmlElementProperties);
const styles = useStyles();

const rootClasses = styles.root;
const svgClasses = styles.svg;

return { containerProps, nativeProps, rootClasses, svgClasses };
};

export const renderIcon = (
SVGElement: (props: { svgClasses: string }) => JSX.Element,
): React.FC<React.HTMLAttributes<HTMLSpanElement>> => props => {
const { containerProps, nativeProps, rootClasses, svgClasses } = useIconProps(props);

return React.createElement(
'span',
{
...containerProps,
...nativeProps,
className: mergeClasses(rootClasses, props.className),
},
<SVGElement svgClasses={svgClasses} />,
);
};

export const AcceptIcon = renderIcon(props => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" className={props.svgClasses}>
<path d="M640 1755L19 1133l90-90 531 530L1939 275l90 90L640 1755z" />
</svg>
));
19 changes: 7 additions & 12 deletions packages/react-badge/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
{
"extends": "../../tsconfig.base.json",
"include": ["src"],
"compilerOptions": {
"baseUrl": ".",
"target": "ES5",
"module": "CommonJS",
"lib": ["es5", "dom"],
"outDir": "dist",
"target": "es5",
"module": "commonjs",
"jsx": "react",
"declaration": true,
"sourceMap": true,
"experimentalDecorators": true,
"importHelpers": true,
"noUnusedLocals": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"moduleResolution": "node",
"preserveConstEnums": true,
"lib": ["es5", "dom"],
"typeRoots": ["../../node_modules/@types", "../../typings"],
"types": ["jest", "custom-global"]
},
"include": ["src"]
"types": ["jest", "custom-global", "inline-style-expand-shorthand"]
}
}
1 change: 0 additions & 1 deletion packages/react-examples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
"@fluentui/merge-styles": "^8.1.2",
"@fluentui/react": "^8.22.0",
"@fluentui/react-avatar": "^9.0.0-alpha.50",
"@fluentui/react-badge": "^9.0.0-alpha.51",
"@fluentui/react-button": "^9.0.0-alpha.53",
"@fluentui/react-charting": "^5.3.3",
"@fluentui/react-checkbox": "^9.0.0-alpha.5",
Expand Down
3 changes: 2 additions & 1 deletion tsconfig.base.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"@fluentui/react-divider": ["packages/react-divider/src/index.ts"],
"@fluentui/react-label": ["packages/react-label/src/index.ts"],
"@fluentui/jest-serializer-make-styles": ["packages/jest-serializer-make-styles/src/index.ts"],
"@fluentui/babel-make-styles": ["packages/babel-make-styles/src/index.ts"]
"@fluentui/babel-make-styles": ["packages/babel-make-styles/src/index.ts"],
"@fluentui/react-badge": ["packages/react-badge/src/index.ts"]
}
},
"exclude": ["node_modules"]
Expand Down
6 changes: 5 additions & 1 deletion workspace.json
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,11 @@
"sourceRoot": "packages/react-accordion/src"
},
"@fluentui/react-avatar": { "root": "packages/react-avatar", "projectType": "library" },
"@fluentui/react-badge": { "root": "packages/react-badge", "projectType": "library" },
"@fluentui/react-badge": {
"root": "packages/react-badge",
"projectType": "library",
"sourceRoot": "packages/react-badge/src"
},
"@fluentui/react-button": { "root": "packages/react-button", "projectType": "library" },
"@fluentui/react-card": { "root": "packages/react-card", "projectType": "library" },
"@fluentui/react-charting": { "root": "packages/react-charting", "projectType": "library" },
Expand Down

0 comments on commit 3559542

Please sign in to comment.