2020-02-27 14:50:20 +11:00
|
|
|
import React, { useState } from 'react';
|
2019-12-05 12:39:26 -05:00
|
|
|
import { PropTypes } from 'prop-types';
|
|
|
|
import { Button } from '@storybook/react/demo';
|
2019-09-30 22:43:52 +02:00
|
|
|
import { addons } from '@storybook/addons';
|
2020-03-23 09:14:43 +01:00
|
|
|
import { useAddonState, useGlobalArgs } from '@storybook/api';
|
2019-09-30 22:43:52 +02:00
|
|
|
import { themes } from '@storybook/theming';
|
2019-12-05 12:39:26 -05:00
|
|
|
import { AddonPanel } from '@storybook/components';
|
2019-09-30 22:43:52 +02:00
|
|
|
|
2020-01-27 17:37:07 +01:00
|
|
|
import logo from './logo.svg';
|
|
|
|
|
2019-09-30 22:43:52 +02:00
|
|
|
addons.setConfig({
|
2020-01-27 17:37:07 +01:00
|
|
|
theme: {
|
|
|
|
brandImage: logo,
|
|
|
|
brandTitle: 'Custom - Storybook',
|
|
|
|
...themes.dark,
|
2020-03-03 12:05:33 +01:00
|
|
|
appContentBg: 'white',
|
2020-01-27 17:37:07 +01:00
|
|
|
},
|
2019-11-18 22:49:35 +01:00
|
|
|
panelPosition: 'bottom',
|
|
|
|
selectedPanel: 'storybook/roundtrip',
|
2019-09-30 22:43:52 +02:00
|
|
|
});
|
2019-12-05 12:39:26 -05:00
|
|
|
|
|
|
|
const StatePanel = ({ active, key }) => {
|
2019-12-06 13:57:12 -05:00
|
|
|
const [managerState, setManagerState] = useAddonState('manager', 10);
|
2019-12-06 13:59:37 -05:00
|
|
|
const [previewState, setPreviewState] = useAddonState('preview');
|
2019-12-05 12:39:26 -05:00
|
|
|
return (
|
|
|
|
<AddonPanel key={key} active={active}>
|
2019-12-06 13:57:12 -05:00
|
|
|
<div>
|
|
|
|
Manager counter: {managerState}
|
|
|
|
<br />
|
|
|
|
<Button onClick={() => setManagerState(managerState - 1)}>decrement</Button>
|
|
|
|
<Button onClick={() => setManagerState(managerState + 1)}>increment</Button>
|
|
|
|
</div>
|
2019-12-05 12:39:26 -05:00
|
|
|
<br />
|
2019-12-06 13:57:12 -05:00
|
|
|
<div>
|
|
|
|
Preview counter: {previewState}
|
|
|
|
<br />
|
2019-12-06 17:30:02 -05:00
|
|
|
<Button onClick={() => previewState && setPreviewState(previewState - 1)}>decrement</Button>
|
|
|
|
<Button onClick={() => previewState && setPreviewState(previewState + 1)}>increment</Button>
|
2019-12-06 13:57:12 -05:00
|
|
|
</div>
|
2019-12-05 12:39:26 -05:00
|
|
|
</AddonPanel>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
StatePanel.propTypes = {
|
|
|
|
active: PropTypes.bool.isRequired,
|
|
|
|
key: PropTypes.string.isRequired,
|
|
|
|
};
|
|
|
|
|
|
|
|
addons.addPanel('useAddonState', {
|
|
|
|
id: 'useAddonState',
|
|
|
|
title: 'useAddonState',
|
|
|
|
render: StatePanel,
|
|
|
|
});
|
2020-02-27 14:50:20 +11:00
|
|
|
|
|
|
|
const GlobalArgsPanel = ({ active, key }) => {
|
2020-03-04 19:38:57 +11:00
|
|
|
const [globalArgs, updateGlobalArgs] = useGlobalArgs();
|
2020-02-27 14:50:20 +11:00
|
|
|
const [globalArgsInput, updateGlobalArgsInput] = useState(JSON.stringify(globalArgs));
|
|
|
|
return (
|
|
|
|
<AddonPanel key={key} active={active}>
|
|
|
|
<div>
|
|
|
|
<h2>Global Args</h2>
|
|
|
|
|
|
|
|
<form
|
2020-03-27 20:04:50 +01:00
|
|
|
onSubmit={(e) => {
|
2020-02-27 14:50:20 +11:00
|
|
|
e.preventDefault();
|
2020-03-04 19:38:57 +11:00
|
|
|
updateGlobalArgs(JSON.parse(globalArgsInput));
|
2020-02-27 14:50:20 +11:00
|
|
|
}}
|
|
|
|
>
|
2020-03-27 20:04:50 +01:00
|
|
|
<textarea
|
|
|
|
value={globalArgsInput}
|
|
|
|
onChange={(e) => updateGlobalArgsInput(e.target.value)}
|
|
|
|
/>
|
2020-02-27 14:50:20 +11:00
|
|
|
<br />
|
|
|
|
<button type="submit">Change</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</AddonPanel>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
GlobalArgsPanel.propTypes = {
|
|
|
|
active: PropTypes.bool.isRequired,
|
|
|
|
key: PropTypes.string.isRequired,
|
|
|
|
};
|
|
|
|
|
|
|
|
addons.addPanel('useGlobalArgs', {
|
|
|
|
id: 'useGlobalArgs',
|
|
|
|
title: 'useGlobalArgs',
|
|
|
|
render: GlobalArgsPanel,
|
|
|
|
});
|