You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

MenuIconSelector.stories.tsx 2.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import MenuIconSelector from '@/components/MenuIconSelector';
  2. import { useArgs } from '@storybook/preview-api';
  3. import type { Meta, StoryObj } from '@storybook/react';
  4. import { fn } from '@storybook/test';
  5. import { Button } from 'antd';
  6. // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
  7. const meta = {
  8. title: 'Components/MenuIconSelector 菜单图标选择器',
  9. component: MenuIconSelector,
  10. parameters: {
  11. // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
  12. layout: 'centered',
  13. },
  14. // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
  15. tags: ['autodocs'],
  16. // More on argTypes: https://storybook.js.org/docs/api/argtypes
  17. argTypes: {
  18. open: {
  19. control: 'boolean',
  20. description: '对话框是否可见',
  21. },
  22. },
  23. // 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
  24. args: { onCancel: fn(), onOk: fn() },
  25. } satisfies Meta<typeof MenuIconSelector>;
  26. export default meta;
  27. type Story = StoryObj<typeof meta>;
  28. // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
  29. export const Primary: Story = {
  30. args: {
  31. selectedIcon: 'manual-icon',
  32. open: false,
  33. },
  34. render: function Render({ onOk, onCancel, ...args }) {
  35. const [{ open, selectedIcon }, updateArgs] = useArgs();
  36. function onClick() {
  37. updateArgs({ open: true });
  38. }
  39. function handleOk(value: string) {
  40. updateArgs({ selectedIcon: value, open: false });
  41. onOk?.(value);
  42. }
  43. function handleCancel() {
  44. updateArgs({ open: false });
  45. onCancel?.();
  46. }
  47. return (
  48. <>
  49. <Button type="primary" onClick={onClick}>
  50. 打开 MenuIconSelector
  51. </Button>
  52. <MenuIconSelector
  53. {...args}
  54. open={open}
  55. selectedIcon={selectedIcon}
  56. onOk={handleOk}
  57. onCancel={handleCancel}
  58. />
  59. </>
  60. );
  61. },
  62. };