mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
List: updates story from knobs to controls (#32832)
This commit is contained in:
parent
48853be682
commit
a6fcd37a20
@ -1,5 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { number, select } from '@storybook/addon-knobs';
|
import { Story, Meta } from '@storybook/react';
|
||||||
import { List } from './List';
|
import { List } from './List';
|
||||||
import { css, cx } from '@emotion/css';
|
import { css, cx } from '@emotion/css';
|
||||||
import tinycolor from 'tinycolor2';
|
import tinycolor from 'tinycolor2';
|
||||||
@ -8,7 +8,27 @@ import { InlineList } from './InlineList';
|
|||||||
export default {
|
export default {
|
||||||
title: 'Layout/List',
|
title: 'Layout/List',
|
||||||
component: List,
|
component: List,
|
||||||
};
|
parameters: {
|
||||||
|
knobs: {
|
||||||
|
disable: true,
|
||||||
|
},
|
||||||
|
controls: {
|
||||||
|
exclude: ['renderItem', 'getItemKey', 'className', 'items'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
args: {
|
||||||
|
itemRenderer: 'raw',
|
||||||
|
numberOfItems: 3,
|
||||||
|
},
|
||||||
|
argTypes: {
|
||||||
|
itemRenderer: {
|
||||||
|
control: {
|
||||||
|
type: 'select',
|
||||||
|
options: ['raw', 'custom'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} as Meta;
|
||||||
|
|
||||||
const generateListItems = (numberOfItems: number) => {
|
const generateListItems = (numberOfItems: number) => {
|
||||||
return [...new Array(numberOfItems)].map((item, i) => {
|
return [...new Array(numberOfItems)].map((item, i) => {
|
||||||
@ -19,8 +39,7 @@ const generateListItems = (numberOfItems: number) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const getStoriesKnobs = (inline = false) => {
|
const getItem = (inline = false) => {
|
||||||
const numberOfItems = number('Number of items', 3);
|
|
||||||
const rawRenderer = (item: any) => <>{item.name}</>;
|
const rawRenderer = (item: any) => <>{item.name}</>;
|
||||||
const customRenderer = (item: any, index: number) => (
|
const customRenderer = (item: any, index: number) => (
|
||||||
<div
|
<div
|
||||||
@ -44,27 +63,28 @@ const getStoriesKnobs = (inline = false) => {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
const itemRenderer = select(
|
|
||||||
'Item rendered',
|
|
||||||
{
|
|
||||||
'Raw renderer': 'raw',
|
|
||||||
'Custom renderer': 'custom',
|
|
||||||
},
|
|
||||||
'raw'
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
numberOfItems,
|
rawRenderer,
|
||||||
renderItem: itemRenderer === 'raw' ? rawRenderer : customRenderer,
|
customRenderer,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const basic = () => {
|
export const basic: Story = (args) => {
|
||||||
const { numberOfItems, renderItem } = getStoriesKnobs();
|
const { rawRenderer, customRenderer } = getItem();
|
||||||
return <List items={generateListItems(numberOfItems)} renderItem={renderItem} />;
|
return (
|
||||||
|
<List
|
||||||
|
items={generateListItems(args.numberOfItems)}
|
||||||
|
renderItem={args.itemRenderer === 'raw' ? rawRenderer : customRenderer}
|
||||||
|
/>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const inline = () => {
|
export const inline: Story = (args) => {
|
||||||
const { numberOfItems, renderItem } = getStoriesKnobs(true);
|
const { rawRenderer, customRenderer } = getItem(true);
|
||||||
return <InlineList items={generateListItems(numberOfItems)} renderItem={renderItem} />;
|
return (
|
||||||
|
<InlineList
|
||||||
|
items={generateListItems(args.numberOfItems)}
|
||||||
|
renderItem={args.itemRenderer === 'raw' ? rawRenderer : customRenderer}
|
||||||
|
/>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user