spotube/website/src/content/docs/plugin-apis/forms.mdx
2025-08-15 21:06:33 +06:00

73 lines
2.5 KiB
Plaintext

---
layout: "layouts/DocLayout.astro"
title: Forms
description: Documentation for the Forms API for spotube plugins
order: 1
---
Spotube provides a Forms API that allows plugin developers to create and manage forms within the Spotube application.
## Usage
Following will show a form with 2 text fields and text in between them:
```hetu_script
import "module:spotube_plugin" as spotube
spotube.SpotubeForm.show(
"The form page title",
[
{
objectType: "input",
id: "name",
variant: "text",
placeholder: "Enter your name",
required: true,
}.toJson(),
{
objectType: "input",
id: "password",
variant: "password", // This will obfuscate the input
placeholder: "Enter your password",
required: true,
}.toJson(),
{
objectType: "text",
text: "This is some text after the two fields.",
}.toJson(),
]
).then((result) {
// Handle the result
print(result)
})
```
The method `spotube.SpotubeForm.show` takes a title and a list of form field declaration map. The map should be, well obviously a `Map`.
Following are field map properties:
| Property | Type | Description |
| -------------- | ----------------- | ---------------------------------------------------------------------------------- |
| `objectType` | `text` or `input` | Type of the object, should be `text` for text fields and `input` for input fields. |
| `id` | `String` | Unique identifier for the field. (`input` type only) |
| `variant` | `String` | Variant of the field, can be `text`, `password` or `number`. (`input` type only) |
| `placeholder` | `String` | Optional placeholder text for the field. (`input` type only) |
| `required` | `Boolean` | Whether the field is required or not. (`input` type only) |
| `defaultValue` | `String` | Optional default value for the field. (`input` type only) |
| `regex` | `String` | Optional regex pattern to validate the input. (`input` type only) |
| `text` | `String` | Optional text for `text` object type. (Only applicable for `text` type) |
The method `spotube.SpotubeForm.show` returns a following format:
```json
[
{
"id": "name",
"value": "John Doe"
},
{
"id": "password",
"value": "12345678"
}
]
```