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

feat: add fast-components-msft as a new package #3096

Merged
merged 39 commits into from
May 15, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
fb01653
initial work to create fast-components-msft
chrisdholt May 9, 2020
342cfcb
add styles packages for patterns
chrisdholt May 9, 2020
c2ba6eb
add msft anchor
chrisdholt May 9, 2020
1908608
add msft button
chrisdholt May 9, 2020
df41703
add msft badge - outstanding issues
chrisdholt May 9, 2020
079b196
add msft card
chrisdholt May 9, 2020
3851052
add msft checkbox
chrisdholt May 9, 2020
d2c27a5
add msft dialog
chrisdholt May 9, 2020
d3834ee
add msft divider
chrisdholt May 9, 2020
0633549
add msft flipper
chrisdholt May 9, 2020
464e08a
add msft progress - do we want to narrow support to align with guidance?
chrisdholt May 9, 2020
ceab683
add msft radio
chrisdholt May 9, 2020
a3eeef4
add MSFT radio group
chrisdholt May 9, 2020
36b2a3c
add msft slider and slider-label
chrisdholt May 9, 2020
04566a4
add msft switch
chrisdholt May 9, 2020
21fb826
add msft tabs - need to ensure alignment of tab panel with tabs
chrisdholt May 9, 2020
fda8207
add msft text area
chrisdholt May 9, 2020
270e73e
add msft text field
chrisdholt May 9, 2020
6b081ce
export all components from root
chrisdholt May 9, 2020
8b67e67
fix eslint errors
chrisdholt May 9, 2020
2eaa239
update imports from fast-components
chrisdholt May 10, 2020
2db5e51
add .js extension to anything distributed
chrisdholt May 12, 2020
00b9a7d
update readme to include install instructions
chrisdholt May 12, 2020
0752b6c
update prefix to align with fast
chrisdholt May 13, 2020
6d53dbc
update package.json description
chrisdholt May 13, 2020
08d36b0
update tsconfig
chrisdholt May 13, 2020
9476101
add dependency for fast-components-styles-msft
chrisdholt May 13, 2020
b7cd0ef
update design system provider to use MSFT design system
chrisdholt May 13, 2020
ecd8992
remove js extensions for the time being
chrisdholt May 13, 2020
c741d59
update imports for fast-foundation
chrisdholt May 14, 2020
38f9088
update behavior imports to correct internal path
chrisdholt May 14, 2020
708d9cd
update pathing for forcedColors behavior
chrisdholt May 14, 2020
cd2fb13
fix order of imports
chrisdholt May 14, 2020
09a592f
update system-colors path
chrisdholt May 14, 2020
3741ebc
update imports for shared utils added to foundation
chrisdholt May 15, 2020
5281158
fix design system signature and update to new textarea api with defau…
chrisdholt May 15, 2020
53b16c0
remove unused behavior and fix color on text field
chrisdholt May 15, 2020
a2a0b45
update design system values and remove unused vars
chrisdholt May 15, 2020
053f14e
fix text field focus bug
chrisdholt May 15, 2020
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
8 changes: 8 additions & 0 deletions packages/web-components/fast-components-msft/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# don't ever lint node_modules
node_modules
# don't lint build output (make sure it's set to your correct build folder name)
dist
# don't lint coverage output
coverage
# don't lint storybook
.storybook
10 changes: 10 additions & 0 deletions packages/web-components/fast-components-msft/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
extends: ["@microsoft/eslint-config-fast-dna", "prettier"],
rules: {
"no-extra-boolean-cast": "off",
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/typedef": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-non-null-assertion": "off",
},
};
20 changes: 20 additions & 0 deletions packages/web-components/fast-components-msft/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Tests
__test__/
*.test.*

# specifications
*.spec.*

# images
images/

# Source files
src/

# config files
.eslintignore
.eslintrc.js
.prettierignore
.storybook
tsconfig.json
tsconfig.build.json
1 change: 1 addition & 0 deletions packages/web-components/fast-components-msft/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package-lock=false
2 changes: 2 additions & 0 deletions packages/web-components/fast-components-msft/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
coverage/*
dist/*
24 changes: 24 additions & 0 deletions packages/web-components/fast-components-msft/.storybook/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const CircularDependencyPlugin = require("circular-dependency-plugin");

module.exports = {
stories: ["../src/**/*.stories.ts"],
webpackFinal: async config => {
config.module.rules.push({
test: /\.(ts)$/,
use: [
{
loader: require.resolve("ts-loader"),
},
],
});
config.resolve.extensions.push(".ts");
config.plugins.push(
new CircularDependencyPlugin({
exclude: /node_modules/,
failOnError: process.env.NODE_ENV === "production",
})
);

return config;
},
};
14 changes: 14 additions & 0 deletions packages/web-components/fast-components-msft/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# FAST Components MSFT

A set of React components which implements the Microsoft styling.

## Installation

`npm i --save @microsoft/fast-components-msft`

### Known issue with Storybook site hot-reloading during development

Storybook will watch modules for changes and hot-reload the module when necessary. This is usually great but poses a problem when the module being hot-reloaded defines a custom element. A custom element name can only be defined by the `CustomElementsRegistry` once, so reloading a module that defines a custom element will attempt to re-register the custom element name, throwing an error because the name has already been defined. This error will manifest with the following message:
`Failed to execute 'define' on 'CustomElementRegistry': the name "my-custom-element-name" has already been used with this registry`

This is a known issue and will indicate that you need to refresh the page. We're working on surfacing a more instructive error message for this case.
48 changes: 48 additions & 0 deletions packages/web-components/fast-components-msft/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"name": "@microsoft/fast-components-msft",
"description": "A library of Web Components with Microsoft styles",
"sideEffects": false,
"version": "0.0.0",
"author": {
"name": "Microsoft",
"url": "https://discord.gg/FcSNfg4"
},
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/Microsoft/fast-dna.git"
},
"bugs": {
"url": "https://github.com/Microsoft/fast-dna/issues/new/choose"
},
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"scripts": {
"build": "tsc -p ./tsconfig.build.json",
"clean:dist": "node ../../../build/clean.js dist",
"prepare": "yarn clean:dist && yarn build",
"prettier": "prettier --config ../../../.prettierrc --write \"**/*.ts\"",
"prettier:diff": "prettier --config ../../../.prettierrc \"**/*.ts\" --list-different",
"eslint": "eslint . --ext .ts",
"eslint:fix": "eslint . --ext .ts --fix",
"start": "start-storybook -p 6006",
"test": "yarn build-storybook && yarn eslint",
"build-storybook": "build-storybook"
},
"devDependencies": {
"@babel/core": "^7.8.4",
"@microsoft/eslint-config-fast-dna": "^1.1.1",
"@storybook/cli": "^5.3.13",
"@storybook/html": "^5.3.13",
"circular-dependency-plugin": "^5.2.0",
"prettier": "2.0.2",
"ts-loader": "^6.2.1",
"typescript": "^3.7.5"
},
"dependencies": {
"@microsoft/fast-components": "^0.10.1",
"@microsoft/fast-components-styles-msft": "4.28.9",
"@microsoft/fast-element": "^0.8.1"
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { FASTDesignSystemProvider } from "../design-system-provider";
import AnchorTemplate from "./fixtures/anchor.html";
import { FASTAnchor } from "./";

// Prevent tree-shaking
FASTAnchor;
FASTDesignSystemProvider;

export default {
title: "Anchor",
};

export const Anchor = () => AnchorTemplate;
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { css } from "@microsoft/fast-element";
import {
AccentButtonStyles,
accentFillActiveBehavior,
accentFillHoverBehavior,
accentFillRestBehavior,
accentForegroundActiveBehavior,
accentForegroundCutRestBehavior,
accentForegroundHoverBehavior,
accentForegroundRestBehavior,
BaseButtonStyles,
HypertextStyles,
LightweightButtonStyles,
neutralFillActiveBehavior,
neutralFillFocusBehavior,
neutralFillHoverBehavior,
neutralFillRestBehavior,
neutralFillStealthActiveBehavior,
neutralFillStealthHoverBehavior,
neutralFillStealthRestBehavior,
neutralFocusBehavior,
neutralFocusInnerAccentBehavior,
neutralForegroundRestBehavior,
neutralOutlineActiveBehavior,
neutralOutlineHoverBehavior,
neutralOutlineRestBehavior,
OutlineButtonStyles,
StealthButtonStyles,
} from "../styles/";

export const AnchorStyles = css`
${BaseButtonStyles}
${AccentButtonStyles}
${HypertextStyles}
${LightweightButtonStyles}
${OutlineButtonStyles}
${StealthButtonStyles}
`.withBehaviors(
accentFillActiveBehavior,
accentFillHoverBehavior,
accentFillRestBehavior,
accentForegroundActiveBehavior,
accentForegroundCutRestBehavior,
accentForegroundHoverBehavior,
accentForegroundRestBehavior,
neutralFillActiveBehavior,
neutralFillFocusBehavior,
neutralFillHoverBehavior,
neutralFillRestBehavior,
neutralFillStealthActiveBehavior,
neutralFillStealthHoverBehavior,
neutralFillStealthRestBehavior,
neutralFocusBehavior,
neutralFocusInnerAccentBehavior,
neutralForegroundRestBehavior,
neutralOutlineActiveBehavior,
neutralOutlineHoverBehavior,
neutralOutlineRestBehavior
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<fast-design-system-provider use-defaults>
<h1>Anchor</h1>

<h4>Default</h4>
<fast-anchor href="#">Anchor</fast-anchor>

<h5>With target</h5>
<fast-anchor href="https://microsoft.com" target="_blank">Anchor</fast-anchor>

<h4>Neutral</h4>
<fast-anchor href="#" appearance="neutral">Button</fast-anchor>

<h4>Accent</h4>
<fast-anchor href="#" appearance="accent">Anchor</fast-anchor>

<h4>Hypertext</h4>
<fast-anchor href="#" appearance="hypertext">Anchor</fast-anchor>
<br/>
<fast-anchor appearance="hypertext">Anchor (no href)</fast-anchor>

<h4>Lightweight</h4>
<fast-anchor href="#" appearance="lightweight">Anchor</fast-anchor>

<h4>Outline</h4>
<fast-anchor href="#" appearance="outline">Anchor</fast-anchor>

<h4>Stealth</h4>
<fast-anchor href="#" appearance="stealth">Anchor</fast-anchor>

<h4>With start</h4>
<fast-anchor href="#">
Anchor
<svg
slot="start"
width="16"
height="16"
viewBox="0 0 16 16"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M6.5,7.7h-1v-1h1V7.7z M10.6,7.7h-1v-1h1V7.7z M14.7,6.7v2.1h-1v2.6c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.4-0.3,0.5c-0.1,0.1-0.3,0.3-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1H10l-3.5,3v-3H3.9c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6V8.8h-1V6.7h1V5.2c0-0.2,0-0.4,0.1-0.6c0.1-0.2,0.2-0.4,0.3-0.5c0.1-0.1,0.3-0.3,0.5-0.3c0.2-0.1,0.4-0.1,0.6-0.1h3.6V1.9C7.3,1.8,7.2,1.7,7.1,1.5C7,1.4,7,1.2,7,1C7,0.9,7,0.8,7,0.6c0.1-0.1,0.1-0.2,0.2-0.3c0.1-0.1,0.2-0.2,0.3-0.2C7.7,0,7.9,0,8,0c0.1,0,0.3,0,0.4,0.1c0.1,0.1,0.2,0.1,0.3,0.2C8.8,0.4,8.9,0.5,9,0.6C9,0.8,9,0.9,9,1c0,0.2,0,0.4-0.1,0.5C8.8,1.7,8.7,1.8,8.5,1.9v1.7h3.6c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.4,0.2,0.5,0.3c0.1,0.1,0.3,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.6v1.5H14.7z M12.6,5.2c0-0.1-0.1-0.3-0.2-0.4c-0.1-0.1-0.2-0.2-0.4-0.2H3.9c-0.1,0-0.3,0.1-0.4,0.2C3.4,4.9,3.4,5,3.4,5.2v6.2c0,0.1,0.1,0.3,0.2,0.4c0.1,0.1,0.2,0.2,0.4,0.2h3.6v1.8l2.1-1.8h2.5c0.1,0,0.3-0.1,0.4-0.2c0.1-0.1,0.2-0.2,0.2-0.4V5.2z M5.8,8.9c0.3,0.3,0.6,0.5,1,0.7C7.2,9.7,7.6,9.8,8,9.8s0.8-0.1,1.2-0.2c0.4-0.2,0.7-0.4,1-0.7l0.7,0.7c-0.4,0.4-0.8,0.7-1.4,0.9c-0.5,0.2-1,0.3-1.6,0.3s-1.1-0.1-1.6-0.3c-0.5-0.2-1-0.5-1.3-0.9L5.8,8.9z" />
</svg>
</fast-anchor>

<h4>With end</h4>
<fast-anchor href="#">
Anchor
<svg
slot="end"
width="16"
height="16"
viewBox="0 0 16 16"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M6.5,7.7h-1v-1h1V7.7z M10.6,7.7h-1v-1h1V7.7z M14.7,6.7v2.1h-1v2.6c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.4-0.3,0.5c-0.1,0.1-0.3,0.3-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1H10l-3.5,3v-3H3.9c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6V8.8h-1V6.7h1V5.2c0-0.2,0-0.4,0.1-0.6c0.1-0.2,0.2-0.4,0.3-0.5c0.1-0.1,0.3-0.3,0.5-0.3c0.2-0.1,0.4-0.1,0.6-0.1h3.6V1.9C7.3,1.8,7.2,1.7,7.1,1.5C7,1.4,7,1.2,7,1C7,0.9,7,0.8,7,0.6c0.1-0.1,0.1-0.2,0.2-0.3c0.1-0.1,0.2-0.2,0.3-0.2C7.7,0,7.9,0,8,0c0.1,0,0.3,0,0.4,0.1c0.1,0.1,0.2,0.1,0.3,0.2C8.8,0.4,8.9,0.5,9,0.6C9,0.8,9,0.9,9,1c0,0.2,0,0.4-0.1,0.5C8.8,1.7,8.7,1.8,8.5,1.9v1.7h3.6c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.4,0.2,0.5,0.3c0.1,0.1,0.3,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.6v1.5H14.7z M12.6,5.2c0-0.1-0.1-0.3-0.2-0.4c-0.1-0.1-0.2-0.2-0.4-0.2H3.9c-0.1,0-0.3,0.1-0.4,0.2C3.4,4.9,3.4,5,3.4,5.2v6.2c0,0.1,0.1,0.3,0.2,0.4c0.1,0.1,0.2,0.2,0.4,0.2h3.6v1.8l2.1-1.8h2.5c0.1,0,0.3-0.1,0.4-0.2c0.1-0.1,0.2-0.2,0.2-0.4V5.2z M5.8,8.9c0.3,0.3,0.6,0.5,1,0.7C7.2,9.7,7.6,9.8,8,9.8s0.8-0.1,1.2-0.2c0.4-0.2,0.7-0.4,1-0.7l0.7,0.7c-0.4,0.4-0.8,0.7-1.4,0.9c-0.5,0.2-1,0.3-1.6,0.3s-1.1-0.1-1.6-0.3c-0.5-0.2-1-0.5-1.3-0.9L5.8,8.9z" />
</svg>
</fast-anchor>

<h4>Icon in default slot</h4>
<fast-anchor href="#">
<svg
width="16"
height="16"
viewBox="0 0 16 16"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M6.5,7.7h-1v-1h1V7.7z M10.6,7.7h-1v-1h1V7.7z M14.7,6.7v2.1h-1v2.6c0,0.2,0,0.4-0.1,0.6c-0.1,0.2-0.2,0.4-0.3,0.5c-0.1,0.1-0.3,0.3-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1H10l-3.5,3v-3H3.9c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.2-0.5-0.3c-0.1-0.1-0.3-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6V8.8h-1V6.7h1V5.2c0-0.2,0-0.4,0.1-0.6c0.1-0.2,0.2-0.4,0.3-0.5c0.1-0.1,0.3-0.3,0.5-0.3c0.2-0.1,0.4-0.1,0.6-0.1h3.6V1.9C7.3,1.8,7.2,1.7,7.1,1.5C7,1.4,7,1.2,7,1C7,0.9,7,0.8,7,0.6c0.1-0.1,0.1-0.2,0.2-0.3c0.1-0.1,0.2-0.2,0.3-0.2C7.7,0,7.9,0,8,0c0.1,0,0.3,0,0.4,0.1c0.1,0.1,0.2,0.1,0.3,0.2C8.8,0.4,8.9,0.5,9,0.6C9,0.8,9,0.9,9,1c0,0.2,0,0.4-0.1,0.5C8.8,1.7,8.7,1.8,8.5,1.9v1.7h3.6c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.4,0.2,0.5,0.3c0.1,0.1,0.3,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.6v1.5H14.7z M12.6,5.2c0-0.1-0.1-0.3-0.2-0.4c-0.1-0.1-0.2-0.2-0.4-0.2H3.9c-0.1,0-0.3,0.1-0.4,0.2C3.4,4.9,3.4,5,3.4,5.2v6.2c0,0.1,0.1,0.3,0.2,0.4c0.1,0.1,0.2,0.2,0.4,0.2h3.6v1.8l2.1-1.8h2.5c0.1,0,0.3-0.1,0.4-0.2c0.1-0.1,0.2-0.2,0.2-0.4V5.2z M5.8,8.9c0.3,0.3,0.6,0.5,1,0.7C7.2,9.7,7.6,9.8,8,9.8s0.8-0.1,1.2-0.2c0.4-0.2,0.7-0.4,1-0.7l0.7,0.7c-0.4,0.4-0.8,0.7-1.4,0.9c-0.5,0.2-1,0.3-1.6,0.3s-1.1-0.1-1.6-0.3c-0.5-0.2-1-0.5-1.3-0.9L5.8,8.9z" />
</svg>
</fast-anchor>
</fast-design-system-provider>
14 changes: 14 additions & 0 deletions packages/web-components/fast-components-msft/src/anchor/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { customElement } from "@microsoft/fast-element";
import { Anchor, AnchorTemplate as template } from "@microsoft/fast-foundation";
import { AnchorStyles as styles } from "./anchor.styles";
Copy link
Contributor

Choose a reason for hiding this comment

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

In order to prep for the new build setup, let's start this new package with file extension in imports. So, change to this:

import { AnchorStyles as styles } from "./anchor.styles.js";

Copy link
Member Author

Choose a reason for hiding this comment

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

yeah, I wanted to do that work in a separate branch as part of the feature branch work. I can do in this package, but we'll need both packages to be touched prior to the feature branch merging in


// Anchor
@customElement({
name: "fast-anchor",
template,
styles,
shadowOptions: {
delegatesFocus: true,
},
})
export class FASTAnchor extends Anchor {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { FASTDesignSystemProvider } from "../design-system-provider";
import BadgeTemplate from "./fixtures/badge.html";
import { FASTBadge } from "./";

// Prevent tree-shaking
FASTBadge;
FASTDesignSystemProvider;

export default {
title: "Badge",
};

export const Badge = () => BadgeTemplate;
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { css } from "@microsoft/fast-element";
import { display } from "@microsoft/fast-foundation";
import {
accentFillRestBehavior,
accentForegroundCutRestBehavior,
accentForegroundRestBehavior,
neutralFillInputRestBehavior,
neutralFillToggleRestBehavior,
neutralForegroundRestBehavior,
} from "../styles";

export const BadgeStyles = css`
${display("inline-block")} :host {
box-sizing: border-box;
font-family: var(--body-font);
${/* Font size, weight, and line height are temporary -
replace when adaptive typography is figured out */ ""} font-size: 12px;
font-weight: 400;
line-height: 18px;
}

.badge {
border-radius: calc(var(--corner-radius) * 1px);
padding: calc(var(--design-unit) * 0.5px) calc(var(--design-unit) * 1px);
}

:host(.lightweight) {
--badge-fill-lightweight: transparent;
--badge-color-value: var(--neutral-foreground-rest);
font-weight: 600;
}

:host(.accent) {
--badge-fill-accent: var(--accent-fill-rest);
--badge-color-value: var(--accent-foreground-cut-rest);
}

:host(.neutral) {
--badge-fill-neutral: var(--neutral-fill-toggle-rest);
--badge-color-value: var(--neutral-fill-input-rest);
}
`.withBehaviors(
accentFillRestBehavior,
accentForegroundCutRestBehavior,
accentForegroundRestBehavior,
neutralForegroundRestBehavior,
neutralFillInputRestBehavior,
neutralFillToggleRestBehavior
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<fast-design-system-provider use-defaults>
<h1>Badge</h1>
<h4>Default</h4>
<fast-badge>
Badge
</fast-badge>
<h4>Lightweight</h4>
<fast-badge fill="lightweight">
Badge
</fast-badge>
<h4>Accent</h4>
<fast-badge fill="accent">
Badge
</fast-badge>
<h4>Neutral</h4>
<fast-badge fill="neutral">
Badge
</fast-badge>
</fast-design-system-provider>
Loading