Skip to content

Commit e52feef

Browse files
Updates Code example [LG-2954, LG-2950, LG-2951] (#1700)
* Update Portal.story.tsx * moves menu item children in story * ignore stories.js* * Update StoryMeta.ts * moves menu children back * import StoryMeta in typography story * Update Toast.story.tsx * Updates default `as` prop in SB * updates Button tsdoc * add comments * Update Toast.story.tsx * rm children, as from default StoryMeta * fix story meta tests * Create lovely-drinks-fix.md * use correct constant in seg-ctrl story * matk storybookArgTypes as const * changesets * Rename type to StoryMetaType * Update small-baboons-smile.md * fixes prop types in banner & box * rm children from excluded params * explicitly exclude children from args. Convert to using StoryMeta * Create lovely-zebras-shout.md * ts fix * exclude props from table story * adds display name to Stepper * Create early-suns-protect.md
1 parent f085403 commit e52feef

File tree

18 files changed

+105
-96
lines changed

18 files changed

+105
-96
lines changed

.changeset/early-suns-protect.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@leafygreen-ui/stepper': patch
3+
---
4+
5+
Adds explicit `displayName` for Stepper

.changeset/lovely-drinks-fix.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
'@leafygreen-ui/button': patch
3+
'@leafygreen-ui/lib': patch
4+
'@leafygreen-ui/menu': patch
5+
'@leafygreen-ui/portal': patch
6+
'@leafygreen-ui/toast': patch
7+
'@leafygreen-ui/typography': patch
8+
---
9+
10+
Updates TSDocs

.eslintignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ lib
44
packages/icon/src/glyphs/*.svg
55
packages/icon/src/generated/*.tsx
66
storybook-static
7-
packages/**/stories.js
7+
packages/**/stories.js*

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ parsed-docs.json
3939
packages/**/tsdoc.json
4040

4141
# Compiled story files
42-
packages/**/stories.js
42+
packages/**/stories.js*
4343

4444
# Local yarn releases
45-
.yarn
45+
.yarn

.prettierignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ storybook-static
88
**/package.json
99
**/tsconfig.json
1010
**/tsdoc.json
11-
packages/**/stories.js
11+
packages/**/stories.js*

packages/button/src/Button.story.tsx

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,23 @@
1-
import React, { ElementType } from 'react';
2-
import { Meta, Story } from '@storybook/react';
1+
import React from 'react';
2+
import { Story } from '@storybook/react';
33

4-
import { BoxProps } from '@leafygreen-ui/box';
54
import Icon, { glyphs } from '@leafygreen-ui/icon';
65
import LeafygreenProvider from '@leafygreen-ui/leafygreen-provider';
7-
import { storybookArgTypes } from '@leafygreen-ui/lib';
6+
import { StoryMeta } from '@leafygreen-ui/lib';
87

98
import { Size } from './types';
109
import Button, { ButtonProps, Variant } from '.';
1110

12-
type ButtonStoryProps = BoxProps<ElementType<HTMLButtonElement>, ButtonProps>;
13-
14-
// TODO: Ensure that TSDocs are being read from the Button component directly, not this StoryButton component
15-
/**
16-
* Buttons allow users to take actions, and make choices, with a single tap.
17-
*/
18-
export const StoryButton: React.FC<ButtonStoryProps> = props => (
19-
<Button {...props} />
20-
);
21-
22-
export default {
11+
export default StoryMeta({
2312
title: 'Components/Button',
24-
component: StoryButton,
13+
component: Button,
2514
excludeStories: ['StoryButton'],
2615
args: {
2716
children: 'MongoDB',
2817
variant: Variant.Default,
2918
},
3019
parameters: {
20+
default: 'Default',
3121
controls: {
3222
exclude: ['ref', 'onClick', 'className'],
3323
},
@@ -57,15 +47,14 @@ export default {
5747
href: {
5848
control: 'text',
5949
},
60-
...storybookArgTypes,
6150
},
62-
} as Meta<ButtonStoryProps>;
51+
});
6352

64-
const Template: Story<ButtonStoryProps> = ({
53+
const Template: Story<ButtonProps> = ({
6554
leftGlyph,
6655
rightGlyph,
6756
...args
68-
}: ButtonStoryProps) => (
57+
}: ButtonProps) => (
6958
<Button
7059
// @ts-expect-error
7160
leftGlyph={leftGlyph ? <Icon glyph={leftGlyph} /> : undefined}
@@ -105,7 +94,7 @@ BaseGreen.args = {
10594
variant: Variant.BaseGreen,
10695
};
10796

108-
export const WithGlobalDarkMode: Story<ButtonStoryProps> = args => (
97+
export const WithGlobalDarkMode: Story<ButtonProps> = args => (
10998
<LeafygreenProvider darkMode={true}>
11099
<Button {...args}>Test</Button>
111100
</LeafygreenProvider>

packages/button/src/types.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export interface ButtonProps {
5656
/**
5757
* Specifies the `type` property of the HTML button element
5858
*
59-
* @default 'button'
59+
* @default button
6060
*/
6161
type?: HTMLProps<HTMLButtonElement>['type'];
6262

@@ -68,7 +68,7 @@ export interface ButtonProps {
6868
/**
6969
* Sets the variant for the Button
7070
*
71-
* @default 'default'
71+
* @default default
7272
*/
7373
variant?: Variant;
7474

@@ -89,7 +89,7 @@ export interface ButtonProps {
8989
/**
9090
* Sets the size for the Button
9191
*
92-
* @default 'default'
92+
* @default default
9393
*/
9494
size?: Size;
9595

@@ -127,6 +127,7 @@ export interface ButtonProps {
127127
* <Button as={Linker} />
128128
* ```
129129
* @type HTMLElement | React.Component
130+
* @default button
130131
*/
131132
as?: React.ElementType<any>;
132133
}

packages/lib/src/storybook/IntrinsicElements.ts

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const IntrinsicElements: Array<keyof JSX.IntrinsicElements> = [
2-
'symbol',
3-
// 'object',
2+
// 'symbol', - SVG only element
3+
// 'object', - irrelevant for `as` prop
44
'small',
55
'button',
66
'a',
@@ -9,31 +9,31 @@ const IntrinsicElements: Array<keyof JSX.IntrinsicElements> = [
99
// 'area', - Void element - cannot accept Children
1010
'article',
1111
'aside',
12-
'audio',
12+
// 'audio', irrelevant for `as` prop
1313
'b',
1414
// 'base', - Void element - cannot accept Children
15-
'bdi',
16-
'bdo',
15+
// 'bdi', irrelevant for `as` prop
16+
// 'bdo', irrelevant for `as` prop
1717
'big',
1818
'blockquote',
19-
'body',
19+
// 'body', irrelevant for `as` prop
2020
// 'br', - Void element - cannot accept Children
21-
'canvas',
21+
// 'canvas', irrelevant for `as` prop
2222
'caption',
2323
'cite',
2424
'code',
2525
// 'col', - Void element - cannot accept Children
26-
'colgroup',
27-
'data',
28-
'datalist',
26+
// 'colgroup', irrelevant for `as` prop
27+
// 'data', irrelevant for `as` prop
28+
// 'datalist', irrelevant for `as` prop
2929
'dd',
3030
'del',
3131
'details',
3232
'dfn',
3333
'dialog',
3434
'div',
35-
'dl',
36-
'dt',
35+
// 'dl', irrelevant for `as` prop
36+
// 'dt', irrelevant for `as` prop
3737
'em',
3838
// 'embed', - Void element - cannot accept Children
3939
'fieldset',
@@ -51,9 +51,9 @@ const IntrinsicElements: Array<keyof JSX.IntrinsicElements> = [
5151
'header',
5252
'hgroup',
5353
// 'hr', - Void element - cannot accept Children
54-
'html',
54+
// 'html', irrelevant for `as` prop
5555
'i',
56-
'iframe',
56+
// 'iframe', irrelevant for `as` prop
5757
// 'img', - Void element - cannot accept Children
5858
// 'input', - Void element - cannot accept Children
5959
'ins',
@@ -71,14 +71,14 @@ const IntrinsicElements: Array<keyof JSX.IntrinsicElements> = [
7171
// 'meta', - Void element - cannot accept Children
7272
'meter',
7373
'nav',
74-
'noindex',
74+
// 'noindex', irrelevant for `as` prop
7575
'noscript',
7676
'ol',
77-
'optgroup',
78-
'option',
79-
'output',
77+
// 'optgroup', irrelevant for `as` prop
78+
// 'option', irrelevant for `as` prop
79+
// 'output', irrelevant for `as` prop
8080
'p',
81-
'param',
81+
// 'param', irrelevant for `as` prop
8282
'picture',
8383
'pre',
8484
'progress',
@@ -99,11 +99,11 @@ const IntrinsicElements: Array<keyof JSX.IntrinsicElements> = [
9999
'sub',
100100
'summary',
101101
'sup',
102-
'table',
102+
// 'table', irrelevant for `as` prop
103103
'template',
104104
'tbody',
105105
'td',
106-
'textarea',
106+
// 'textarea', irrelevant for `as` prop
107107
'tfoot',
108108
'th',
109109
'thead',
@@ -113,11 +113,11 @@ const IntrinsicElements: Array<keyof JSX.IntrinsicElements> = [
113113
// 'track', - Void element - cannot accept Children
114114
'u',
115115
'ul',
116-
'var',
117-
'video',
116+
// 'var', irrelevant for `as` prop
117+
// 'video', irrelevant for `as` prop
118118
// 'wbr', - Void element - cannot accept Children
119-
'webview',
120-
'svg',
119+
// 'webview', irrelevant for `as` prop
120+
// 'svg', - SVG only element
121121
];
122122

123123
export default IntrinsicElements;

packages/lib/src/storybook/StoryMeta.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,16 @@ export const baseMeta: Partial<StoryMetaType<any>> = {
5050
},
5151
};
5252

53-
export const StoryMeta = <T extends React.ElementType>(
54-
meta: StoryMetaType<T> = baseMeta as StoryMetaType<T>,
55-
): StoryMetaType<T> => {
53+
export const StoryMeta = <
54+
T extends React.ElementType,
55+
XP extends Record<string, any>,
56+
>(
57+
meta: StoryMetaType<T, XP> = baseMeta as StoryMetaType<T, XP>,
58+
): StoryMetaType<T, XP> => {
5659
return mergeWith(meta, baseMeta, (metaVal, baseVal) => {
5760
if (Array.isArray(metaVal)) return metaVal.concat(baseVal);
5861
if (typeof metaVal === 'string') return metaVal;
5962
// default to _.merge behavior
63+
return;
6064
});
6165
};

packages/lib/src/storybook/storybookArgTypes.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ export const storybookArgTypes = {
2424
description: 'Render the component in dark mode.',
2525
control: 'boolean',
2626
},
27-
ref: {
28-
description: '`ref` passed to the component',
29-
control: 'none',
30-
},
31-
onClick: {
32-
description: 'Function to handle a click event.',
33-
control: 'none',
34-
},
3527
children: {
3628
description: 'Element rendered inside the component',
3729
control: 'text',
@@ -42,5 +34,6 @@ export const storybookArgTypes = {
4234
options: IntrinsicElements,
4335
type: { name: 'string' },
4436
control: { type: 'select' },
37+
defaultValue: 'button',
4538
},
4639
} as const;

0 commit comments

Comments
 (0)