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

react-divider: Migrate to new DX #18625

Merged
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Divider: Migrate react-divider to new DX.",
"packageName": "@fluentui/react-divider",
"email": "[email protected]",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "Removing @fluentui/react-divider stories from @fluentui/react-examples.",
"packageName": "@fluentui/react-examples",
"email": "[email protected]",
"dependentChangeType": "patch"
}
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ module.exports = {
'<rootDir>/packages/react-portal',
'<rootDir>/packages/react-aria',
'<rootDir>/packages/react-positioning',
'<rootDir>/packages/react-divider',
],
};
2 changes: 1 addition & 1 deletion nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
"@fluentui/react-conformance": { "implicitDependencies": [] },
"@fluentui/react-context-selector": { "implicitDependencies": [] },
"@fluentui/react-date-time": { "implicitDependencies": [] },
"@fluentui/react-divider": { "implicitDependencies": [] },
"@fluentui/react-divider": { "tags": ["vNext", "platform:web"], "implicitDependencies": [] },
"@fluentui/react-docsite-components": { "implicitDependencies": [] },
"@fluentui/react-examples": { "implicitDependencies": [] },
"@fluentui/react-experiments": { "implicitDependencies": [] },
Expand Down
11 changes: 11 additions & 0 deletions packages/react-divider/.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-divider/.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-divider/.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"]
}
5 changes: 5 additions & 0 deletions packages/react-divider/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-divider/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-divider',
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-divider/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,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": "yarn 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/packages/react-divider/src && yarn docs",
"storybook": "start-storybook"
},
"devDependencies": {
"@fluentui/babel-make-styles": "^9.0.0-alpha.16",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import { mergeClasses, makeStyles } from '@fluentui/react-make-styles';
import { ClockIcon } from '@fluentui/react-icons-mdl2';
import { Divider, DividerProps } from '@fluentui/react-divider';
import { ClockIcon } from './tmp-icons.stories';
import { Divider, DividerProps } from './index';

// eslint-disable-next-line @typescript-eslint/naming-convention
export interface DividerStoryProps {
Expand Down Expand Up @@ -283,3 +283,8 @@ const DividerExamples = (props: DividerProps) => {
);
};
export const DividerExample = () => <DividerExamples />;

export default {
title: 'Components/Divider',
component: Divider,
};
62 changes: 62 additions & 0 deletions packages/react-divider/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 ClockIcon = renderIcon(props => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" className={props.svgClasses} focusable="false">
<path d="M1024 2048q-124 0-238-32t-214-90-181-140-140-181-91-214-32-239q0-124 32-238t90-214 140-181 181-140 214-91 239-32q124 0 238 32t214 90 181 140 140 181 91 214 32 239q0 124-32 238t-90 214-140 181-181 140-214 91-239 32zm0-1664q-159 0-298 60T482 609 317 853t-61 299q0 159 60 298t165 244 244 165 299 61q159 0 298-60t244-165 165-244 61-299q0-159-60-298t-165-244-244-165-299-61zm0 768V640H896v640h512v-128h-384z" />
</svg>
));
21 changes: 8 additions & 13 deletions packages/react-divider/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"],
"skipLibCheck": true,
"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 @@ -46,7 +46,6 @@
"@fluentui/react-charting": "^5.2.9",
"@fluentui/react-checkbox": "^9.0.0-alpha.3",
"@fluentui/react-components": "^9.0.0-alpha.66",
"@fluentui/react-divider": "^9.0.0-alpha.34",
"@fluentui/react-docsite-components": "^8.2.26",
"@fluentui/react-experiments": "^8.1.28",
"@fluentui/react-file-type-icons": "^8.1.3",
Expand Down
3 changes: 2 additions & 1 deletion tsconfig.base.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
"@fluentui/react-storybook": ["packages/react-storybook/src/index.ts"],
"@fluentui/react-accordion": ["packages/react-accordion/src/index.ts"],
"@fluentui/react-text": ["packages/react-text/src/index.ts"],
"@fluentui/react-aria": ["packages/react-aria/src/index.ts"]
"@fluentui/react-aria": ["packages/react-aria/src/index.ts"],
"@fluentui/react-divider": ["packages/react-divider/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 @@ -107,7 +107,11 @@
"@fluentui/react-conformance": { "root": "packages/react-conformance", "projectType": "library" },
"@fluentui/react-context-selector": { "root": "packages/react-context-selector", "projectType": "library" },
"@fluentui/react-date-time": { "root": "packages/react-date-time", "projectType": "library" },
"@fluentui/react-divider": { "root": "packages/react-divider", "projectType": "library" },
"@fluentui/react-divider": {
"root": "packages/react-divider",
"projectType": "library",
"sourceRoot": "packages/react-divider/src"
},
"@fluentui/react-docsite-components": { "root": "packages/react-docsite-components", "projectType": "library" },
"@fluentui/react-examples": { "root": "packages/react-examples", "projectType": "library" },
"@fluentui/react-experiments": { "root": "packages/react-experiments", "projectType": "library" },
Expand Down