funkwhale/front/ui-docs/components/ui/input.md

3.2 KiB

import Input from "~/components/ui/Input.vue"

Input

Inputs are areas in which users can enter information. In Funkwhale, these mostly take the form of search fields.

Prop Data type Required? Description
placeholder String No The placeholder text that appears when the input is empty.
icon String No The Bootstrap icon to show on the input.
v-model String Yes The text entered in the input.

You can link a user's input to form data by referencing the data in a v-model directive.

<Input v-model="value" placeholder="Your favorite animal" />

Input icons

Add a Bootstrap icon to an input to make its purpose more visually clear.

<Input v-model="value" icon="bi-search" />

Label slot

<Input>
  <template #label>
    User name
  </template>
</Input>
User name

If you just have a string, we have a convenience prop, so instead you can write:

<Input label="User name" />

Input-right slot

You can add a template on the right-hand side of the input to guide the user's input.

<Input v-model="value" placeholder="Search">
  <template #input-right>
    suffix
  </template>
</Input>
suffix

Presets

<Input search />

Password

<Spacer :size="64" />
<Layout form stack>
  <Input label="User name" />
  <Input password label="Password" />
  <Layout flex>
    <Button primary> Submit </Button>
    <Button> Cancel </Button>
  </Layout>
</Layout>
Submit Cancel

::: tip

We use the spacer to simulate the baseline alignment on page layouts (64px between sections)

:::

Value

<Input v-model="value"/>
<Input v-model="value"/>

Fallthrough attributes

If you add attributes that are no props, they will be added to the component:

<Input required
  field-id="password-field"
/>

<Input required field-id="password-field" />