表单元素允许您创建灵活而美观的表单布局。表单元素只是众所周知的列表视图(列表 和 列表项 Vue 组件),但具有几个额外的组件。
以下组件包含在内
ListInput
- 列表项输入元素名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
accept | 字符串 | 数字 | 输入的原生“accept”属性的值 | |
autocapitalize | 字符串 | 输入的原生“autocapitalize”属性的值 | |
autocomplete | 字符串 | 输入的原生“autoComplete”属性的值 | |
autocorrect | 字符串 | 输入的原生“autocorrect”属性的值 | |
autofocus | 布尔值 | 输入的原生“autofocus”属性的值 | |
autosave | 字符串 | 输入的原生“autosave”属性的值 | |
clearButton | 布尔值 | false | 添加输入清除按钮 |
colors | 对象 | 包含 Tailwind CSS 颜色类别的对象 | |
colors.bgIos | 字符串 | '' | |
colors.bgMaterial | 字符串 | 'bg-md-light-surface-variant dark:bg-md-dark-surface-variant' | |
colors.errorBorder | 字符串 | 'border-red-500' | |
colors.errorText | 字符串 | 'text-red-500' | |
colors.labelTextFocusIos | 字符串 | '' | |
colors.labelTextFocusMaterial | 字符串 | 'text-md-light-primary dark:text-md-dark-primary' | |
colors.labelTextIos | 字符串 | '' | |
colors.labelTextMaterial | 字符串 | 'text-md-light-on-surface-variant dark:text-md-dark-on-surface-variant' | |
colors.outlineBorderFocusIos | 字符串 | 'border-primary' | |
colors.outlineBorderFocusMaterial | 字符串 | 'border-md-light-primary dark:border-md-dark-primary' | |
colors.outlineBorderIos | 字符串 | 'border-black border-opacity-30 dark:border-white dark:border-opacity-30' | |
colors.outlineBorderMaterial | 字符串 | 'border-md-light-on-surface dark:border-md-dark-on-surface' | |
colors.outlineLabelBgIos | 字符串 | 'bg-ios-light-surface-1 dark:bg-ios-dark-surface-1' | |
colors.outlineLabelBgMaterial | 字符串 | 'bg-md-light-surface dark:bg-md-dark-surface' | |
component | 字符串 | 'li' | 组件的 HTML 元素 |
disabled | 布尔值 | 将输入标记为禁用 | |
dropdown | 布尔值 | false | 渲染额外的下拉图标(适用于 |
error | 字符串 | 输入“错误”的内容 | |
floatingLabel | 布尔值 | false | 创建浮动标签 |
info | 字符串 | 输入“信息”的内容 | |
inputClass | 字符串 | 额外的输入样式 | |
inputId | 字符串 | 输入的 id 属性 | |
inputmode | 字符串 | 输入的原生“inputmode”属性的值 | |
inputStyle | CSSProperties | 额外的输入类 | |
label | 字符串 | 标签内容 | |
max | 字符串 | 数字 | 输入的原生“max”属性的值 | |
maxlength | 字符串 | 数字 | 输入的原生“maxlength”属性的值 | |
min | 字符串 | 数字 | 输入的原生“min”属性的值 | |
minlength | 字符串 | 数字 | 输入的原生“minlength”属性的值 | |
multiple | 布尔值 | 输入的原生“multiple”属性的值 | |
name | 字符串 | 输入名称 | |
outline | 布尔值 | 未定义 | 渲染带边框的轮廓样式输入,覆盖 |
outlineIos | 布尔值 | false | 在 iOS 主题中渲染带边框的轮廓样式输入 |
outlineMaterial | 布尔值 | false | 在 Material 主题中渲染带边框的轮廓样式输入 |
pattern | 字符串 | 输入的原生“pattern”属性的值 | |
placeholder | 字符串 | 数字 | 输入占位符 | |
readonly | 布尔值 | 将输入标记为只读 | |
required | 布尔值 | 将输入标记为必填 | |
size | 字符串 | 数字 | 输入的原生“size”属性的值 | |
spellcheck | 字符串 | 输入的原生“spellcheck”属性的值 | |
step | 字符串 | 数字 | 输入的原生“step”属性的值 | |
tabindex | 字符串 | 数字 | 输入的原生“tabindex”属性的值 | |
type | 字符串 | 'text' | 输入类型 |
value | 任何 | 输入值 |
名称 | 类型 | 描述 |
---|---|---|
blur | function(e) |
|
change | function(e) |
|
clear | function(e) |
|
focus | function(e) |
|
input | function(e) |
|
名称 | 描述 |
---|---|
error | 输入“错误”的内容 |
info | 输入“信息”的内容 |
input | 自定义输入元素 |
label | 标签内容 |
media | 列表项“媒体”区域的内容(例如图标) |
<template><k-page><k-navbar title="Form Inputs" /><k-block-title>Default</k-block-title><k-list inset-ios strong-ios><k-list-input label="Name" type="text" placeholder="Your name"><template #media><demo-icon /></template></k-list-input><k-list-inputlabel="Password"type="password"placeholder="Your password"><template #media><demo-icon /></template></k-list-input><k-list-input label="E-mail" type="email" placeholder="Your e-mail"><template #media><demo-icon /></template></k-list-input><k-list-input label="URL" type="url" placeholder="URL"><template #media><demo-icon /></template></k-list-input><k-list-input label="Phone" type="tel" placeholder="Your phone number"><template #media><demo-icon /></template></k-list-input><k-list-inputlabel="Gender"type="select"dropdowndefault-value="Male"placeholder="Please choose..."><template #media><demo-icon /></template><option value="Male">Male</option><option value="Female">Female</option></k-list-input><k-list-inputlabel="Birthday"type="date"default-value="2014-04-30"placeholder="Please choose..."><template #media><demo-icon /></template></k-list-input><k-list-inputlabel="Date time"type="datetime-local"placeholder="Please choose..."><template #media><demo-icon /></template></k-list-input><k-list-inputlabel="Textarea"type="textarea"placeholder="Bio"input-class="!h-20 resize-none"><template #media><demo-icon /></template></k-list-input></k-list><k-block-title>Outline</k-block-title><k-list inset-ios strong-ios><k-list-input outline label="Name" type="text" placeholder="Your name"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="Password"type="password"placeholder="Your password"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="E-mail"type="email"placeholder="Your e-mail"><template #media><demo-icon /></template></k-list-input><k-list-input outline label="URL" type="url" placeholder="URL"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="Phone"type="tel"placeholder="Your phone number"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="Gender"type="select"dropdowndefault-value="Male"placeholder="Please choose..."><template #media><demo-icon /></template><option value="Male">Male</option><option value="Female">Female</option></k-list-input><k-list-inputoutlinelabel="Birthday"type="date"default-value="2014-04-30"placeholder="Please choose..."><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="Date time"type="datetime-local"placeholder="Please choose..."><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="Textarea"type="textarea"placeholder="Bio"input-class="!h-20 resize-none"><template #media><demo-icon /></template></k-list-input></k-list><k-block-title>Floating Labels</k-block-title><k-list inset-ios strong-ios><k-list-inputlabel="Name"floating-labeltype="text"placeholder="Your name"><template #media><demo-icon /></template></k-list-input><k-list-inputlabel="Password"floating-labeltype="password"placeholder="Your password"><template #media><demo-icon /></template></k-list-input><k-list-inputlabel="E-mail"floating-labeltype="email"placeholder="Your e-mail"><template #media><demo-icon /></template></k-list-input><k-list-input label="URL" floating-label type="url" placeholder="URL"><template #media><demo-icon /></template></k-list-input><k-list-inputlabel="Phone"floating-labeltype="tel"placeholder="Your phone number"><template #media><demo-icon /></template></k-list-input></k-list><k-block-title>Outline + Floating Labels</k-block-title><k-list inset-ios strong-ios><k-list-inputoutlinelabel="Name"floating-labeltype="text"placeholder="Your name"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="Password"floating-labeltype="password"placeholder="Your password"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="E-mail"floating-labeltype="email"placeholder="Your e-mail"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="URL"floating-labeltype="url"placeholder="URL"><template #media><demo-icon /></template></k-list-input><k-list-inputoutlinelabel="Phone"floating-labeltype="tel"placeholder="Your phone number"><template #media><demo-icon /></template></k-list-input></k-list><k-block-title>Validation + Additional Info</k-block-title><k-list inset-ios strong-ios><k-list-inputlabel="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></k-list-input></k-list><k-block-title>Clear Button</k-block-title><k-list inset-ios strong-ios><k-list-inputlabel="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></k-list-input></k-list><k-block-title>Icon + Input</k-block-title><k-list inset-ios strong-ios><k-list-input type="text" placeholder="Your name"><template #media><demo-icon /></template></k-list-input><k-list-input type="password" placeholder="Your password"><template #media><demo-icon /></template></k-list-input><k-list-input type="email" placeholder="Your e-mail"><template #media><demo-icon /></template></k-list-input><k-list-input type="url" placeholder="URL"><template #media><demo-icon /></template></k-list-input></k-list><k-block-title>Label + Input</k-block-title><k-list inset-ios strong-ios><k-list-input label="Name" type="text" placeholder="Your name" /><k-list-inputlabel="Password"type="password"placeholder="Your password"/><k-list-input label="E-mail" type="email" placeholder="Your e-mail" /><k-list-input label="URL" type="url" placeholder="URL" /></k-list><k-block-title>Only Inputs</k-block-title><k-list inset-ios strong-ios><k-list-input type="text" placeholder="Your name" /><k-list-input type="password" placeholder="Your password" /><k-list-input type="email" placeholder="Your e-mail" /><k-list-input type="url" placeholder="URL" /></k-list><k-block-title>Inputs + Additional Info</k-block-title><k-list inset-ios strong-ios><k-list-inputtype="text"placeholder="Your name"info="Full name please"/><k-list-inputtype="password"placeholder="Your password"info="8 characters minimum"/><k-list-inputtype="email"placeholder="Your e-mail"info="Your work e-mail address"/><k-list-input type="url" placeholder="URL" info="Your website URL" /></k-list></k-page></template><script>import { ref } from 'vue';import {kPage,kNavbar,kNavbarBackLink,kBlockTitle,kList,kListInput,} from 'konsta/vue';import DemoIcon from '../components/DemoIcon.vue';export default {components: {kPage,kNavbar,kNavbarBackLink,kBlockTitle,kList,kListInput,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>