import React, { MouseEvent } from "react"; import { storiesOf } from "@storybook/react"; import { action } from "@storybook/addon-actions"; import { withInfo } from "@storybook/addon-info"; import { withKnobs, number, boolean, select, text, array } from "@storybook/addon-knobs"; import { addReadme } from "storybook-readme"; import { Divider, Button } from "antd"; import ConsumeListView from "@/components/Payment/ConsumeListView"; import ConsumeListViewDoc from "@components/Payment/ConsumeListView/README.md"; import PayPlatFormOptions, { PAY_CHANNEL } from "@/components/Payment/PayPlatformOptions"; import PayPlatFormOptionsDoc from "@components/Payment/PayPlatformOptions/README.md"; import PriceOptions from "@/components/Payment/PriceOptions"; import PriceOptionsDoc from "@components/Payment/PriceOptions/README.md"; import WaitPayInfoView from "@/components/Payment/WaitPayInfoView"; import WaitPayInfoViewDoc from "@components/Payment/WaitPayInfoView/README.md"; import AllocWantedModal from "@/components/Payment/AllocWantedModal"; import WantedPublishView from "@/components/Payment/WantedPublishView"; import WantedPublishPopover from "@/components/Payment/WantedPublishPopover"; import WantedPublishModal from "@/components/Payment/WantedPublishModal"; import { formatMoney } from "@components/Payment/Utils/utils"; import { consumeList } from "./data/consumeList.json"; const consumeData: any = consumeList; const stories = storiesOf("Payment", module); stories.addDecorator(storyFn => (
{storyFn()}
)); stories.addDecorator(withKnobs); stories.addDecorator(withInfo); stories.addDecorator(addReadme); stories.add( "ConsumeListView", () => { const [toggle, setToggle] = React.useState(false); return ( setToggle(!toggle)} onConsumeItemClick={(e: MouseEvent, clickData: any) => { console.log(clickData); }} dataSource={consumeData} listLength={consumeData.length} showLength={number("showLength", 5)} /> ); }, { info: { inline: true, text: ` ~~~typescript setToggle(!toggle)} dataSource={consumeData} listLength={consumeData.length} showLength={number("showLength", 5)} /> ~~~ `, source: false, maxPropStringLength: 500 }, notes: "A very simple example of addon notes", readme: { sidebar: ConsumeListViewDoc } } ); stories.add( "PayPlatFormOptions", () => { const [payChannel, setPayChannel] = React.useState(PAY_CHANNEL.PAYPAL); return ( { action(`PayItemChange: ${value}`); setPayChannel(value); }} isMobile={boolean("isMobile", false)} size={select( "size", { Small: "small", Normal: "normal", Large: "large" }, "normal" )} withTitle={boolean("withTitle", false)} locale={select("locale", { ZH: "zh", EN: "en" }, "zh")} /> ); }, { info: { inline: true, text: ``, source: false, maxPropStringLength: 500 }, notes: "A very simple example of addon notes", readme: { sidebar: PayPlatFormOptionsDoc } } ); stories.add( "PriceOptions", () => { const [price, setPrice] = React.useState(0); const refInput = React.useRef(null); return (
setPrice(v)} size={select( "size", { Small: "small", Normal: "normal", Large: "large" }, "normal" )} withTitle={boolean("withTitle", false)} titleText={text("titleText", "")} inputPlaceholderText={text("inputPlaceholderText", "其他金额")} focusScroll={boolean("focusScroll", false)} priceOptions={array("priceOptions", ["100", "600", "800"])} priceRender={(i: number) => `${formatMoney(i / 100, 0)}¥`} inputRef={refInput} />
price: {price}
); }, { info: { inline: true, text: ``, source: false, maxPropStringLength: 500 }, notes: "A very simple example of addon notes", readme: { sidebar: PriceOptionsDoc } } ); stories.add( "WaitPayInfoView", () => { return ; }, { info: { inline: true, text: ``, source: false, maxPropStringLength: 500 }, notes: "A very simple example of addon notes", readme: { sidebar: WaitPayInfoViewDoc } } ); stories.add( "AllocWantedModal", () => { return ( { console.log(args); }} sendGiftData={{ answerId: text("answerId", "1"), questionId: text("questionId", "1"), toUserId: text("toUserId", "1") }} handleVisibleChange={visiable => { console.log(visiable); }} > ); }, { info: { inline: true }, notes: "A very simple example of addon notes" } ); stories.add( "WantedPushView", () => { const [currentWanted, setCurrentWanted] = React.useState(0); return ( <> setCurrentWanted(value)} InputWantedOnBlur={(blurValue: any) => setCurrentWanted(blurValue)} InputWantedClear={() => setCurrentWanted(0)} InputWantedPressEnter={(enterValue: any) => setCurrentWanted(enterValue) } CloseFunction={() => { console.log("Close Button"); }} />
currentWanted: {currentWanted}
); }, { info: { inline: true }, notes: "A very simple example of addon notes" } ); stories.add( "WantedPublishPopover And Modal", () => { const [wanted, setWanted] = React.useState(""); return (
ModalClick
{ setWanted(value); }} >
{/* 下面用于分割wanted值的渲染,防止Error */} {(wanted => (
wanted{wanted}
))(wanted)}
); }, { info: { inline: true }, notes: "A very simple example of addon notes" } );