import ParameterSelect, { type ParameterSelectObject } from '@/components/ParameterSelect'; import { action } from '@storybook/addon-actions'; import { useArgs } from '@storybook/preview-api'; import type { Meta, StoryObj } from '@storybook/react'; import { fn } from '@storybook/test'; import { Button, Col, Form, Row } from 'antd'; import { http, HttpResponse } from 'msw'; import { computeResourceData, datasetListData, modelListData, serviceListData } from './mockData'; // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export const meta = { title: 'Components/ParameterSelect 参数选择器', component: ParameterSelect, parameters: { // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout // layout: 'centered', msw: { handlers: [ http.get('/api/mmp/newdataset/queryDatasets', () => { return HttpResponse.json(datasetListData); }), http.get('/api/mmp/newmodel/queryModels', () => { return HttpResponse.json(modelListData); }), http.get('/api/mmp/service', () => { return HttpResponse.json(serviceListData); }), http.get('/api/mmp/computingResource', () => { return HttpResponse.json(computeResourceData); }), ], }, }, // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs tags: ['autodocs'], // More on argTypes: https://storybook.js.org/docs/api/argtypes // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args args: { onChange: fn() }, } satisfies Meta; export default meta; type Story = StoryObj; // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args export const Primary: Story = { args: { placeholder: '请选择', dataType: 'dataset', style: { width: 400 }, size: 'large', }, render: function Render(args) { const [{ value }, updateArgs] = useArgs(); function handleChange(value?: string | ParameterSelectObject) { updateArgs({ value: value }); args.onChange?.(value); } return ; }, }; /** 值可以是一个对象,典型的是流水线节点对象 **PipelineNodeModelParameter** */ export const Object: Story = { args: { placeholder: '请选择', dataType: 'dataset', style: { width: 400 }, size: 'large', value: { value: undefined, }, }, render: function Render(args) { const [{ value }, updateArgs] = useArgs(); function handleChange(value?: string | ParameterSelectObject) { updateArgs({ value: value }); args.onChange?.(value); } return ; }, }; export const InForm: Story = { args: { dataType: 'dataset', }, render: ({ onChange }) => { return (
); }, };