<template>
<i-page>
<i-navbar title="Form Inputs" />
<i-block-title>Default</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input label="Name" type="text" placeholder="Your name">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
label="Password"
type="password"
placeholder="Your password"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input label="E-mail" type="email" placeholder="Your e-mail">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input label="URL" type="url" placeholder="URL">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input label="Phone" type="tel" placeholder="Your phone number">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
label="Gender"
type="select"
dropdown
default-value="Male"
placeholder="Please choose..."
>
<template #media>
<demo-icon />
</template>
<option value="Male">Male</option>
<option value="Female">Female</option>
</i-list-input>
<i-list-input
label="Birthday"
type="date"
default-value="2014-04-30"
placeholder="Please choose..."
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
label="Date time"
type="datetime-local"
placeholder="Please choose..."
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
label="Textarea"
type="textarea"
placeholder="Bio"
input-class="!h-20 resize-none"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
</i-list>
<i-block-title>Outline</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input outline label="Name" type="text" placeholder="Your name">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="Password"
type="password"
placeholder="Your password"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="E-mail"
type="email"
placeholder="Your e-mail"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input outline label="URL" type="url" placeholder="URL">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="Phone"
type="tel"
placeholder="Your phone number"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="Gender"
type="select"
dropdown
default-value="Male"
placeholder="Please choose..."
>
<template #media>
<demo-icon />
</template>
<option value="Male">Male</option>
<option value="Female">Female</option>
</i-list-input>
<i-list-input
outline
label="Birthday"
type="date"
default-value="2014-04-30"
placeholder="Please choose..."
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="Date time"
type="datetime-local"
placeholder="Please choose..."
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="Textarea"
type="textarea"
placeholder="Bio"
input-class="!h-20 resize-none"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
</i-list>
<i-block-title>Floating Labels</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input
label="Name"
floating-label
type="text"
placeholder="Your name"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
label="Password"
floating-label
type="password"
placeholder="Your password"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
label="E-mail"
floating-label
type="email"
placeholder="Your e-mail"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input label="URL" floating-label type="url" placeholder="URL">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
label="Phone"
floating-label
type="tel"
placeholder="Your phone number"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
</i-list>
<i-block-title>Outline + Floating Labels</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input
outline
label="Name"
floating-label
type="text"
placeholder="Your name"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="Password"
floating-label
type="password"
placeholder="Your password"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="E-mail"
floating-label
type="email"
placeholder="Your e-mail"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="URL"
floating-label
type="url"
placeholder="URL"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input
outline
label="Phone"
floating-label
type="tel"
placeholder="Your phone number"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
</i-list>
<i-block-title>Validation + Additional Info</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input
label="Name"
type="text"
placeholder="Your name"
info="Basic string checking"
:value="name.value"
:error="
name.changed && !name.value.trim() ? 'Please specify your name' : ''
"
@input="onNameChange"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
</i-list>
<i-block-title>Clear Button</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input
label="TV Show"
type="text"
placeholder="Your favorite TV show"
info="Type something to see clear button"
:value="demoValue"
:clear-button="demoValue.length > 0"
@input="onDemoValueChange"
@clear="onDemoValueClear"
>
<template #media>
<demo-icon />
</template>
</i-list-input>
</i-list>
<i-block-title>Icon + Input</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input type="text" placeholder="Your name">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input type="password" placeholder="Your password">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input type="email" placeholder="Your e-mail">
<template #media>
<demo-icon />
</template>
</i-list-input>
<i-list-input type="url" placeholder="URL">
<template #media>
<demo-icon />
</template>
</i-list-input>
</i-list>
<i-block-title>Label + Input</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input label="Name" type="text" placeholder="Your name" />
<i-list-input
label="Password"
type="password"
placeholder="Your password"
/>
<i-list-input label="E-mail" type="email" placeholder="Your e-mail" />
<i-list-input label="URL" type="url" placeholder="URL" />
</i-list>
<i-block-title>Only Inputs</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input type="text" placeholder="Your name" />
<i-list-input type="password" placeholder="Your password" />
<i-list-input type="email" placeholder="Your e-mail" />
<i-list-input type="url" placeholder="URL" />
</i-list>
<i-block-title>Inputs + Additional Info</i-block-title>
<i-list inset-ios strong-ios>
<i-list-input
type="text"
placeholder="Your name"
info="Full name please"
/>
<i-list-input
type="password"
placeholder="Your password"
info="8 characters minimum"
/>
<i-list-input
type="email"
placeholder="Your e-mail"
info="Your work e-mail address"
/>
<i-list-input type="url" placeholder="URL" info="Your website URL" />
</i-list>
</i-page>
</template>
<script>
import { ref } from 'vue';
import {
iPage,
iNavbar,
iNavbarBackLink,
iBlockTitle,
iList,
iListInput,
} from 'ina-ui/vue';
import DemoIcon from '../components/DemoIcon.vue';
export default {
components: {
iPage,
iNavbar,
iNavbarBackLink,
iBlockTitle,
iList,
iListInput,
DemoIcon,
},
setup() {
const name = ref({ value: '', changed: false });
const demoValue = ref('');
const onNameChange = (e) => {
name.value = { value: e.target.value, changed: true };
};
const onDemoValueChange = (e) => {
demoValue.value = e.target.value;
};
const onDemoValueClear = () => {
demoValue.value = '';
};
return {
name,
demoValue,
onNameChange,
onDemoValueChange,
onDemoValueClear,
};
},
};
</script>