From c27bb2dd052c3751d2344cb2d34b3613933658f3 Mon Sep 17 00:00:00 2001 From: Florian Scholdei Date: Wed, 11 Oct 2023 09:02:57 +0200 Subject: [PATCH] Implement textarea component Co-authored-by: Florian Scholdei Co-authored-by: Laura Gorzitze --- gradle/changelog/default_task_dialog.yaml | 2 + scm-ui/ui-forms/src/index.ts | 2 + .../ui-forms/src/input/Textarea.stories.mdx | 28 +++++++++++ scm-ui/ui-forms/src/input/Textarea.tsx | 46 +++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 gradle/changelog/default_task_dialog.yaml create mode 100644 scm-ui/ui-forms/src/input/Textarea.stories.mdx create mode 100644 scm-ui/ui-forms/src/input/Textarea.tsx diff --git a/gradle/changelog/default_task_dialog.yaml b/gradle/changelog/default_task_dialog.yaml new file mode 100644 index 0000000000..14ff065e7d --- /dev/null +++ b/gradle/changelog/default_task_dialog.yaml @@ -0,0 +1,2 @@ +- type: added + description: Textarea component diff --git a/scm-ui/ui-forms/src/index.ts b/scm-ui/ui-forms/src/index.ts index f541acd73c..3a1a844dfc 100644 --- a/scm-ui/ui-forms/src/index.ts +++ b/scm-ui/ui-forms/src/index.ts @@ -39,12 +39,14 @@ import ControlledComboboxField from "./combobox/ControlledComboboxField"; import ChipInputFieldComponent from "./chip-input/ChipInputField"; import ChipInput from "./headless-chip-input/ChipInput"; +export { default as Field } from "./base/Field"; export { default as Checkbox } from "./checkbox/Checkbox"; export { default as Combobox } from "./combobox/Combobox"; export { default as ConfigurationForm } from "./ConfigurationForm"; export { default as SelectField } from "./select/SelectField"; export { default as ComboboxField } from "./combobox/ComboboxField"; export { default as Input } from "./input/Input"; +export { default as Textarea } from "./input/Textarea"; export { default as Select } from "./select/Select"; export * from "./resourceHooks"; export { default as Label } from "./base/label/Label"; diff --git a/scm-ui/ui-forms/src/input/Textarea.stories.mdx b/scm-ui/ui-forms/src/input/Textarea.stories.mdx new file mode 100644 index 0000000000..66fd26c563 --- /dev/null +++ b/scm-ui/ui-forms/src/input/Textarea.stories.mdx @@ -0,0 +1,28 @@ +import { Meta, Story } from "@storybook/addon-docs"; +import Textarea from "./Textarea" + + + +This will be our latest Textarea component + + + + diff --git a/scm-ui/ui-forms/src/input/Textarea.tsx b/scm-ui/ui-forms/src/input/Textarea.tsx new file mode 100644 index 0000000000..d5f8c69bde --- /dev/null +++ b/scm-ui/ui-forms/src/input/Textarea.tsx @@ -0,0 +1,46 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import React, { InputHTMLAttributes } from "react"; +import classNames from "classnames"; +import { createVariantClass, Variant } from "../variants"; +import { createAttributesForTesting } from "@scm-manager/ui-components"; + +type Props = { + variant?: Variant; + testId?: string; +} & InputHTMLAttributes; + +const Textarea = React.forwardRef(({ variant, className, testId, ...props }, ref) => { + return ( +