blob: c48df286de09554dd90e6c94f2b255ca56819e42 [file] [log] [blame]
import React, { useState, ReactNode } from 'react';
import { styled } from '@superset-ui/core';
import { DecoratorFunction } from '@storybook/addons';
import ResizablePanel, { Size } from './ResizablePanel';
export const SupersetBody = styled.div`
background: #f5f5f5;
padding: 16px;
min-height: 100%;
.panel {
margin-bottom: 0;
}
`;
export default function ResizableChartDemo({
children,
panelPadding = 30,
initialSize = { width: 500, height: 300 },
}: {
children: (innerSize: Size) => ReactNode;
panelPadding?: number;
initialSize?: Size;
}) {
// size are all inner size
const [size, setSize] = useState(initialSize);
return (
<SupersetBody>
<ResizablePanel initialSize={initialSize} onResize={(e, data) => setSize(data.size)}>
{children({ width: size.width - panelPadding, height: size.height - panelPadding })}
</ResizablePanel>
</SupersetBody>
);
}
export const withResizableChartDemo: DecoratorFunction<ReactNode> = (storyFn, context) => {
const {
parameters: { initialSize, panelPadding },
} = context;
return (
<ResizableChartDemo initialSize={initialSize as Size | undefined} panelPadding={panelPadding}>
{innerSize => storyFn({ ...context, ...innerSize })}
</ResizableChartDemo>
);
};