Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
dougfabris committed Aug 14, 2023
2 parents e536d92 + fefb71c commit 982f617
Show file tree
Hide file tree
Showing 147 changed files with 2,293 additions and 758 deletions.
30 changes: 0 additions & 30 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,36 +101,6 @@ jobs:
env:
YARN_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

bump-packages:
name: Bump packages on Rocket.Chat
runs-on: ubuntu-latest
needs:
- publish-to-npm
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v3
with:
repository: "RocketChat/Rocket.Chat"

- uses: actions/setup-node@v2
with:
node-version: "14.21.3"
- name: Upgrade packages
run: yarn up @rocket.chat/emitter@latest @rocket.chat/fuselage-polyfills@latest @rocket.chat/fuselage-toastbar@latest @rocket.chat/fuselage-tokens@latest @rocket.chat/css-in-js@latest @rocket.chat/styled@latest @rocket.chat/fuselage@latest @rocket.chat/fuselage-hooks@latest @rocket.chat/icons@latest @rocket.chat/logo@latest @rocket.chat/memo@latest @rocket.chat/message-parser@latest @rocket.chat/onboarding-ui@latest @rocket.chat/string-helpers@latest

- name: Create Bump Pull Request
uses: peter-evans/create-pull-request@v4
env:
HUSKY: 0
with:
token: ${{ secrets.GH_TOKEN_FUSELAGE_BUMPER }}
commit-message: bump packages
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
branch: bump-fuselage-packages
delete-branch: true
title: "chore: Bump Fuselage Packages"
body: "Automated bump of the fuselage packages - [check what changed](https://github.com/RocketChat/fuselage/blob/develop/CHANGELOG.md)"

publish-to-gh-pages:
name: Publish to GitHub Pages
runs-on: ubuntu-latest
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
diff --git a/dist/generateDocgenCodeBlock.js b/dist/generateDocgenCodeBlock.js
index 0993ac13e4b2aae6d24cf408d6a585b4ddeb7337..1405896291288eb1322d6c42144afd3b4fbd1abf 100644
--- a/dist/generateDocgenCodeBlock.js
+++ b/dist/generateDocgenCodeBlock.js
@@ -34,7 +34,7 @@ function insertTsIgnoreBeforeStatement(statement) {
* ```
*/
function setDisplayName(d) {
- return insertTsIgnoreBeforeStatement(typescript_1.default.createExpressionStatement(typescript_1.default.createBinary(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier(d.displayName), typescript_1.default.createIdentifier("displayName")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.createLiteral(d.displayName))));
+ return insertTsIgnoreBeforeStatement(typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(d.displayName), typescript_1.default.factory.createIdentifier("displayName")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createStringLiteral(d.displayName))));
}
/**
* Set a component prop description.
@@ -65,7 +65,7 @@ function createPropDefinition(propName, prop, options) {
*
* @param defaultValue Default prop value or null if not set.
*/
- const setDefaultValue = (defaultValue) => typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("defaultValue"),
+ const setDefaultValue = (defaultValue) => typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("defaultValue"),
// Use a more extensive check on defaultValue. Sometimes the parser
// returns an empty object.
defaultValue !== null &&
@@ -75,12 +75,19 @@ function createPropDefinition(propName, prop, options) {
(typeof defaultValue.value === "string" ||
typeof defaultValue.value === "number" ||
typeof defaultValue.value === "boolean")
- ? typescript_1.default.createObjectLiteral([
- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("value"), typescript_1.default.createLiteral(defaultValue.value)),
+ ? typescript_1.default.factory.createObjectLiteralExpression([
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("value"), typeof defaultValue.value === "string"
+ ? typescript_1.default.factory.createStringLiteral(defaultValue.value)
+ : // eslint-disable-next-line no-nested-ternary
+ typeof defaultValue.value === "number"
+ ? typescript_1.default.factory.createNumericLiteral(defaultValue.value)
+ : defaultValue.value
+ ? typescript_1.default.factory.createTrue()
+ : typescript_1.default.factory.createFalse()),
])
- : typescript_1.default.createNull());
+ : typescript_1.default.factory.createNull());
/** Set a property with a string value */
- const setStringLiteralField = (fieldName, fieldValue) => typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral(fieldName), typescript_1.default.createLiteral(fieldValue));
+ const setStringLiteralField = (fieldName, fieldValue) => typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral(fieldName), typescript_1.default.factory.createStringLiteral(fieldValue));
/**
* ```
* SimpleComponent.__docgenInfo.props.someProp.description = "Prop description.";
@@ -101,7 +108,7 @@ function createPropDefinition(propName, prop, options) {
* ```
* @param required Whether prop is required or not.
*/
- const setRequired = (required) => typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("required"), required ? typescript_1.default.createTrue() : typescript_1.default.createFalse());
+ const setRequired = (required) => typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("required"), required ? typescript_1.default.factory.createTrue() : typescript_1.default.factory.createFalse());
/**
* ```
* SimpleComponent.__docgenInfo.props.someProp.type = {
@@ -113,7 +120,7 @@ function createPropDefinition(propName, prop, options) {
*/
const setValue = (typeValue) => Array.isArray(typeValue) &&
typeValue.every((value) => typeof value.value === "string")
- ? typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("value"), typescript_1.default.createArrayLiteral(typeValue.map((value) => typescript_1.default.createObjectLiteral([
+ ? typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("value"), typescript_1.default.factory.createArrayLiteralExpression(typeValue.map((value) => typescript_1.default.factory.createObjectLiteralExpression([
setStringLiteralField("value", value.value),
]))))
: undefined;
@@ -130,9 +137,9 @@ function createPropDefinition(propName, prop, options) {
if (valueField) {
objectFields.push(valueField);
}
- return typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral(options.typePropName), typescript_1.default.createObjectLiteral(objectFields));
+ return typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral(options.typePropName), typescript_1.default.factory.createObjectLiteralExpression(objectFields));
};
- return typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral(propName), typescript_1.default.createObjectLiteral([
+ return typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral(propName), typescript_1.default.factory.createObjectLiteralExpression([
setDefaultValue(prop.defaultValue),
setDescription(prop.description),
setName(prop.name),
@@ -158,10 +165,10 @@ function createPropDefinition(propName, prop, options) {
* @param relativeFilename Relative file path of the component source file.
*/
function insertDocgenIntoGlobalCollection(d, docgenCollectionName, relativeFilename) {
- return insertTsIgnoreBeforeStatement(typescript_1.default.createIf(typescript_1.default.createBinary(typescript_1.default.createTypeOf(typescript_1.default.createIdentifier(docgenCollectionName)), typescript_1.default.SyntaxKind.ExclamationEqualsEqualsToken, typescript_1.default.createLiteral("undefined")), insertTsIgnoreBeforeStatement(typescript_1.default.createStatement(typescript_1.default.createBinary(typescript_1.default.createElementAccess(typescript_1.default.createIdentifier(docgenCollectionName), typescript_1.default.createLiteral(`${relativeFilename}#${d.displayName}`)), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.createObjectLiteral([
- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("docgenInfo"), typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier(d.displayName), typescript_1.default.createIdentifier("__docgenInfo"))),
- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("name"), typescript_1.default.createLiteral(d.displayName)),
- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("path"), typescript_1.default.createLiteral(`${relativeFilename}#${d.displayName}`)),
+ return insertTsIgnoreBeforeStatement(typescript_1.default.factory.createIfStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createTypeOfExpression(typescript_1.default.factory.createIdentifier(docgenCollectionName)), typescript_1.default.SyntaxKind.ExclamationEqualsEqualsToken, typescript_1.default.factory.createStringLiteral("undefined")), insertTsIgnoreBeforeStatement(typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createElementAccessExpression(typescript_1.default.factory.createIdentifier(docgenCollectionName), typescript_1.default.factory.createStringLiteral(`${relativeFilename}#${d.displayName}`)), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createObjectLiteralExpression([
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("docgenInfo"), typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(d.displayName), typescript_1.default.factory.createIdentifier("__docgenInfo"))),
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("name"), typescript_1.default.factory.createStringLiteral(d.displayName)),
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("path"), typescript_1.default.factory.createStringLiteral(`${relativeFilename}#${d.displayName}`)),
]))))));
}
/**
@@ -180,15 +187,15 @@ function insertDocgenIntoGlobalCollection(d, docgenCollectionName, relativeFilen
* @param options Generator options.
*/
function setComponentDocGen(d, options) {
- return insertTsIgnoreBeforeStatement(typescript_1.default.createStatement(typescript_1.default.createBinary(
+ return insertTsIgnoreBeforeStatement(typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression(
// SimpleComponent.__docgenInfo
- typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier(d.displayName), typescript_1.default.createIdentifier("__docgenInfo")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.createObjectLiteral([
+ typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(d.displayName), typescript_1.default.factory.createIdentifier("__docgenInfo")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createObjectLiteralExpression([
// SimpleComponent.__docgenInfo.description
- typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("description"), typescript_1.default.createLiteral(d.description)),
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("description"), typescript_1.default.factory.createStringLiteral(d.description)),
// SimpleComponent.__docgenInfo.displayName
- typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("displayName"), typescript_1.default.createLiteral(d.displayName)),
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("displayName"), typescript_1.default.factory.createStringLiteral(d.displayName)),
// SimpleComponent.__docgenInfo.props
- typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("props"), typescript_1.default.createObjectLiteral(Object.entries(d.props).map(([propName, prop]) => createPropDefinition(propName, prop, options)))),
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("props"), typescript_1.default.factory.createObjectLiteralExpression(Object.entries(d.props).map(([propName, prop]) => createPropDefinition(propName, prop, options)))),
]))));
}
function generateDocgenCodeBlock(options) {
@@ -196,7 +203,7 @@ function generateDocgenCodeBlock(options) {
const relativeFilename = path_1.default
.relative("./", path_1.default.resolve("./", options.filename))
.replace(/\\/g, "/");
- const wrapInTryStatement = (statements) => typescript_1.default.createTry(typescript_1.default.createBlock(statements, true), typescript_1.default.createCatchClause(typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier("__react_docgen_typescript_loader_error")), typescript_1.default.createBlock([])), undefined);
+ const wrapInTryStatement = (statements) => typescript_1.default.factory.createTryStatement(typescript_1.default.factory.createBlock(statements, true), typescript_1.default.factory.createCatchClause(typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier("__react_docgen_typescript_loader_error")), typescript_1.default.factory.createBlock([])), undefined);
const codeBlocks = options.componentDocs.map((d) => wrapInTryStatement([
options.setDisplayName ? setDisplayName(d) : null,
setComponentDocGen(d, options),
@@ -208,7 +215,7 @@ function generateDocgenCodeBlock(options) {
const printer = typescript_1.default.createPrinter({ newLine: typescript_1.default.NewLineKind.LineFeed });
const printNode = (sourceNode) => printer.printNode(typescript_1.default.EmitHint.Unspecified, sourceNode, sourceFile);
// Concat original source code with code from generated code blocks.
- const result = codeBlocks.reduce((acc, node) => `${acc}\n${printNode(node)}`,
+ const result = codeBlocks.reduce((acc, node) => `${acc}\n${printNode(node)}`,
// Use original source text rather than using printNode on the parsed form
// to prevent issue where literals are stripped within components.
// Ref: https://github.com/strothj/react-docgen-typescript-loader/issues/7
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,8 @@
"node": "14.21.3",
"yarn": "1.22.19"
},
"packageManager": "[email protected]"
"packageManager": "[email protected]",
"resolutions": {
"@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": "patch:@storybook/react-docgen-typescript-plugin@npm%3A1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0#./.yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch"
}
}
23 changes: 17 additions & 6 deletions packages/fuselage-hooks/src/useBreakpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,29 @@ import { useMemo } from 'react';

import { useMediaQueries } from './useMediaQueries';

const mediaQueries = breakpointsDefinitions
.slice(1)
.map((breakpoint) => `(min-width: ${breakpoint.minViewportWidth}px)`);

/**
* Hook to catch which responsive design' breakpoints are active.
*
* @returns an array of the active breakpoint names
* @public
*/
export const useBreakpoints = (): string[] => {
const matches = useMediaQueries(...mediaQueries);
export const useBreakpoints = (unit: 'px' | 'em' = 'em'): string[] => {
const matches = useMediaQueries(
...useMemo(
() =>
breakpointsDefinitions
.slice(1)
.map(
(breakpoint) =>
`(min-width: ${
unit === 'px'
? `${breakpoint.minViewportWidth}px`
: `${breakpoint.minViewportWidth! / 16}em`
})`
),
[unit]
)
);

return useMemo(
() =>
Expand Down
14 changes: 0 additions & 14 deletions packages/fuselage-toastbar/.storybook/main.js

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
/** @type {import('@storybook/react/types').StorybookConfig} */
module.exports = {
import type { StorybookConfig } from '@storybook/react/types';

const config: StorybookConfig = {
core: {
builder: 'webpack5',
},
features: {
postcss: false,
},
typescript: {
reactDocgen: 'react-docgen-typescript-plugin',
},
addons: ['@storybook/addon-essentials', 'storybook-dark-mode'],
stories: ['../src/**/*.stories.tsx', '../src/**/stories.tsx'],
};

export default config;
17 changes: 0 additions & 17 deletions packages/fuselage-toastbar/.storybook/manager.ts

This file was deleted.

38 changes: 28 additions & 10 deletions packages/fuselage-toastbar/.storybook/preview.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
import { DarkModeProvider } from '@rocket.chat/layout';
import { DocsPage, DocsContainer } from '@storybook/addon-docs';
import type { DecoratorFunction } from '@storybook/addons';
import { addParameters } from '@storybook/react';
import '@rocket.chat/icons/dist/rocketchat.css';
import '@rocket.chat/fuselage-polyfills';
import type { ElementType, ReactElement } from 'react';
import React, { Suspense } from 'react';
import type { Parameters } from '@storybook/addons';
import type { DecoratorFn } from '@storybook/react';
import { themes } from '@storybook/theming';
import { Suspense } from 'react';
import { useDarkMode } from 'storybook-dark-mode';

import manifest from '../package.json';
import ToastBarProvider from '../src/ToastBarProvider';
import logo from './logo.svg';

import '@rocket.chat/fuselage/dist/fuselage.css';
import '@rocket.chat/icons/dist/rocketchat.css';
import '@rocket.chat/fuselage-polyfills';

addParameters({
export const parameters: Parameters = {
backgrounds: {
grid: {
cellSize: 4,
Expand All @@ -25,10 +29,24 @@ addParameters({
options: {
storySort: ([, a], [, b]) => a.kind.localeCompare(b.kind),
},
});
darkMode: {
dark: {
...themes.dark,
brandTitle: manifest.name,
brandImage: logo,
brandUrl: manifest.homepage,
},
light: {
...themes.normal,
brandTitle: manifest.name,
brandImage: logo,
brandUrl: manifest.homepage,
},
},
};

export const decorators: DecoratorFunction<ReactElement>[] = [
(Story: ElementType): ReactElement => {
export const decorators: DecoratorFn[] = [
(Story) => {
const dark = useDarkMode();

return (
Expand Down
1 change: 0 additions & 1 deletion packages/fuselage-toastbar/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@
"lint-staged": "~13.2.1",
"npm-run-all": "^4.1.5",
"prettier": "~2.8.7",
"react-docgen-typescript-plugin": "~1.0.5",
"rimraf": "~3.0.2",
"storybook-dark-mode": "~1.1.2",
"ts-jest": "~29.1.0",
Expand Down
Loading

0 comments on commit 982f617

Please sign in to comment.