/* * Copyright (c) 2020 - present Cloudogu GmbH * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see https://www.gnu.org/licenses/. */ // import React, { FC, useRef, useState } from "react"; // import { storiesOf } from "@storybook/react"; // import styled from "styled-components"; // import InputField from "./InputField"; // import Button from "../buttons/Button"; // import { MemoryRouter } from "react-router-dom"; // import { useForm } from "react-hook-form"; // import { SubmitButton } from "../buttons"; // // const Decorator = styled.div` // padding: 2rem; // max-width: 30rem; // `; // // const Ref: FC = () => { // const ref = useRef(null); // return ( // <> // // // // ); // }; // // const AutoFocusAndRef: FC = () => { // const ref = useRef(null); // return ( // <> // // // // // ); // }; // // type Name = { // readonly: string; // disabled: string; // firstName: string; // lastName: string; // }; // // const ReactHookForm: FC = () => { // const { // register, // handleSubmit, // formState: { errors }, // } = useForm(); // const [stored, setStored] = useState(); // // const onSubmit = (person: Name) => { // setStored(person); // }; // // return ( // <> //
// // // // //
// Submit //
// // {stored ? ( //
//
//             {JSON.stringify(stored, null, 2)}
//           
//
// ) : null} // // ); // }; // // const LegacyEvents: FC = () => { // const [value, setValue] = useState(""); // return ( // <> // setValue(e)} /> //
{value}
// // ); // }; // // storiesOf("Forms/InputField", module) // .addDecorator((storyFn) => {storyFn()}) // .addDecorator((storyFn) => {storyFn()}) // .add("AutoFocus", () => ) // .add("Default Value", () => ) // .add("Ref", () => ) // .add("Legacy Events", () => ) // .add("AutoFocusAndRef", () => ) // .add("React Hook Form", () => ); import React, { FC, useRef, useState } from "react"; import type { Meta, StoryObj } from "@storybook/react"; import styled from "styled-components"; import { useForm } from "react-hook-form"; import { MemoryRouter } from "react-router-dom"; import InputField from "./InputField"; import Button from "../buttons/Button"; import { SubmitButton } from "../buttons"; const Decorator = styled.div` padding: 2rem; max-width: 30rem; display: flex; flex-direction: column; gap: 1rem; `; const RefExample: FC = () => { const ref = useRef(null); return ( <> ); }; const OnChangeExample: FC = () => { const [value, setValue] = useState(""); return ( <> {/* @ts-ignore*/} ) => setValue(e.target.value)} />
Value: {value}
); }; // Helper-Komponente für die "ReactHookForm"-Story type FormValues = { readonly: string; disabled: string; firstName: string; lastName: string; }; const ReactHookFormExample: FC = () => { const { register, handleSubmit, formState: { errors }, } = useForm(); const [stored, setStored] = useState(); const onSubmit = (data: FormValues) => { setStored(data); }; return ( <>
Submit
{stored && (
            {JSON.stringify(stored, null, 2)}
          
)} ); }; // --- Storybook Metadata --- const meta: Meta = { title: "Forms/InputField", component: InputField, decorators: [ (Story) => ( ), (Story) => ( ), ], argTypes: { onChange: { action: "changed" }, }, tags: ["autodocs"], }; export default meta; // --- Story Definitions --- type Story = StoryObj; // Einfache Stories, die direkt `args` verwenden export const Default: Story = { args: { label: "Default Input", placeholder: "Type something here...", }, }; export const WithHelpText: Story = { args: { ...Default.args, label: "With Help Text", helpText: "This is some helpful information.", }, }; export const Disabled: Story = { args: { ...Default.args, label: "Disabled Input", disabled: true, }, }; // Komplexe Stories, die eine `render`-Funktion benötigen export const WithRef: Story = { name: "Using Refs", render: () => , }; export const WithOnChange: Story = { name: "Handling onChange", render: () => , }; export const WithReactHookForm: Story = { name: "With React Hook Form", render: () => , };