From b0207e9e72fe6c90b148aaf1136458999b09de04 Mon Sep 17 00:00:00 2001 From: Frontendland Date: Fri, 9 Aug 2024 17:05:13 +0200 Subject: [PATCH 01/10] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Bump=20package=20ver?= =?UTF-8?q?sion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/utils/modal.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 0e33220..dfa4113 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "webcoreui", "type": "module", - "version": "0.1.0", + "version": "0.2.0", "scripts": { "dev": "astro dev", "build": "astro check && astro build", diff --git a/src/utils/modal.ts b/src/utils/modal.ts index d5aeb10..df394db 100644 --- a/src/utils/modal.ts +++ b/src/utils/modal.ts @@ -50,7 +50,6 @@ export const modal = (element: string) => { } } - export const closeModal = (element: string) => { const htmlElement = document.querySelector(element) as HTMLElement From 6e029301af48f879c8c34feca3f4e434537f0fd8 Mon Sep 17 00:00:00 2001 From: Frontendland Date: Mon, 12 Aug 2024 16:56:41 +0200 Subject: [PATCH 02/10] =?UTF-8?q?=E2=9C=A8=20Add=20Textarea=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + scripts/buildTypes.js | 3 +- scripts/createComponent.js | 3 + src/components/Textarea/Textarea.astro | 44 ++++++++++ src/components/Textarea/Textarea.svelte | 45 ++++++++++ src/components/Textarea/Textarea.tsx | 50 +++++++++++ src/components/Textarea/textarea.module.scss | 36 ++++++++ src/components/Textarea/textarea.ts | 18 ++++ src/pages/index.astro | 4 + src/pages/textarea.astro | 89 ++++++++++++++++++++ src/playground/ReactPlayground.tsx | 37 +++++--- src/playground/SveltePlayground.svelte | 36 +++++--- 12 files changed, 343 insertions(+), 23 deletions(-) create mode 100644 src/components/Textarea/Textarea.astro create mode 100644 src/components/Textarea/Textarea.svelte create mode 100644 src/components/Textarea/Textarea.tsx create mode 100644 src/components/Textarea/textarea.module.scss create mode 100644 src/components/Textarea/textarea.ts create mode 100644 src/pages/textarea.astro diff --git a/README.md b/README.md index 26450f0..107e920 100644 --- a/README.md +++ b/README.md @@ -210,6 +210,7 @@ import { Accordion } from 'webcoreui/react' - [Switch](https://github.com/Frontendland/webcoreui/tree/main/src/components/Switch) - [Table](https://github.com/Frontendland/webcoreui/tree/main/src/components/Table) - [Tabs](https://github.com/Frontendland/webcoreui/tree/main/src/components/Tabs) +- [Textarea](https://github.com/Frontendland/webcoreui/tree/main/src/components/Textarea) - [ThemeSwitcher](https://github.com/Frontendland/webcoreui/tree/main/src/components/ThemeSwitcher) - [Timeline](https://github.com/Frontendland/webcoreui/blob/main/src/pages/timeline.astro) - [Toast](https://github.com/Frontendland/webcoreui/tree/main/src/components/Toast) diff --git a/scripts/buildTypes.js b/scripts/buildTypes.js index 75eb0b2..77b55a5 100644 --- a/scripts/buildTypes.js +++ b/scripts/buildTypes.js @@ -28,7 +28,8 @@ const buildTypes = type => { 'Input', 'Radio', 'Switch', - 'Slider' + 'Slider', + 'Textarea' ] return componentsWithSvelteSpecificTypes.includes(component) diff --git a/scripts/createComponent.js b/scripts/createComponent.js index 701ed62..450d895 100644 --- a/scripts/createComponent.js +++ b/scripts/createComponent.js @@ -120,6 +120,9 @@ const templates = { {sections.map(section => (

{section.title}

+ + {section.subTitle &&

} +
diff --git a/src/components/Textarea/Textarea.astro b/src/components/Textarea/Textarea.astro new file mode 100644 index 0000000..6a1b8d5 --- /dev/null +++ b/src/components/Textarea/Textarea.astro @@ -0,0 +1,44 @@ +--- +import type { TextareaProps } from './textarea' +import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.astro' + +import styles from './textarea.module.scss' + +interface Props extends TextareaProps {} + +const { + label, + placeholder, + subText, + value = '', + disabled, + className +} = Astro.props + +const classes = [ + styles.textarea, + className +] + +const useLabel = !!(label || subText) +--- + + + + + + diff --git a/src/components/Textarea/Textarea.svelte b/src/components/Textarea/Textarea.svelte new file mode 100644 index 0000000..5057daf --- /dev/null +++ b/src/components/Textarea/Textarea.svelte @@ -0,0 +1,45 @@ + + + + {#if label} +
{label}
+ {/if} + + {#if subText} +
+ {@html subText} +
+ {/if} +
diff --git a/src/components/Textarea/Textarea.tsx b/src/components/Textarea/Textarea.tsx new file mode 100644 index 0000000..626d806 --- /dev/null +++ b/src/components/Textarea/Textarea.tsx @@ -0,0 +1,50 @@ +import React from 'react' +import type { ReactTextareaProps } from './textarea' +import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.tsx' + +import styles from './textarea.module.scss' +import { classNames } from '../../utils/classNames' + +const Textarea = ({ + label, + placeholder, + subText, + value = '', + disabled, + className, + ...rest +}: ReactTextareaProps) => { + const classes = classNames([ + styles.textarea, + className + ]) + + const useLabel = !!(label || subText) + + return ( + ( +