DocSpace-client/packages/components/row/row.stories.js

112 lines
2.7 KiB
JavaScript
Raw Normal View History

import React from "react";
import Row from ".";
import Text from "../text";
import Avatar from "../avatar";
import ComboBox from "../combobox";
import CatalogFolderReactSvg from "PUBLIC_DIR/images/catalog.folder.react.svg";
import CheckReactSvgUrl from "PUBLIC_DIR/images/check.react.svg?url";
import ItemActiveReactSvgUrl from "PUBLIC_DIR/images/item.active.react.svg?url";
2021-03-10 10:02:57 +00:00
export default {
title: "Components/Row",
component: Row,
parameters: {
docs: { description: { component: "Displays content as row" } },
},
argTypes: {
element: {
control: {
type: "select",
options: ["", "Avatar", "Icon", "ComboBox"],
},
},
content: { control: "text" },
onSelectComboBox: { action: "onSelectComboBox", table: { disable: true } },
contextItemClick: { action: "contextItemClick", table: { disable: true } },
checkbox: { description: "Disable checkbox" },
},
};
2021-03-10 10:02:57 +00:00
const elementAvatar = <Avatar size="min" role="user" userName="Demo Avatar" />;
const elementIcon = <CatalogFolderReactSvg size="big" />;
2021-03-10 10:02:57 +00:00
const renderElementComboBox = (onSelect) => (
<ComboBox
options={[
{
key: 1,
icon: ItemActiveReactSvgUrl,
2021-03-10 10:02:57 +00:00
label: "Open",
},
{ key: 2, icon: CheckReactSvgUrl, label: "Closed" },
2021-03-10 10:02:57 +00:00
]}
onSelect={(option) => onSelect(option)}
selectedOption={{
key: 0,
icon: ItemActiveReactSvgUrl,
2021-03-10 10:02:57 +00:00
label: "",
}}
scaled={false}
size="content"
isDisabled={false}
/>
);
2021-03-10 10:02:57 +00:00
const Template = ({
element,
contextButton,
content,
onSelectComboBox,
contextItemClick,
checkbox,
checked,
...args
}) => {
const getElementProps = (element) =>
element === "Avatar"
? { element: elementAvatar }
: element === "Icon"
? { element: elementIcon }
: element === "ComboBox"
? { element: renderElementComboBox(onSelectComboBox) }
: {};
const elementProps = getElementProps(element);
const checkedProps = checkbox ? { checked: checked } : {};
return (
<Row
{...args}
key="1"
{...checkedProps}
{...elementProps}
contextOptions={
contextButton
? [
{
key: "key1",
label: "Edit",
onClick: () => contextItemClick("Context action: Edit"),
},
{
key: "key2",
label: "Delete",
onClick: () => contextItemClick("Context action: Delete"),
},
]
: []
}
>
<Text truncate={true}>{content}</Text>
</Row>
);
};
export const Default = Template.bind({});
Default.args = {
contextButton: true,
checked: true,
element: "",
content: "Sample text",
checkbox: true,
};