From 661cd137d989063ed9ca1f23610a19eb83af3df4 Mon Sep 17 00:00:00 2001 From: BearToCode Date: Sat, 9 Dec 2023 11:15:46 +0100 Subject: [PATCH] feat: add `textarea` property to allow additional textarea properties fix #26 --- docs/src/pages/api/core.svelte.md | 8 +++++ packages/carta-md/src/lib/CartaEditor.svelte | 3 ++ packages/carta-md/src/lib/index.ts | 1 + .../internal/components/MarkdownInput.svelte | 7 ++-- .../src/lib/internal/textarea-props.ts | 36 +++++++++++++++++++ 5 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 packages/carta-md/src/lib/internal/textarea-props.ts diff --git a/docs/src/pages/api/core.svelte.md b/docs/src/pages/api/core.svelte.md index 4f003a72..4a733daf 100644 --- a/docs/src/pages/api/core.svelte.md +++ b/docs/src/pages/api/core.svelte.md @@ -112,6 +112,14 @@ Type: `string` Set the textarea placeholder. +### `textarea` + +Type: `TextAreaProps` (extends `Record`) + +Additional properties that will be used in the textarea used under the hood in the editor. +`class`, `placeholder` and `value` are not allowed. Use the corresponding editor properties +instead. + # `CartaViewer` options List of options that can be used in the `` component. diff --git a/packages/carta-md/src/lib/CartaEditor.svelte b/packages/carta-md/src/lib/CartaEditor.svelte index 4984d7dc..a8c339a8 100644 --- a/packages/carta-md/src/lib/CartaEditor.svelte +++ b/packages/carta-md/src/lib/CartaEditor.svelte @@ -4,6 +4,7 @@ import CartaRenderer from './internal/components/CartaRenderer.svelte'; import MarkdownInput from './internal/components/MarkdownInput.svelte'; import { debounce } from './internal/utils'; + import type { TextAreaProps } from './internal/textarea-props'; export let carta: Carta; export let theme = 'default'; @@ -12,6 +13,7 @@ export let scroll: 'sync' | 'async' = 'sync'; export let disableToolbar = false; export let placeholder = ''; + export let textarea: TextAreaProps = {}; let width: number; let selectedTab: 'write' | 'preview' = 'write'; @@ -134,6 +136,7 @@ {carta} {placeholder} {handleScroll} + props={textarea} bind:value bind:resize={resizeInput} bind:elem={inputElem} diff --git a/packages/carta-md/src/lib/index.ts b/packages/carta-md/src/lib/index.ts index c8f6155c..3c450b45 100644 --- a/packages/carta-md/src/lib/index.ts +++ b/packages/carta-md/src/lib/index.ts @@ -6,5 +6,6 @@ export type { KeyboardShortcut } from '$lib/internal/shortcuts'; export type { Prefix } from '$lib/internal/prefixes'; export * from '$lib/internal/carta'; export * from '$lib/internal/highlight'; +export * from '$lib/internal/textarea-props'; export * from './default.css?inline'; export * from './light.css?inline'; diff --git a/packages/carta-md/src/lib/internal/components/MarkdownInput.svelte b/packages/carta-md/src/lib/internal/components/MarkdownInput.svelte index 869729af..f387f749 100644 --- a/packages/carta-md/src/lib/internal/components/MarkdownInput.svelte +++ b/packages/carta-md/src/lib/internal/components/MarkdownInput.svelte @@ -1,12 +1,14 @@