Skip to content

textarea

A multi-line <textarea>.

ts
{
  fields: [
    {
      name: 'summary',
      kind: 'textarea',
      displayName: 'Summary',
      placeholder: 'Enter inserts a newline only when allowNewlines is set',
      allowNewlines: true,
    },
  ],
}
Rendered form

Values

Options

OptionTypeNotes
placeholderReactive<string>Literal, or a function of the form context
allowNewlinesbooleanWhether Enter inserts a newline. Default false

Plus everything in the shared options.

allowNewlines and the Enter key

This is the one option you should read carefully, because the default is probably not what you expect.

In a dialog, Enter normally confirms. A textarea needs the same key, so the rule is written out:

allowNewlinesEnter inside the textarea
trueInserts a line break
false (default)Nothing happens: no line break is inserted, and the dialog is not confirmed

The default does nothing on purpose, instead of confirming. A textarea usually means the user is in the middle of writing. Closing the dialog under their hands because they pressed Enter while writing is worse than ignoring the key.

ts
// Long-form prose: let Enter do the obvious thing.
{ name: 'notes', kind: 'textarea', allowNewlines: true }

// A mostly one-line field that only needs room to wrap.
{ name: 'summary', kind: 'textarea' }

Note that Enter only ever confirms a dialog that has exactly one button. In a dialog with several buttons it is ignored everywhere, inside a textarea or not. See Buttons.

Values

getValue() returns the current text, including line breaks. The empty value is ''.

Released under the MIT License.