194 lines
4.8 KiB
TypeScript
194 lines
4.8 KiB
TypeScript
/*
|
|
* Copyright 2025 coze-dev Authors
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import React from 'react';
|
|
|
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
import { useArgs } from '@storybook/client-api';
|
|
|
|
import { Parameters, ParamTypeAlias } from '../../src/parameters';
|
|
import type { ParameterValue } from '../../src/parameters';
|
|
|
|
const meta: Meta<typeof Parameters> = {
|
|
title: 'Biz Components/Parameters',
|
|
component: Parameters,
|
|
parameters: {
|
|
actions: { argTypesRegex: '^on.*' },
|
|
layout: 'centered',
|
|
},
|
|
render: args => {
|
|
// eslint-disable-next-line react-hooks/rules-of-hooks -- linter-disable-autofix
|
|
const [, updateArgs] = useArgs();
|
|
const handleChange = (value: ParameterValue[]) => {
|
|
updateArgs({ ...args, value });
|
|
};
|
|
return <Parameters {...args} onChange={handleChange} />;
|
|
},
|
|
argTypes: {
|
|
value: {
|
|
description: '值',
|
|
table: {
|
|
type: { summary: 'ParameterValue[]' },
|
|
},
|
|
},
|
|
readonly: {
|
|
description: '启用只读',
|
|
type: 'boolean',
|
|
table: {
|
|
type: { summary: 'Boolean' },
|
|
},
|
|
},
|
|
withDescription: {
|
|
description: '启用描述',
|
|
defaultValue: false,
|
|
table: {
|
|
type: { summary: 'Boolean' },
|
|
},
|
|
},
|
|
errors: {
|
|
control: 'object',
|
|
description: '失焦时触发',
|
|
table: {
|
|
type: { summary: 'ParametersError[]' },
|
|
},
|
|
},
|
|
disabledTypes: {
|
|
description: '禁用可选参数类型',
|
|
control: 'multi-select',
|
|
options: {
|
|
String: ParamTypeAlias.String,
|
|
Integer: ParamTypeAlias.Integer,
|
|
Boolean: ParamTypeAlias.Boolean,
|
|
Number: ParamTypeAlias.Number,
|
|
Object: ParamTypeAlias.Object,
|
|
ArrayString: ParamTypeAlias.ArrayString,
|
|
ArrayInteger: ParamTypeAlias.ArrayInteger,
|
|
ArrayBoolean: ParamTypeAlias.ArrayBoolean,
|
|
ArrayNumber: ParamTypeAlias.ArrayNumber,
|
|
},
|
|
table: {
|
|
type: { summary: 'ParamTypeAlias' },
|
|
},
|
|
},
|
|
allowValueEmpty: {
|
|
defaultValue: false,
|
|
type: 'boolean',
|
|
table: {
|
|
type: { summary: 'Boolean' },
|
|
},
|
|
},
|
|
className: {
|
|
description: '样式类',
|
|
table: {
|
|
type: { summary: 'String' },
|
|
},
|
|
},
|
|
style: {
|
|
description: '样式对象',
|
|
table: {
|
|
type: { summary: 'CSSProperties' },
|
|
},
|
|
},
|
|
onChange: {
|
|
description: '监听值变化',
|
|
table: {
|
|
type: { summary: '(value: ParameterValue[]) => void' },
|
|
},
|
|
},
|
|
},
|
|
args: {
|
|
value: [
|
|
{
|
|
key: '1',
|
|
type: ParamTypeAlias.ArrayObject,
|
|
name: 'outputList',
|
|
description: '输出',
|
|
children: [
|
|
{
|
|
key: '1-1',
|
|
name: 'name',
|
|
type: ParamTypeAlias.ArrayString,
|
|
description: '名称',
|
|
children: [
|
|
{
|
|
key: '1-1-1',
|
|
name: 'sub-name',
|
|
type: ParamTypeAlias.String,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: '1-2',
|
|
name: 'type',
|
|
type: ParamTypeAlias.Integer,
|
|
description: '类型',
|
|
},
|
|
{
|
|
key: '1-3',
|
|
name: 'description',
|
|
type: ParamTypeAlias.String,
|
|
description: '描述',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
withDescription: true,
|
|
readonly: false,
|
|
errors: [],
|
|
disabledTypes: [],
|
|
className: '',
|
|
allowValueEmpty: false,
|
|
style: {
|
|
width: 500,
|
|
},
|
|
},
|
|
tags: ['autodocs'],
|
|
};
|
|
|
|
export default meta;
|
|
|
|
type Story = StoryObj<typeof Parameters>;
|
|
|
|
export const Base: Story = {};
|
|
|
|
export const WithDescription: Story = { args: { withDescription: true } };
|
|
|
|
export const Readonly: Story = { args: { readonly: true } };
|
|
|
|
export const Error: Story = {
|
|
args: { errors: [{ path: '0.children.0.name', message: '名称最小长度10' }] },
|
|
parameters: {
|
|
docs: {
|
|
description: {
|
|
story: '目前只支持名称展示错误 失焦时触发',
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
export const DisableTypes: Story = {
|
|
args: {
|
|
disabledTypes: [ParamTypeAlias.ArrayString, ParamTypeAlias.ArrayInteger],
|
|
},
|
|
parameters: {
|
|
docs: {
|
|
description: {
|
|
story: '可配置多个禁用类型',
|
|
},
|
|
},
|
|
},
|
|
};
|