@vue-interface/input-field 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +30 -0
- package/dist/index.d.ts +2 -0
- package/dist/input-field.js +128 -0
- package/dist/input-field.js.map +1 -0
- package/dist/input-field.umd.cjs +2 -0
- package/dist/input-field.umd.cjs.map +1 -0
- package/dist/src/InputField.vue.d.ts +77 -0
- package/package.json +14 -7
- package/CHANGELOG.md +0 -12
- package/demo.css +0 -12
- package/docs/input-field.md +0 -373
- package/index.html +0 -240
- package/index.ts +0 -5
- package/src/InputField.vue +0 -129
- package/tsconfig.json +0 -27
- package/vite.config.js +0 -47
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Justin Kimbrell
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Input Field
|
|
2
|
+
|
|
3
|
+
The `input-field` component provides flexible and customizable input fields with customizable sizes and states.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm i @vue-interface/input-field
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yarn add @vue-interface/input-field
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm i @vue-interface/input-field
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
bun i @vue-interface/input-field
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Basic Usage
|
|
24
|
+
|
|
25
|
+
```vue
|
|
26
|
+
<InputField v-model="value" label="Text Field" placeholder="Some placeholder" @change="onChange"></InputField>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For more comprehensive documentation and examples, please visit the [online documentation](https://vue-interface.github.io/packages/input-field/).
|
|
30
|
+
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { defineComponent as p, mergeModels as h, useModel as F, ref as w, createElementBlock as d, openBlock as a, normalizeClass as C, unref as t, renderSlot as l, createElementVNode as n, createCommentVNode as s, toDisplayString as c, normalizeProps as u, guardReactiveProps as m, withDirectives as A, mergeProps as M, vModelDynamic as N, createVNode as $, Transition as S, withCtx as y, createBlock as V, createTextVNode as D } from "vue";
|
|
2
|
+
import { ActivityIndicator as E } from "@vue-interface/activity-indicator";
|
|
3
|
+
import { useFormControl as I, FormControlErrors as P, FormControlFeedback as x } from "@vue-interface/form-control";
|
|
4
|
+
const G = ["for"], R = { class: "form-control-inner" }, U = { class: "form-control-activity-indicator" }, j = {
|
|
5
|
+
invalid: "",
|
|
6
|
+
class: "invalid-feedback"
|
|
7
|
+
}, q = {
|
|
8
|
+
valid: "",
|
|
9
|
+
class: "valid-feedback"
|
|
10
|
+
}, L = /* @__PURE__ */ p({
|
|
11
|
+
inheritAttrs: !1,
|
|
12
|
+
__name: "InputField",
|
|
13
|
+
props: /* @__PURE__ */ h({
|
|
14
|
+
activity: { type: Boolean },
|
|
15
|
+
disabled: { type: Boolean },
|
|
16
|
+
error: {},
|
|
17
|
+
errors: {},
|
|
18
|
+
feedback: {},
|
|
19
|
+
formControlClass: { default: "form-control" },
|
|
20
|
+
helpText: {},
|
|
21
|
+
id: {},
|
|
22
|
+
indicator: {},
|
|
23
|
+
indicatorSize: {},
|
|
24
|
+
invalid: { type: Boolean },
|
|
25
|
+
label: {},
|
|
26
|
+
labelClass: { default: "form-label" },
|
|
27
|
+
modelValue: {},
|
|
28
|
+
name: {},
|
|
29
|
+
plaintext: { type: Boolean },
|
|
30
|
+
size: {},
|
|
31
|
+
color: {},
|
|
32
|
+
readonly: { type: Boolean },
|
|
33
|
+
valid: { type: Boolean },
|
|
34
|
+
value: {}
|
|
35
|
+
}, {
|
|
36
|
+
modelValue: {},
|
|
37
|
+
modelModifiers: {}
|
|
38
|
+
}),
|
|
39
|
+
emits: /* @__PURE__ */ h(["update:modelValue", "blur", "focus", "focusin", "focusout", "click", "doubleclick", "contextmenu", "mousedown", "mouseup", "mouseover", "mouseout", "mouseenter", "mouseleave", "mousemove", "keydown", "keyup", "keypress", "select", "selectionchange", "invalid", "submit", "reset", "scroll", "wheel", "copy", "cut", "paste", "touchstart", "touchend", "touchmove", "touchcancel", "change", "input", "beforeinput"], ["update:modelValue"]),
|
|
40
|
+
setup(e, { emit: B }) {
|
|
41
|
+
const z = e, f = F(e, "modelValue"), T = B, {
|
|
42
|
+
controlAttributes: v,
|
|
43
|
+
formGroupClasses: g,
|
|
44
|
+
listeners: b
|
|
45
|
+
} = I({ model: f, props: z, emit: T }), k = w();
|
|
46
|
+
return (o, r) => (a(), d("div", {
|
|
47
|
+
class: C(["input-field", t(g)])
|
|
48
|
+
}, [
|
|
49
|
+
l(o.$slots, "label", {}, () => [
|
|
50
|
+
e.label ? (a(), d("label", {
|
|
51
|
+
key: 0,
|
|
52
|
+
ref: "label",
|
|
53
|
+
class: C(e.labelClass),
|
|
54
|
+
for: t(v).id
|
|
55
|
+
}, c(e.label), 11, G)) : s("", !0)
|
|
56
|
+
]),
|
|
57
|
+
n("div", R, [
|
|
58
|
+
l(o.$slots, "control", u(m({ controlAttributes: t(v), listeners: t(b) })), () => [
|
|
59
|
+
o.$slots.icon ? (a(), d("div", {
|
|
60
|
+
key: 0,
|
|
61
|
+
class: "form-control-inner-icon",
|
|
62
|
+
onClick: r[0] || (r[0] = (i) => k.value?.focus())
|
|
63
|
+
}, [
|
|
64
|
+
l(o.$slots, "icon")
|
|
65
|
+
])) : s("", !0),
|
|
66
|
+
A(n("input", M({
|
|
67
|
+
ref_key: "field",
|
|
68
|
+
ref: k,
|
|
69
|
+
"onUpdate:modelValue": r[1] || (r[1] = (i) => f.value = i)
|
|
70
|
+
}, { ...t(v), ...t(b) }), null, 16), [
|
|
71
|
+
[N, f.value]
|
|
72
|
+
])
|
|
73
|
+
]),
|
|
74
|
+
n("div", U, [
|
|
75
|
+
l(o.$slots, "activity", {}, () => [
|
|
76
|
+
$(S, { name: "input-field-fade" }, {
|
|
77
|
+
default: y(() => [
|
|
78
|
+
e.activity && e.indicator ? (a(), V(t(E), {
|
|
79
|
+
key: "activity",
|
|
80
|
+
ref: "activity",
|
|
81
|
+
type: e.indicator,
|
|
82
|
+
size: e.indicatorSize
|
|
83
|
+
}, null, 8, ["type", "size"])) : s("", !0)
|
|
84
|
+
]),
|
|
85
|
+
_: 1
|
|
86
|
+
})
|
|
87
|
+
])
|
|
88
|
+
])
|
|
89
|
+
]),
|
|
90
|
+
l(o.$slots, "errors", u(m({ error: e.error, errors: e.errors, id: o.$attrs.id, name: o.$attrs.name })), () => [
|
|
91
|
+
e.error || e.errors ? (a(), V(t(P), {
|
|
92
|
+
key: 0,
|
|
93
|
+
id: e.id,
|
|
94
|
+
name: e.name,
|
|
95
|
+
error: e.error,
|
|
96
|
+
errors: e.errors
|
|
97
|
+
}, {
|
|
98
|
+
default: y(({ error: i }) => [
|
|
99
|
+
n("div", j, [
|
|
100
|
+
D(c(i), 1),
|
|
101
|
+
r[2] || (r[2] = n("br", null, null, -1))
|
|
102
|
+
])
|
|
103
|
+
]),
|
|
104
|
+
_: 1
|
|
105
|
+
}, 8, ["id", "name", "error", "errors"])) : s("", !0)
|
|
106
|
+
]),
|
|
107
|
+
l(o.$slots, "feedback", u(m({ feedback: e.feedback })), () => [
|
|
108
|
+
$(t(x), { feedback: e.feedback }, {
|
|
109
|
+
default: y(({ feedback: i }) => [
|
|
110
|
+
n("div", q, c(i), 1)
|
|
111
|
+
]),
|
|
112
|
+
_: 1
|
|
113
|
+
}, 8, ["feedback"])
|
|
114
|
+
]),
|
|
115
|
+
l(o.$slots, "help", u(m({ helpText: e.helpText })), () => [
|
|
116
|
+
e.helpText ? (a(), d("small", {
|
|
117
|
+
key: 0,
|
|
118
|
+
ref: "help",
|
|
119
|
+
class: "form-help"
|
|
120
|
+
}, c(e.helpText), 513)) : s("", !0)
|
|
121
|
+
])
|
|
122
|
+
], 2));
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
export {
|
|
126
|
+
L as InputField
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=input-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-field.js","sources":["../src/InputField.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"ModelValue, Value\">\nimport { ActivityIndicator } from '@vue-interface/activity-indicator';\nimport type { FormControlEvents, FormControlProps, FormControlSlots } from '@vue-interface/form-control';\nimport { FormControlErrors, FormControlFeedback, useFormControl } from '@vue-interface/form-control';\nimport { InputHTMLAttributes, ref } from 'vue';\n\nconst props = withDefaults(defineProps<InputFieldProps<ModelValue,Value>>(), {\n formControlClass: 'form-control',\n labelClass: 'form-label'\n});\n\ndefineOptions({\n inheritAttrs: false\n});\n\nconst model = defineModel<ModelValue>();\n\ndefineSlots<FormControlSlots<InputFieldControlSizePrefix,ModelValue>>();\n\nconst emit = defineEmits<FormControlEvents<ModelValue>>();\n\nconst {\n controlAttributes,\n formGroupClasses,\n listeners\n} = useFormControl<InputHTMLAttributes, InputFieldControlSizePrefix, ModelValue, Value>({ model, props, emit });\n\nconst field = ref<HTMLInputElement>();\n</script>\n\n<script lang=\"ts\">\nexport type InputFieldControlSizePrefix = 'form-control';\n\nexport type InputFieldProps<ModelValue, Value> = FormControlProps<\n InputHTMLAttributes, \n InputFieldControlSizePrefix, \n ModelValue, \n Value\n>;\n</script>\n\n<template>\n <div\n class=\"input-field\"\n :class=\"formGroupClasses\">\n <slot name=\"label\">\n <label\n v-if=\"label\"\n ref=\"label\"\n :class=\"labelClass\"\n :for=\"controlAttributes.id\">\n {{ label }}\n </label>\n </slot>\n \n <div class=\"form-control-inner\">\n <slot\n name=\"control\"\n v-bind=\"{ controlAttributes, listeners }\">\n <div\n v-if=\"$slots.icon\"\n class=\"form-control-inner-icon\"\n @click=\"field?.focus()\">\n <slot name=\"icon\" />\n </div>\n <input\n ref=\"field\"\n v-model=\"model\"\n v-bind=\"{...controlAttributes, ...listeners}\">\n </slot>\n \n <div class=\"form-control-activity-indicator\">\n <slot name=\"activity\">\n <Transition name=\"input-field-fade\">\n <ActivityIndicator\n v-if=\"activity && indicator\"\n key=\"activity\"\n ref=\"activity\"\n :type=\"indicator\"\n :size=\"indicatorSize\" />\n </Transition>\n </slot>\n </div>\n </div>\n\n <slot\n name=\"errors\"\n v-bind=\"{ error, errors, id: $attrs.id, name: $attrs.name }\"> \n <FormControlErrors\n v-if=\"!!(error || errors)\"\n :id=\"id\"\n v-slot=\"{ error }\"\n :name=\"name\"\n :error=\"error\"\n :errors=\"errors\">\n <div\n invalid\n class=\"invalid-feedback\">\n {{ error }}<br>\n </div>\n </FormControlErrors>\n </slot>\n \n <slot\n name=\"feedback\"\n v-bind=\"{ feedback }\">\n <FormControlFeedback\n v-slot=\"{ feedback }\"\n :feedback=\"feedback\">\n <div\n valid\n class=\"valid-feedback\">\n {{ feedback }}\n </div>\n </FormControlFeedback>\n </slot>\n\n <slot\n name=\"help\"\n v-bind=\"{ helpText }\">\n <small\n v-if=\"helpText\"\n ref=\"help\"\n class=\"form-help\">\n {{ helpText }}\n </small>\n </slot>\n </div>\n</template>"],"names":["props","__props","model","_useModel","emit","__emit","controlAttributes","formGroupClasses","listeners","useFormControl","field","ref","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_hoisted_1","_createElementVNode","_hoisted_2","_normalizeProps","_guardReactiveProps","$slots","_cache","$event","_withDirectives","_mergeProps","_hoisted_3","_createVNode","_Transition","_createBlock","ActivityIndicator","$attrs","FormControlErrors","_withCtx","error","_hoisted_4","FormControlFeedback","feedback","_hoisted_5","_toDisplayString"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(r,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@vue-interface/activity-indicator"),require("@vue-interface/form-control")):typeof define=="function"&&define.amd?define(["exports","vue","@vue-interface/activity-indicator","@vue-interface/form-control"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.InputField={},r.Vue,r.VueInterfaceActivityIndicator,r.VueInterfaceFormControl))})(this,(function(r,e,m,i){"use strict";const f=["for"],y={class:"form-control-inner"},k={class:"form-control-activity-indicator"},u={invalid:"",class:"invalid-feedback"},b={valid:"",class:"valid-feedback"},p=e.defineComponent({inheritAttrs:!1,__name:"InputField",props:e.mergeModels({activity:{type:Boolean},disabled:{type:Boolean},error:{},errors:{},feedback:{},formControlClass:{default:"form-control"},helpText:{},id:{},indicator:{},indicatorSize:{},invalid:{type:Boolean},label:{},labelClass:{default:"form-label"},modelValue:{},name:{},plaintext:{type:Boolean},size:{},color:{},readonly:{type:Boolean},valid:{type:Boolean},value:{}},{modelValue:{},modelModifiers:{}}),emits:e.mergeModels(["update:modelValue","blur","focus","focusin","focusout","click","doubleclick","contextmenu","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave","mousemove","keydown","keyup","keypress","select","selectionchange","invalid","submit","reset","scroll","wheel","copy","cut","paste","touchstart","touchend","touchmove","touchcancel","change","input","beforeinput"],["update:modelValue"]),setup(t,{emit:h}){const V=t,a=e.useModel(t,"modelValue"),C=h,{controlAttributes:d,formGroupClasses:B,listeners:s}=i.useFormControl({model:a,props:V,emit:C}),c=e.ref();return(o,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["input-field",e.unref(B)])},[e.renderSlot(o.$slots,"label",{},()=>[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,ref:"label",class:e.normalizeClass(t.labelClass),for:e.unref(d).id},e.toDisplayString(t.label),11,f)):e.createCommentVNode("",!0)]),e.createElementVNode("div",y,[e.renderSlot(o.$slots,"control",e.normalizeProps(e.guardReactiveProps({controlAttributes:e.unref(d),listeners:e.unref(s)})),()=>[o.$slots.icon?(e.openBlock(),e.createElementBlock("div",{key:0,class:"form-control-inner-icon",onClick:l[0]||(l[0]=n=>c.value?.focus())},[e.renderSlot(o.$slots,"icon")])):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",e.mergeProps({ref_key:"field",ref:c,"onUpdate:modelValue":l[1]||(l[1]=n=>a.value=n)},{...e.unref(d),...e.unref(s)}),null,16),[[e.vModelDynamic,a.value]])]),e.createElementVNode("div",k,[e.renderSlot(o.$slots,"activity",{},()=>[e.createVNode(e.Transition,{name:"input-field-fade"},{default:e.withCtx(()=>[t.activity&&t.indicator?(e.openBlock(),e.createBlock(e.unref(m.ActivityIndicator),{key:"activity",ref:"activity",type:t.indicator,size:t.indicatorSize},null,8,["type","size"])):e.createCommentVNode("",!0)]),_:1})])])]),e.renderSlot(o.$slots,"errors",e.normalizeProps(e.guardReactiveProps({error:t.error,errors:t.errors,id:o.$attrs.id,name:o.$attrs.name})),()=>[t.error||t.errors?(e.openBlock(),e.createBlock(e.unref(i.FormControlErrors),{key:0,id:t.id,name:t.name,error:t.error,errors:t.errors},{default:e.withCtx(({error:n})=>[e.createElementVNode("div",u,[e.createTextVNode(e.toDisplayString(n),1),l[2]||(l[2]=e.createElementVNode("br",null,null,-1))])]),_:1},8,["id","name","error","errors"])):e.createCommentVNode("",!0)]),e.renderSlot(o.$slots,"feedback",e.normalizeProps(e.guardReactiveProps({feedback:t.feedback})),()=>[e.createVNode(e.unref(i.FormControlFeedback),{feedback:t.feedback},{default:e.withCtx(({feedback:n})=>[e.createElementVNode("div",b,e.toDisplayString(n),1)]),_:1},8,["feedback"])]),e.renderSlot(o.$slots,"help",e.normalizeProps(e.guardReactiveProps({helpText:t.helpText})),()=>[t.helpText?(e.openBlock(),e.createElementBlock("small",{key:0,ref:"help",class:"form-help"},e.toDisplayString(t.helpText),513)):e.createCommentVNode("",!0)])],2))}});r.InputField=p,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
|
|
2
|
+
//# sourceMappingURL=input-field.umd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-field.umd.cjs","sources":["../src/InputField.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"ModelValue, Value\">\nimport { ActivityIndicator } from '@vue-interface/activity-indicator';\nimport type { FormControlEvents, FormControlProps, FormControlSlots } from '@vue-interface/form-control';\nimport { FormControlErrors, FormControlFeedback, useFormControl } from '@vue-interface/form-control';\nimport { InputHTMLAttributes, ref } from 'vue';\n\nconst props = withDefaults(defineProps<InputFieldProps<ModelValue,Value>>(), {\n formControlClass: 'form-control',\n labelClass: 'form-label'\n});\n\ndefineOptions({\n inheritAttrs: false\n});\n\nconst model = defineModel<ModelValue>();\n\ndefineSlots<FormControlSlots<InputFieldControlSizePrefix,ModelValue>>();\n\nconst emit = defineEmits<FormControlEvents<ModelValue>>();\n\nconst {\n controlAttributes,\n formGroupClasses,\n listeners\n} = useFormControl<InputHTMLAttributes, InputFieldControlSizePrefix, ModelValue, Value>({ model, props, emit });\n\nconst field = ref<HTMLInputElement>();\n</script>\n\n<script lang=\"ts\">\nexport type InputFieldControlSizePrefix = 'form-control';\n\nexport type InputFieldProps<ModelValue, Value> = FormControlProps<\n InputHTMLAttributes, \n InputFieldControlSizePrefix, \n ModelValue, \n Value\n>;\n</script>\n\n<template>\n <div\n class=\"input-field\"\n :class=\"formGroupClasses\">\n <slot name=\"label\">\n <label\n v-if=\"label\"\n ref=\"label\"\n :class=\"labelClass\"\n :for=\"controlAttributes.id\">\n {{ label }}\n </label>\n </slot>\n \n <div class=\"form-control-inner\">\n <slot\n name=\"control\"\n v-bind=\"{ controlAttributes, listeners }\">\n <div\n v-if=\"$slots.icon\"\n class=\"form-control-inner-icon\"\n @click=\"field?.focus()\">\n <slot name=\"icon\" />\n </div>\n <input\n ref=\"field\"\n v-model=\"model\"\n v-bind=\"{...controlAttributes, ...listeners}\">\n </slot>\n \n <div class=\"form-control-activity-indicator\">\n <slot name=\"activity\">\n <Transition name=\"input-field-fade\">\n <ActivityIndicator\n v-if=\"activity && indicator\"\n key=\"activity\"\n ref=\"activity\"\n :type=\"indicator\"\n :size=\"indicatorSize\" />\n </Transition>\n </slot>\n </div>\n </div>\n\n <slot\n name=\"errors\"\n v-bind=\"{ error, errors, id: $attrs.id, name: $attrs.name }\"> \n <FormControlErrors\n v-if=\"!!(error || errors)\"\n :id=\"id\"\n v-slot=\"{ error }\"\n :name=\"name\"\n :error=\"error\"\n :errors=\"errors\">\n <div\n invalid\n class=\"invalid-feedback\">\n {{ error }}<br>\n </div>\n </FormControlErrors>\n </slot>\n \n <slot\n name=\"feedback\"\n v-bind=\"{ feedback }\">\n <FormControlFeedback\n v-slot=\"{ feedback }\"\n :feedback=\"feedback\">\n <div\n valid\n class=\"valid-feedback\">\n {{ feedback }}\n </div>\n </FormControlFeedback>\n </slot>\n\n <slot\n name=\"help\"\n v-bind=\"{ helpText }\">\n <small\n v-if=\"helpText\"\n ref=\"help\"\n class=\"form-help\">\n {{ helpText }}\n </small>\n </slot>\n </div>\n</template>"],"names":["props","__props","model","_useModel","emit","__emit","controlAttributes","formGroupClasses","listeners","useFormControl","field","ref","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_hoisted_1","_createElementVNode","_hoisted_2","_normalizeProps","_guardReactiveProps","$slots","_cache","$event","_withDirectives","_mergeProps","_hoisted_3","_createVNode","_Transition","_createBlock","ActivityIndicator","$attrs","FormControlErrors","_withCtx","error","_hoisted_4","FormControlFeedback","feedback","_hoisted_5","_toDisplayString"],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { FormControlProps, FormControlSlots } from '@vue-interface/form-control';
|
|
2
|
+
import { InputHTMLAttributes } from 'vue';
|
|
3
|
+
export type InputFieldControlSizePrefix = 'form-control';
|
|
4
|
+
export type InputFieldProps<ModelValue, Value> = FormControlProps<InputHTMLAttributes, InputFieldControlSizePrefix, ModelValue, Value>;
|
|
5
|
+
declare const _default: <ModelValue, Value>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
6
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
7
|
+
readonly onInput?: ((event: Event) => any) | undefined;
|
|
8
|
+
readonly onSelect?: ((event: Event) => any) | undefined;
|
|
9
|
+
readonly "onUpdate:modelValue"?: ((...args: unknown[]) => any) | undefined;
|
|
10
|
+
readonly onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
11
|
+
readonly onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
12
|
+
readonly onFocusin?: ((event: FocusEvent) => any) | undefined;
|
|
13
|
+
readonly onFocusout?: ((event: FocusEvent) => any) | undefined;
|
|
14
|
+
readonly onClick?: ((event: MouseEvent) => any) | undefined;
|
|
15
|
+
readonly onDoubleclick?: ((event: MouseEvent) => any) | undefined;
|
|
16
|
+
readonly onContextmenu?: ((event: MouseEvent) => any) | undefined;
|
|
17
|
+
readonly onMousedown?: ((event: MouseEvent) => any) | undefined;
|
|
18
|
+
readonly onMouseup?: ((event: MouseEvent) => any) | undefined;
|
|
19
|
+
readonly onMouseover?: ((event: MouseEvent) => any) | undefined;
|
|
20
|
+
readonly onMouseout?: ((event: MouseEvent) => any) | undefined;
|
|
21
|
+
readonly onMouseenter?: ((event: MouseEvent) => any) | undefined;
|
|
22
|
+
readonly onMouseleave?: ((event: MouseEvent) => any) | undefined;
|
|
23
|
+
readonly onMousemove?: ((event: MouseEvent) => any) | undefined;
|
|
24
|
+
readonly onKeydown?: ((event: KeyboardEvent) => any) | undefined;
|
|
25
|
+
readonly onKeyup?: ((event: KeyboardEvent) => any) | undefined;
|
|
26
|
+
readonly onKeypress?: ((event: KeyboardEvent) => any) | undefined;
|
|
27
|
+
readonly onSelectionchange?: ((event: Event) => any) | undefined;
|
|
28
|
+
readonly onInvalid?: ((event: Event) => any) | undefined;
|
|
29
|
+
readonly onSubmit?: ((event: Event) => any) | undefined;
|
|
30
|
+
readonly onReset?: ((event: Event) => any) | undefined;
|
|
31
|
+
readonly onScroll?: ((event: Event) => any) | undefined;
|
|
32
|
+
readonly onWheel?: ((event: WheelEvent) => any) | undefined;
|
|
33
|
+
readonly onCopy?: ((event: ClipboardEvent) => any) | undefined;
|
|
34
|
+
readonly onCut?: ((event: ClipboardEvent) => any) | undefined;
|
|
35
|
+
readonly onPaste?: ((event: ClipboardEvent) => any) | undefined;
|
|
36
|
+
readonly onTouchstart?: ((event: TouchEvent) => any) | undefined;
|
|
37
|
+
readonly onTouchend?: ((event: TouchEvent) => any) | undefined;
|
|
38
|
+
readonly onTouchmove?: ((event: TouchEvent) => any) | undefined;
|
|
39
|
+
readonly onTouchcancel?: ((event: TouchEvent) => any) | undefined;
|
|
40
|
+
readonly onChange?: ((event: Event) => any) | undefined;
|
|
41
|
+
readonly onBeforeinput?: ((event: Event) => any) | undefined;
|
|
42
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onCopy" | "onCut" | "onPaste" | "onFocus" | "onFocusin" | "onFocusout" | "onBlur" | "onChange" | "onBeforeinput" | "onInput" | "onReset" | "onSubmit" | "onInvalid" | "onKeydown" | "onKeypress" | "onKeyup" | "onMousedown" | "onMouseenter" | "onMouseleave" | "onMousemove" | "onMouseout" | "onMouseover" | "onMouseup" | "onSelect" | "onScroll" | "onTouchcancel" | "onTouchend" | "onTouchmove" | "onTouchstart" | "onClick" | "onContextmenu" | "onWheel" | "onDoubleclick" | "onSelectionchange" | "onUpdate:modelValue"> & ({
|
|
43
|
+
modelValue?: ModelValue;
|
|
44
|
+
} & {
|
|
45
|
+
activity?: boolean;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
error?: import('@vue-interface/form-control').FormControlErrorProp;
|
|
48
|
+
errors?: import('@vue-interface/form-control').FormControlErrorPropArray | import('@vue-interface/form-control').FormControlErrorPropRecord;
|
|
49
|
+
feedback?: import('@vue-interface/form-control').FormControlFeedbackProp;
|
|
50
|
+
formControlClass?: string;
|
|
51
|
+
helpText?: string;
|
|
52
|
+
id?: string;
|
|
53
|
+
indicator?: import('vue').Component;
|
|
54
|
+
indicatorSize?: import('@vue-interface/activity-indicator').ActivityIndicatorSize;
|
|
55
|
+
invalid?: boolean;
|
|
56
|
+
label?: string;
|
|
57
|
+
labelClass?: string;
|
|
58
|
+
modelValue?: ModelValue | undefined;
|
|
59
|
+
name?: string;
|
|
60
|
+
plaintext?: boolean;
|
|
61
|
+
size?: import('@vue-interface/form-control').FormControlSize<"form-control", import('@vue-interface/form-control').PredeterminedSize> | undefined;
|
|
62
|
+
color?: string;
|
|
63
|
+
readonly?: boolean;
|
|
64
|
+
valid?: boolean;
|
|
65
|
+
value?: Value | undefined;
|
|
66
|
+
} & InputHTMLAttributes) & Partial<{}>> & import('vue').PublicProps;
|
|
67
|
+
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
68
|
+
attrs: any;
|
|
69
|
+
slots: Readonly<FormControlSlots<"form-control", ModelValue>> & FormControlSlots<"form-control", ModelValue>;
|
|
70
|
+
emit: (((evt: "input", event: Event) => void) & ((evt: "select", event: Event) => void) & ((evt: "update:modelValue", value: ModelValue) => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "focusin", event: FocusEvent) => void) & ((evt: "focusout", event: FocusEvent) => void) & ((evt: "click", event: MouseEvent) => void) & ((evt: "doubleclick", event: MouseEvent) => void) & ((evt: "contextmenu", event: MouseEvent) => void) & ((evt: "mousedown", event: MouseEvent) => void) & ((evt: "mouseup", event: MouseEvent) => void) & ((evt: "mouseover", event: MouseEvent) => void) & ((evt: "mouseout", event: MouseEvent) => void) & ((evt: "mouseenter", event: MouseEvent) => void) & ((evt: "mouseleave", event: MouseEvent) => void) & ((evt: "mousemove", event: MouseEvent) => void) & ((evt: "keydown", event: KeyboardEvent) => void) & ((evt: "keyup", event: KeyboardEvent) => void) & ((evt: "keypress", event: KeyboardEvent) => void) & ((evt: "selectionchange", event: Event) => void) & ((evt: "invalid", event: Event) => void) & ((evt: "submit", event: Event) => void) & ((evt: "reset", event: Event) => void) & ((evt: "scroll", event: Event) => void) & ((evt: "wheel", event: WheelEvent) => void) & ((evt: "copy", event: ClipboardEvent) => void) & ((evt: "cut", event: ClipboardEvent) => void) & ((evt: "paste", event: ClipboardEvent) => void) & ((evt: "touchstart", event: TouchEvent) => void) & ((evt: "touchend", event: TouchEvent) => void) & ((evt: "touchmove", event: TouchEvent) => void) & ((evt: "touchcancel", event: TouchEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "beforeinput", event: Event) => void)) & ((evt: "update:modelValue", value: ModelValue) => void);
|
|
71
|
+
}>) => import('vue').VNode & {
|
|
72
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
73
|
+
};
|
|
74
|
+
export default _default;
|
|
75
|
+
type __VLS_PrettifyLocal<T> = {
|
|
76
|
+
[K in keyof T]: T[K];
|
|
77
|
+
} & {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue-interface/input-field",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "A Vue input field component.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/input-field.umd.cjs",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"browserslist": "last 2 versions, > 0.5%, ie >= 11",
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|
|
20
|
-
"url": "git+https://github.com/vue-interface/
|
|
20
|
+
"url": "git+https://github.com/vue-interface/vue-interface.github.io"
|
|
21
21
|
},
|
|
22
22
|
"keywords": [
|
|
23
23
|
"Input",
|
|
@@ -28,15 +28,22 @@
|
|
|
28
28
|
"Bootstrap"
|
|
29
29
|
],
|
|
30
30
|
"author": "Justin Kimbrell",
|
|
31
|
-
"license": "
|
|
31
|
+
"license": "MIT",
|
|
32
32
|
"bugs": {
|
|
33
|
-
"url": "https://github.com/vue-interface/
|
|
33
|
+
"url": "https://github.com/vue-interface/vue-interface.github.io"
|
|
34
34
|
},
|
|
35
|
-
"homepage": "https://
|
|
35
|
+
"homepage": "https://vue-interface.github.io/packages/input-field",
|
|
36
|
+
"readme": "README.md",
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"index.css",
|
|
40
|
+
"README.md",
|
|
41
|
+
"LICENSE"
|
|
42
|
+
],
|
|
36
43
|
"peerDependencies": {
|
|
37
44
|
"vue": "^3.3.4",
|
|
38
|
-
"@vue-interface/activity-indicator": "3.0.
|
|
39
|
-
"@vue-interface/form-control": "2.0.
|
|
45
|
+
"@vue-interface/activity-indicator": "3.0.2",
|
|
46
|
+
"@vue-interface/form-control": "2.0.2"
|
|
40
47
|
},
|
|
41
48
|
"scripts": {
|
|
42
49
|
"dev": "vite",
|
package/CHANGELOG.md
DELETED
package/demo.css
DELETED
package/docs/input-field.md
DELETED
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Input Field
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
<script setup>
|
|
6
|
-
import '../demo.css'
|
|
7
|
-
import { ref, onMounted } from 'vue'
|
|
8
|
-
import InputField from '../src/InputField.vue';
|
|
9
|
-
import { Dots, Spinner, Pulse } from '@vue-interface/activity-indicator'
|
|
10
|
-
|
|
11
|
-
const value = ref()
|
|
12
|
-
const showActivity = ref(false)
|
|
13
|
-
|
|
14
|
-
onMounted(() => {
|
|
15
|
-
setTimeout(() => {
|
|
16
|
-
value.value = 'testing...'
|
|
17
|
-
}, 1000)
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
function onChange(newValue) {
|
|
21
|
-
console.log('change', newValue)
|
|
22
|
-
}
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
# Input Field
|
|
26
|
-
|
|
27
|
-
The `input-field` component provides flexible and customizable input fields with customizable sizes and states.
|
|
28
|
-
|
|
29
|
-
## Variations and States
|
|
30
|
-
|
|
31
|
-
<!-- #region variations -->
|
|
32
|
-
<input-field v-model="value" label="Text Field" placeholder="Some placeholder" class="mb-3" @change="onChange"></input-field>
|
|
33
|
-
<input-field type="password" label="Password Field" class="mb-3"></input-field>
|
|
34
|
-
<input-field label="Descriptive Text Field" help-text="Some helpful text goes here." class="mb-3"></input-field>
|
|
35
|
-
<input-field type="email" label="Email Field" placeholder="you@example.com" class="mb-3"></input-field>
|
|
36
|
-
<input-field label="Plain Text" placeholder="Type something here..." class="mb-3" plaintext></input-field>
|
|
37
|
-
<input-field label="Readonly" placeholder="Type something here..." class="mb-3" readonly></input-field>
|
|
38
|
-
<input-field label="Readonly (Disabled)" placeholder="Type something here..." class="mb-3" readonly disabled></input-field>
|
|
39
|
-
<input-field label="Disabled" placeholder="Type something here..." class="mb-3" disabled></input-field>
|
|
40
|
-
<!-- #endregion variations -->
|
|
41
|
-
|
|
42
|
-
::: details Show Code
|
|
43
|
-
<<< @/packages/input-field/docs/input-field.md#variations{html}
|
|
44
|
-
:::
|
|
45
|
-
|
|
46
|
-
## Sizes
|
|
47
|
-
|
|
48
|
-
Customize the `input-fields` size using a [predetermined size](#predetermined-sizes), [tailwind's numeric sizing classes](#tailwind-sizes), or an [arbitrary](#arbitrary-sizes) CSS length unit.
|
|
49
|
-
|
|
50
|
-
### Predetermined Sizes
|
|
51
|
-
|
|
52
|
-
The size can be customized using predetermined `size prop` values: `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`. Use the syntax: `form-control-[size]`.
|
|
53
|
-
|
|
54
|
-
<!-- #region predeterminedSizes -->
|
|
55
|
-
<input-field label="xs" size="form-control-xs" class="mb-3"></input-field>
|
|
56
|
-
<input-field label="sm" size="form-control-sm" class="mb-3"></input-field>
|
|
57
|
-
<input-field label="md" size="form-control-md" class="mb-3"></input-field>
|
|
58
|
-
<input-field label="lg" size="form-control-lg" class="mb-3"></input-field>
|
|
59
|
-
<input-field label="xl" size="form-control-xl" class="mb-3"></input-field>
|
|
60
|
-
<input-field label="2xl" size="form-control-2xl" class="mb-3"></input-field>
|
|
61
|
-
<input-field label="3xl" size="form-control-3xl" class="mb-3"></input-field>
|
|
62
|
-
<input-field label="4xl" size="form-control-4xl" class="mb-3"></input-field>
|
|
63
|
-
<input-field label="5xl" size="form-control-5xl" class="mb-3"></input-field>
|
|
64
|
-
<!-- #endregion predeterminedSizes -->
|
|
65
|
-
|
|
66
|
-
::: details Show Code
|
|
67
|
-
<<< @/packages/input-field/docs/input-field.md#predeterminedSizes{html}
|
|
68
|
-
:::
|
|
69
|
-
|
|
70
|
-
### Tailwind Sizes
|
|
71
|
-
|
|
72
|
-
For more granular control over sizes, use Tailwind's numeric sizing scale classes: `form-control-1` - `form-control-96`.
|
|
73
|
-
|
|
74
|
-
<!-- #region tailwindSizes -->
|
|
75
|
-
<input-field label="form-control-3" size="form-control-3" class="mb-3"></input-field>
|
|
76
|
-
<input-field label="form-control-4" size="form-control-4" class="mb-3"></input-field>
|
|
77
|
-
<input-field label="form-control-5" size="form-control-5" class="mb-3"></input-field>
|
|
78
|
-
<!-- #endregion tailwindSizes -->
|
|
79
|
-
|
|
80
|
-
::: details Show Code
|
|
81
|
-
<<< @/packages/input-field/docs/input-field.md#tailwindSizes{html}
|
|
82
|
-
:::
|
|
83
|
-
|
|
84
|
-
### Arbitrary Sizes
|
|
85
|
-
|
|
86
|
-
For precise sizing, specify exact pixel values using the syntax `form-control-[Npx]` or any other CSS length units (`rem`, `em`, `mm`, etc.).
|
|
87
|
-
|
|
88
|
-
<!-- #region arbitrarySizes -->
|
|
89
|
-
<input-field label="form-control-[16px]" size="form-control-[16px]" class="mb-3"></input-field>
|
|
90
|
-
<input-field label="form-control-[1.5rem]" size="form-control-[1.5rem]" class="mb-3"></input-field>
|
|
91
|
-
<!-- #endregion arbitrarySizes -->
|
|
92
|
-
|
|
93
|
-
::: details Show Code
|
|
94
|
-
<<< @/packages/input-field/docs/input-field.md#arbitrarySizes{html}
|
|
95
|
-
:::
|
|
96
|
-
|
|
97
|
-
## Icons
|
|
98
|
-
|
|
99
|
-
The following `input-field` components combine the an input field with a [heroicon](https://heroicons.com/). Customize the size of input-field/icon combinations using the same [sizing prop values](#sizes) described above.
|
|
100
|
-
|
|
101
|
-
::: warning Add an Icon
|
|
102
|
-
1. Add the `<template #icon>` header
|
|
103
|
-
2. Select `Copy SVG` from the heroicon website
|
|
104
|
-
3. Paste the SVG inside the `template` header.
|
|
105
|
-
:::
|
|
106
|
-
|
|
107
|
-
<!-- #region icons -->
|
|
108
|
-
<input-field label="xs Icon" size="form-control-xs" class="form-control-xs mb-3">
|
|
109
|
-
<template #icon>
|
|
110
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
111
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
112
|
-
</svg>
|
|
113
|
-
</template>
|
|
114
|
-
</input-field>
|
|
115
|
-
|
|
116
|
-
<input-field label="sm Icon" size="form-control-sm" class="form-control-sm mb-3">
|
|
117
|
-
<template #icon>
|
|
118
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
119
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
120
|
-
</svg>
|
|
121
|
-
</template>
|
|
122
|
-
</input-field>
|
|
123
|
-
|
|
124
|
-
<input-field label="md Icon" size="form-control-md" class="form-control-md mb-3">
|
|
125
|
-
<template #icon>
|
|
126
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
127
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
128
|
-
</svg>
|
|
129
|
-
</template>
|
|
130
|
-
</input-field>
|
|
131
|
-
|
|
132
|
-
<input-field label="lg Icon" size="form-control-lg" class="form-control-lg mb-3">
|
|
133
|
-
<template #icon>
|
|
134
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
135
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
136
|
-
</svg>
|
|
137
|
-
</template>
|
|
138
|
-
</input-field>
|
|
139
|
-
|
|
140
|
-
<input-field label="xl Icon" size="form-control-xl" class="form-control-xl mb-3">
|
|
141
|
-
<template #icon>
|
|
142
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
143
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
144
|
-
</svg>
|
|
145
|
-
</template>
|
|
146
|
-
</input-field>
|
|
147
|
-
|
|
148
|
-
<input-field label="2xl Icon" size="form-control-2xl" class="form-control-2xl mb-3">
|
|
149
|
-
<template #icon>
|
|
150
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
151
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
152
|
-
</svg>
|
|
153
|
-
</template>
|
|
154
|
-
</input-field>
|
|
155
|
-
|
|
156
|
-
<input-field label="3xl Icon" size="form-control-3xl" class="form-control-3xl mb-3">
|
|
157
|
-
<template #icon>
|
|
158
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
159
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
160
|
-
</svg>
|
|
161
|
-
</template>
|
|
162
|
-
</input-field>
|
|
163
|
-
|
|
164
|
-
<input-field label="4xl Icon" size="form-control-4xl" class="form-control-4xl mb-3">
|
|
165
|
-
<template #icon>
|
|
166
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
167
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
168
|
-
</svg>
|
|
169
|
-
</template>
|
|
170
|
-
</input-field>
|
|
171
|
-
|
|
172
|
-
<input-field label="5xl Icon" size="form-control-5xl" class="form-control-5xl mb-3">
|
|
173
|
-
<template #icon>
|
|
174
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
175
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
176
|
-
</svg>
|
|
177
|
-
</template>
|
|
178
|
-
</input-field>
|
|
179
|
-
|
|
180
|
-
<input-field label="form-control-3 Icon" size="form-control-3" class="form-control-3 mb-3">
|
|
181
|
-
<template #icon>
|
|
182
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
183
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
184
|
-
</svg>
|
|
185
|
-
</template>
|
|
186
|
-
</input-field>
|
|
187
|
-
|
|
188
|
-
<input-field label="form-control-4 Icon" size="form-control-4" class="form-control-4 mb-3">
|
|
189
|
-
<template #icon>
|
|
190
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
191
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
192
|
-
</svg>
|
|
193
|
-
</template>
|
|
194
|
-
</input-field>
|
|
195
|
-
|
|
196
|
-
<input-field label="form-control-[16px] Icon" size="form-control-[16px]" class="form-control-[16px] mb-3">
|
|
197
|
-
<template #icon>
|
|
198
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
199
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
200
|
-
</svg>
|
|
201
|
-
</template>
|
|
202
|
-
</input-field>
|
|
203
|
-
<!-- #endregion icons -->
|
|
204
|
-
|
|
205
|
-
::: details Show Code
|
|
206
|
-
<<< @/packages/input-field/docs/input-field.md#icons{html}
|
|
207
|
-
:::
|
|
208
|
-
|
|
209
|
-
## With Activity
|
|
210
|
-
|
|
211
|
-
Combine [activity indicators](/packages/activity-indicator/docs/activity-indicator) with `input-fields` to show a loading icon after input.
|
|
212
|
-
|
|
213
|
-
<!-- #region withActivity -->
|
|
214
|
-
<input-field label="Small" size="form-control-sm" :indicator="Dots" indicator-size="xs" :activity="showActivity" class="mb-3"></input-field>
|
|
215
|
-
<input-field label="Medium" size="form-control-md" :indicator="Pulse" indicator-size="md" :activity="showActivity" class="mb-3"></input-field>
|
|
216
|
-
<input-field label="Large" size="form-control-lg" :indicator="Spinner" indicator-size="lg" :activity="showActivity" class="mb-3"></input-field>
|
|
217
|
-
|
|
218
|
-
<button type="button" class="underline text-blue-600" @click="showActivity = !showActivity">
|
|
219
|
-
<span v-if="!showActivity">Show</span><span v-else>Hide</span> Activity
|
|
220
|
-
</button>
|
|
221
|
-
<!-- #endregion withActivity -->
|
|
222
|
-
|
|
223
|
-
::: details Show Code
|
|
224
|
-
<<< @/packages/input-field/docs/input-field.md#withActivity{html}
|
|
225
|
-
:::
|
|
226
|
-
|
|
227
|
-
## Validation
|
|
228
|
-
|
|
229
|
-
Validation classes provides error-checking styling for the input-field component. The `invalid-feedback` and `valid-feedback` classes provide the styling for invalid and valid elements, respectively.
|
|
230
|
-
|
|
231
|
-
<!-- #region validation -->
|
|
232
|
-
<input-field label="Empty Array of Errors" :errors="[]" class="mb-3"></input-field>
|
|
233
|
-
|
|
234
|
-
<input-field label="Single Inline Error" error="This is an inline error." class="mb-3 invalid-feedback"></input-field>
|
|
235
|
-
<input-field label="Array of Errors" :errors="['First Error', 'Second Error']" class="mb-3 invalid-feedback"></input-field>
|
|
236
|
-
<input-field name="test" label="Multiple Errors From Object" :errors="{'test': ['This is an inline error #1.', 'This is an inline error #2.']}" class="mb-3 invalid-feedback"></input-field>
|
|
237
|
-
|
|
238
|
-
<input-field label="Valid Field" valid class="mb-3 valid-feedback"></input-field>
|
|
239
|
-
<input-field label="Valid Field with Feedback" valid feedback="This is some success message." class="mb-3 valid-feedback"></input-field>
|
|
240
|
-
<input-field label="Valid Field with Array of Feedback" valid :feedback="['This is some success message.', 'This is some success message.']" class="mb-3 valid-feedback"></input-field>
|
|
241
|
-
<!-- #endregion validation -->
|
|
242
|
-
|
|
243
|
-
::: details Show Code
|
|
244
|
-
<<< @/packages/input-field/docs/input-field.md#validation{html}
|
|
245
|
-
:::
|
|
246
|
-
|
|
247
|
-
## Animated
|
|
248
|
-
|
|
249
|
-
The `input-field` animated component combines the tailwind `form-control-animated` classes to provide a custom animated component. Customize the size of animated input-field/icon combinations using the same [sizing prop values](#sizes) described above.
|
|
250
|
-
|
|
251
|
-
<!-- #region animated -->
|
|
252
|
-
<input-field v-model="value" label="Text Field" placeholder="Some placeholder" class="mb-3 form-control-animated"></input-field>
|
|
253
|
-
<input-field label="Text Field" placeholder="Some placeholder" class="mb-3 form-control-animated"></input-field>
|
|
254
|
-
<input-field label="Text Field" placeholder="Some placeholder" size="form-control-lg" class="mb-3 form-control-animated-lg"></input-field>
|
|
255
|
-
<!-- #endregion animated -->
|
|
256
|
-
|
|
257
|
-
::: details Show Code
|
|
258
|
-
<<< @/packages/input-field/docs/input-field.md#animated{html}
|
|
259
|
-
:::
|
|
260
|
-
|
|
261
|
-
### With Icons
|
|
262
|
-
|
|
263
|
-
Add an [icon](#icons) to the animated input-fields using the steps described above.
|
|
264
|
-
|
|
265
|
-
<!-- #region animatedIcons -->
|
|
266
|
-
<input-field label="xs Icon" placeholder="Some placeholder" size="form-control-xs" class="mb-3 form-control-animated-xs">
|
|
267
|
-
<template #icon>
|
|
268
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
269
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
270
|
-
</svg>
|
|
271
|
-
</template>
|
|
272
|
-
</input-field>
|
|
273
|
-
|
|
274
|
-
<input-field label="Small Icon" placeholder="Some placeholder" size="form-control-sm" class="mb-3 form-control-animated-sm">
|
|
275
|
-
<template #icon>
|
|
276
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
277
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
278
|
-
</svg>
|
|
279
|
-
</template>
|
|
280
|
-
</input-field>
|
|
281
|
-
|
|
282
|
-
<input-field label="Medium Icon" placeholder="Some placeholder" size="form-control-md" class="mb-3 form-control-animated-md">
|
|
283
|
-
<template #icon>
|
|
284
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
285
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
286
|
-
</svg>
|
|
287
|
-
</template>
|
|
288
|
-
</input-field>
|
|
289
|
-
|
|
290
|
-
<input-field label="Large Icon" placeholder="Some placeholder" size="form-control-lg" class="mb-3 form-control-animated-lg">
|
|
291
|
-
<template #icon>
|
|
292
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
293
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
294
|
-
</svg>
|
|
295
|
-
</template>
|
|
296
|
-
</input-field>
|
|
297
|
-
|
|
298
|
-
<input-field label="xl Icon" placeholder="Some placeholder" size="form-control-xl" class="mb-3 form-control-animated-xl">
|
|
299
|
-
<template #icon>
|
|
300
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
301
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
302
|
-
</svg>
|
|
303
|
-
</template>
|
|
304
|
-
</input-field>
|
|
305
|
-
|
|
306
|
-
<input-field label="2xl Icon" placeholder="Some placeholder" size="form-control-2xl" class="mb-3 form-control-animated-2xl">
|
|
307
|
-
<template #icon>
|
|
308
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
309
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
310
|
-
</svg>
|
|
311
|
-
</template>
|
|
312
|
-
</input-field>
|
|
313
|
-
|
|
314
|
-
<input-field label="3xl Icon" placeholder="Some placeholder" size="form-control-3xl" class="mb-3 form-control-animated-3xl">
|
|
315
|
-
<template #icon>
|
|
316
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
317
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
318
|
-
</svg>
|
|
319
|
-
</template>
|
|
320
|
-
</input-field>
|
|
321
|
-
|
|
322
|
-
<input-field label="4xl Icon" placeholder="Some placeholder" size="form-control-4xl" class="mb-3 form-control-animated-4xl">
|
|
323
|
-
<template #icon>
|
|
324
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
325
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
326
|
-
</svg>
|
|
327
|
-
</template>
|
|
328
|
-
</input-field>
|
|
329
|
-
|
|
330
|
-
<input-field label="5xl Icon" placeholder="Some placeholder" size="form-control-5xl" class="mb-3 form-control-animated-5xl">
|
|
331
|
-
<template #icon>
|
|
332
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
333
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
334
|
-
</svg>
|
|
335
|
-
</template>
|
|
336
|
-
</input-field>
|
|
337
|
-
|
|
338
|
-
<input-field label="Icon-4" placeholder="Some placeholder" size="form-control-4" class="mb-3 form-control-animated-4">
|
|
339
|
-
<template #icon>
|
|
340
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
341
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
342
|
-
</svg>
|
|
343
|
-
</template>
|
|
344
|
-
</input-field>
|
|
345
|
-
|
|
346
|
-
<input-field label="Icon-5" placeholder="Some placeholder" size="form-control-5" class="mb-3 form-control-animated-5">
|
|
347
|
-
<template #icon>
|
|
348
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
349
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
350
|
-
</svg>
|
|
351
|
-
</template>
|
|
352
|
-
</input-field>
|
|
353
|
-
|
|
354
|
-
<input-field label="Icon-6" placeholder="Some placeholder" size="form-control-6" class="mb-3 form-control-animated-6">
|
|
355
|
-
<template #icon>
|
|
356
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
357
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
358
|
-
</svg>
|
|
359
|
-
</template>
|
|
360
|
-
</input-field>
|
|
361
|
-
|
|
362
|
-
<input-field label="Icon-[16px]" placeholder="Some placeholder" size="form-control-[16px]" class="mb-3 form-control-animated-[16px]">
|
|
363
|
-
<template #icon>
|
|
364
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
365
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
366
|
-
</svg>
|
|
367
|
-
</template>
|
|
368
|
-
</input-field>
|
|
369
|
-
<!-- #endregion animatedIcons -->
|
|
370
|
-
|
|
371
|
-
::: details Show Code
|
|
372
|
-
<<< @/packages/input-field/docs/input-field.md#animatedIcons{html}
|
|
373
|
-
:::
|
package/index.html
DELETED
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
6
|
-
<title>InputField</title>
|
|
7
|
-
</head>
|
|
8
|
-
<body class="dark:bg-neutral-900 dark:text-white">
|
|
9
|
-
<div id="app" class="container mx-auto">
|
|
10
|
-
<h1 class="text-4xl mb-5">input-field</h1>
|
|
11
|
-
|
|
12
|
-
<div class="bg-neutral-100 dark:bg-neutral-800 p-3 mb-3">
|
|
13
|
-
Value: {{ value }}
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<input-field v-model="value" label="Text Field" placeholder="Some placeholder" class="mb-3" @change="onChange"></input-field>
|
|
17
|
-
<input-field type="password" label="Password Field" class="mb-3"></input-field>
|
|
18
|
-
<input-field label="Descriptive Text Field" help-text="Some helpful text goes here." class="mb-3"></input-field>
|
|
19
|
-
<input-field type="email" label="Email Field" placeholder="you@example.com" class="mb-3"></input-field>
|
|
20
|
-
<input-field label="Plain Text" placeholder="Type something here..." class="mb-3" plaintext></input-field>
|
|
21
|
-
<input-field label="Readonly" placeholder="Type something here..." class="mb-3" readonly></input-field>
|
|
22
|
-
<input-field label="Readonly (Disabled)" placeholder="Type something here..." class="mb-3" readonly disabled></input-field>
|
|
23
|
-
<input-field label="Disabled" placeholder="Type something here..." class="mb-3" disabled></input-field>
|
|
24
|
-
|
|
25
|
-
<h2 class="text-2xl mt-6 mb-3">Sizes</h2>
|
|
26
|
-
|
|
27
|
-
<input-field label="Small" size="form-control-sm" class="mb-3"></input-field>
|
|
28
|
-
<input-field label="Medium" size="form-control-md" class="mb-3"></input-field>
|
|
29
|
-
<input-field label="Large" size="form-control-lg" class="mb-3"></input-field>
|
|
30
|
-
|
|
31
|
-
<h2 class="text-2xl mt-6 mb-3">Icons</h2>
|
|
32
|
-
|
|
33
|
-
<input-field label="Small Icon" size="form-control-sm" class="form-control-sm mb-3">
|
|
34
|
-
<template #icon>
|
|
35
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
36
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
37
|
-
</svg>
|
|
38
|
-
</template>
|
|
39
|
-
</input-field>
|
|
40
|
-
|
|
41
|
-
<input-field label="Medium Icon" size="form-control-md" class="form-control-md mb-3">
|
|
42
|
-
<template #icon>
|
|
43
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
44
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
45
|
-
</svg>
|
|
46
|
-
</template>
|
|
47
|
-
</input-field>
|
|
48
|
-
|
|
49
|
-
<input-field label="Large Icon" size="form-control-lg" class="form-control-lg mb-3">
|
|
50
|
-
<template #icon>
|
|
51
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
52
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
53
|
-
</svg>
|
|
54
|
-
</template>
|
|
55
|
-
</input-field>
|
|
56
|
-
|
|
57
|
-
<input-field label="Icon-xl" size="form-control-xl" class="form-control-xl mb-3">
|
|
58
|
-
<template #icon>
|
|
59
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
60
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
61
|
-
</svg>
|
|
62
|
-
</template>
|
|
63
|
-
</input-field>
|
|
64
|
-
|
|
65
|
-
<input-field label="Icon-7" size="form-control-7" class="form-control-7 mb-3">
|
|
66
|
-
<template #icon>
|
|
67
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
68
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
69
|
-
</svg>
|
|
70
|
-
</template>
|
|
71
|
-
</input-field>
|
|
72
|
-
|
|
73
|
-
<input-field label="Icon-[27px]" size="form-control-[27px]" class="form-control-[27px] mb-3">
|
|
74
|
-
<template #icon>
|
|
75
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
76
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
77
|
-
</svg>
|
|
78
|
-
</template>
|
|
79
|
-
</input-field>
|
|
80
|
-
|
|
81
|
-
<h2 class="text-2xl mt-6 mb-3">Activity Indicator</h2>
|
|
82
|
-
|
|
83
|
-
<input-field label="Small" size="form-control-sm" :indicator="Dots()" indicator-size="xs" :activity="showActivity" class="mb-3"></input-field>
|
|
84
|
-
<input-field label="Medium" size="form-control-md" :indicator="Pulse()" indicator-size="md" :activity="showActivity" class="mb-3"></input-field>
|
|
85
|
-
<input-field label="Large" size="form-control-lg" :indicator="Spinner()" indicator-size="lg" :activity="showActivity" class="mb-3"></input-field>
|
|
86
|
-
|
|
87
|
-
<button type="button" class="underline text-blue-600" @click="showActivity = !showActivity">
|
|
88
|
-
<span v-if="!showActivity">Show</span><span v-else>Hide</span> Activity
|
|
89
|
-
</button>
|
|
90
|
-
|
|
91
|
-
<!-- <h2 class="text-2xl mt-6 mb-3">Animated Labels</h2>
|
|
92
|
-
|
|
93
|
-
<input-field size="sm" label="Small" class="mb-3" animated></input-field>
|
|
94
|
-
<input-field size="md" label="Medium" class="mb-3" animated></input-field>
|
|
95
|
-
<input-field v-model="value" size="md" label="Medium" class="mb-3" animated></input-field>
|
|
96
|
-
|
|
97
|
-
<input-field value="Some Value" size="md" label="Medium" class="mb-3" animated></input-field>
|
|
98
|
-
<input-field size="lg" label="Large" class="mb-3" animated></input-field> -->
|
|
99
|
-
|
|
100
|
-
<h2 class="text-2xl mt-6 mb-3">Validation</h2>
|
|
101
|
-
|
|
102
|
-
<input-field label="Empty Array of Errors" :errors="[]" class="mb-3"></input-field>
|
|
103
|
-
|
|
104
|
-
<input-field label="Single Inline Error" error="This is an inline error." class="mb-3 invalid-feedback"></input-field>
|
|
105
|
-
<input-field label="Array of Errors" :errors="['First Error', 'Second Error']" class="mb-3 invalid-feedback"></input-field>
|
|
106
|
-
<input-field name="test" label="Multiple Errors From Object" :errors="{'test': ['This is an inline error #1.', 'This is an inline error #2.']}" class="mb-3 invalid-feedback"></input-field>
|
|
107
|
-
|
|
108
|
-
<input-field label="Valid Field" valid class="mb-3 valid-feedback"></input-field>
|
|
109
|
-
<input-field label="Valid Field with Feedback" valid feedback="This is some success message." class="mb-3 valid-feedback"></input-field>
|
|
110
|
-
<input-field label="Valid Field with Array of Feedback" valid :feedback="['This is some success message.', 'This is some success message.']" class="mb-3 valid-feedback"></input-field>
|
|
111
|
-
|
|
112
|
-
<h2 class="text-2xl mt-6 mb-3">Animated Labels</h2>
|
|
113
|
-
|
|
114
|
-
<input-field v-model="value" label="Text Field" placeholder="Some placeholder" class="mb-3 form-control-animated"></input-field>
|
|
115
|
-
<input-field label="Text Field" placeholder="Some placeholder" class="mb-3 form-control-animated"></input-field>
|
|
116
|
-
<input-field label="Text Field" placeholder="Some placeholder" size="form-control-lg" class="mb-3 form-control-animated-lg"></input-field>
|
|
117
|
-
|
|
118
|
-
<input-field label="Small Icon" placeholder="Some placeholder" size="form-control-sm" class="mb-3 form-control-animated-sm">
|
|
119
|
-
<template #icon>
|
|
120
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
121
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
122
|
-
</svg>
|
|
123
|
-
</template>
|
|
124
|
-
</input-field>
|
|
125
|
-
|
|
126
|
-
<input-field label="Medium Icon" placeholder="Some placeholder" size="form-control-md" class="mb-3 form-control-animated-md">
|
|
127
|
-
<template #icon>
|
|
128
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
129
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
130
|
-
</svg>
|
|
131
|
-
</template>
|
|
132
|
-
</input-field>
|
|
133
|
-
|
|
134
|
-
<input-field label="Large Icon" placeholder="Some placeholder" size="form-control-lg" class="mb-3 form-control-animated-lg">
|
|
135
|
-
<template #icon>
|
|
136
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
137
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
138
|
-
</svg>
|
|
139
|
-
</template>
|
|
140
|
-
</input-field>
|
|
141
|
-
|
|
142
|
-
<input-field label="xl Icon" placeholder="Some placeholder" size="form-control-xl" class="mb-3 form-control-animated-xl">
|
|
143
|
-
<template #icon>
|
|
144
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
145
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
146
|
-
</svg>
|
|
147
|
-
</template>
|
|
148
|
-
</input-field>
|
|
149
|
-
|
|
150
|
-
<input-field label="2xl Icon" placeholder="Some placeholder" size="form-control-2xl" class="mb-3 form-control-animated-2xl">
|
|
151
|
-
<template #icon>
|
|
152
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
153
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
154
|
-
</svg>
|
|
155
|
-
</template>
|
|
156
|
-
</input-field>
|
|
157
|
-
|
|
158
|
-
<input-field label="Icon-4" placeholder="Some placeholder" size="form-control-4" class="mb-3 form-control-animated-4">
|
|
159
|
-
<template #icon>
|
|
160
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
161
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
162
|
-
</svg>
|
|
163
|
-
</template>
|
|
164
|
-
</input-field>
|
|
165
|
-
|
|
166
|
-
<input-field label="Icon-5" placeholder="Some placeholder" size="form-control-5" class="mb-3 form-control-animated-5">
|
|
167
|
-
<template #icon>
|
|
168
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
169
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
170
|
-
</svg>
|
|
171
|
-
</template>
|
|
172
|
-
</input-field>
|
|
173
|
-
|
|
174
|
-
<input-field label="Icon-6" placeholder="Some placeholder" size="form-control-6" class="mb-3 form-control-animated-6">
|
|
175
|
-
<template #icon>
|
|
176
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
177
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
178
|
-
</svg>
|
|
179
|
-
</template>
|
|
180
|
-
</input-field>
|
|
181
|
-
|
|
182
|
-
<input-field label="Icon-7" placeholder="Some placeholder" size="form-control-7" class="mb-3 form-control-animated-7">
|
|
183
|
-
<template #icon>
|
|
184
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
185
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
186
|
-
</svg>
|
|
187
|
-
</template>
|
|
188
|
-
</input-field>
|
|
189
|
-
|
|
190
|
-
<input-field label="Icon-[16px]" placeholder="Some placeholder" size="form-control-[16px]" class="mb-3 form-control-animated-[16px]">
|
|
191
|
-
<template #icon>
|
|
192
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
193
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
194
|
-
</svg>
|
|
195
|
-
</template>
|
|
196
|
-
</input-field>
|
|
197
|
-
|
|
198
|
-
<input-field label="Icon-[21px]" placeholder="Some placeholder" size="form-control-[21px]" class="mb-3 form-control-animated-[21px]">
|
|
199
|
-
<template #icon>
|
|
200
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="stroke-black dark:stroke-white">
|
|
201
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
202
|
-
</svg>
|
|
203
|
-
</template>
|
|
204
|
-
</input-field>
|
|
205
|
-
</div>
|
|
206
|
-
|
|
207
|
-
<script type="module">
|
|
208
|
-
import './demo.css';
|
|
209
|
-
import { createApp } from 'vue/dist/vue.esm-bundler.js';
|
|
210
|
-
import { InputField } from './index';
|
|
211
|
-
import { Dots, Pulse, Spinner } from '@vue-interface/activity-indicator';
|
|
212
|
-
|
|
213
|
-
const vue = createApp({
|
|
214
|
-
components: {
|
|
215
|
-
InputField
|
|
216
|
-
},
|
|
217
|
-
data() {
|
|
218
|
-
return {
|
|
219
|
-
Dots: () => Dots,
|
|
220
|
-
Spinner: () => Spinner,
|
|
221
|
-
Pulse: () => Pulse,
|
|
222
|
-
showActivity: false,
|
|
223
|
-
value: undefined
|
|
224
|
-
};
|
|
225
|
-
},
|
|
226
|
-
mounted() {
|
|
227
|
-
setTimeout(() => {
|
|
228
|
-
this.value = 'testing...'
|
|
229
|
-
}, 1000)
|
|
230
|
-
},
|
|
231
|
-
methods: {
|
|
232
|
-
onChange(value) {
|
|
233
|
-
console.log('change', value)
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
vue.mount('#app');
|
|
238
|
-
</script>
|
|
239
|
-
</body>
|
|
240
|
-
</html>
|
package/index.ts
DELETED
package/src/InputField.vue
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts" generic="ModelValue, Value">
|
|
2
|
-
import { ActivityIndicator } from '@vue-interface/activity-indicator';
|
|
3
|
-
import type { FormControlEvents, FormControlProps, FormControlSlots } from '@vue-interface/form-control';
|
|
4
|
-
import { FormControlErrors, FormControlFeedback, useFormControl } from '@vue-interface/form-control';
|
|
5
|
-
import { InputHTMLAttributes, ref } from 'vue';
|
|
6
|
-
|
|
7
|
-
const props = withDefaults(defineProps<InputFieldProps<ModelValue,Value>>(), {
|
|
8
|
-
formControlClass: 'form-control',
|
|
9
|
-
labelClass: 'form-label'
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
defineOptions({
|
|
13
|
-
inheritAttrs: false
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
const model = defineModel<ModelValue>();
|
|
17
|
-
|
|
18
|
-
defineSlots<FormControlSlots<InputFieldControlSizePrefix,ModelValue>>();
|
|
19
|
-
|
|
20
|
-
const emit = defineEmits<FormControlEvents<ModelValue>>();
|
|
21
|
-
|
|
22
|
-
const {
|
|
23
|
-
controlAttributes,
|
|
24
|
-
formGroupClasses,
|
|
25
|
-
listeners
|
|
26
|
-
} = useFormControl<InputHTMLAttributes, InputFieldControlSizePrefix, ModelValue, Value>({ model, props, emit });
|
|
27
|
-
|
|
28
|
-
const field = ref<HTMLInputElement>();
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<script lang="ts">
|
|
32
|
-
export type InputFieldControlSizePrefix = 'form-control';
|
|
33
|
-
|
|
34
|
-
export type InputFieldProps<ModelValue, Value> = FormControlProps<
|
|
35
|
-
InputHTMLAttributes,
|
|
36
|
-
InputFieldControlSizePrefix,
|
|
37
|
-
ModelValue,
|
|
38
|
-
Value
|
|
39
|
-
>;
|
|
40
|
-
</script>
|
|
41
|
-
|
|
42
|
-
<template>
|
|
43
|
-
<div
|
|
44
|
-
class="input-field"
|
|
45
|
-
:class="formGroupClasses">
|
|
46
|
-
<slot name="label">
|
|
47
|
-
<label
|
|
48
|
-
v-if="label"
|
|
49
|
-
ref="label"
|
|
50
|
-
:class="labelClass"
|
|
51
|
-
:for="controlAttributes.id">
|
|
52
|
-
{{ label }}
|
|
53
|
-
</label>
|
|
54
|
-
</slot>
|
|
55
|
-
|
|
56
|
-
<div class="form-control-inner">
|
|
57
|
-
<slot
|
|
58
|
-
name="control"
|
|
59
|
-
v-bind="{ controlAttributes, listeners }">
|
|
60
|
-
<div
|
|
61
|
-
v-if="$slots.icon"
|
|
62
|
-
class="form-control-inner-icon"
|
|
63
|
-
@click="field?.focus()">
|
|
64
|
-
<slot name="icon" />
|
|
65
|
-
</div>
|
|
66
|
-
<input
|
|
67
|
-
ref="field"
|
|
68
|
-
v-model="model"
|
|
69
|
-
v-bind="{...controlAttributes, ...listeners}">
|
|
70
|
-
</slot>
|
|
71
|
-
|
|
72
|
-
<div class="form-control-activity-indicator">
|
|
73
|
-
<slot name="activity">
|
|
74
|
-
<Transition name="input-field-fade">
|
|
75
|
-
<ActivityIndicator
|
|
76
|
-
v-if="activity && indicator"
|
|
77
|
-
key="activity"
|
|
78
|
-
ref="activity"
|
|
79
|
-
:type="indicator"
|
|
80
|
-
:size="indicatorSize" />
|
|
81
|
-
</Transition>
|
|
82
|
-
</slot>
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
|
|
86
|
-
<slot
|
|
87
|
-
name="errors"
|
|
88
|
-
v-bind="{ error, errors, id: $attrs.id, name: $attrs.name }">
|
|
89
|
-
<FormControlErrors
|
|
90
|
-
v-if="!!(error || errors)"
|
|
91
|
-
:id="id"
|
|
92
|
-
v-slot="{ error }"
|
|
93
|
-
:name="name"
|
|
94
|
-
:error="error"
|
|
95
|
-
:errors="errors">
|
|
96
|
-
<div
|
|
97
|
-
invalid
|
|
98
|
-
class="invalid-feedback">
|
|
99
|
-
{{ error }}<br>
|
|
100
|
-
</div>
|
|
101
|
-
</FormControlErrors>
|
|
102
|
-
</slot>
|
|
103
|
-
|
|
104
|
-
<slot
|
|
105
|
-
name="feedback"
|
|
106
|
-
v-bind="{ feedback }">
|
|
107
|
-
<FormControlFeedback
|
|
108
|
-
v-slot="{ feedback }"
|
|
109
|
-
:feedback="feedback">
|
|
110
|
-
<div
|
|
111
|
-
valid
|
|
112
|
-
class="valid-feedback">
|
|
113
|
-
{{ feedback }}
|
|
114
|
-
</div>
|
|
115
|
-
</FormControlFeedback>
|
|
116
|
-
</slot>
|
|
117
|
-
|
|
118
|
-
<slot
|
|
119
|
-
name="help"
|
|
120
|
-
v-bind="{ helpText }">
|
|
121
|
-
<small
|
|
122
|
-
v-if="helpText"
|
|
123
|
-
ref="help"
|
|
124
|
-
class="form-help">
|
|
125
|
-
{{ helpText }}
|
|
126
|
-
</small>
|
|
127
|
-
</slot>
|
|
128
|
-
</div>
|
|
129
|
-
</template>
|
package/tsconfig.json
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2020",
|
|
4
|
-
"useDefineForClassFields": true,
|
|
5
|
-
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
6
|
-
"module": "ESNext",
|
|
7
|
-
"skipLibCheck": true,
|
|
8
|
-
"moduleResolution": "bundler",
|
|
9
|
-
"customConditions": ["source"],
|
|
10
|
-
"allowImportingTsExtensions": true,
|
|
11
|
-
"resolveJsonModule": true,
|
|
12
|
-
"isolatedModules": true,
|
|
13
|
-
"noEmit": true,
|
|
14
|
-
"strict": true,
|
|
15
|
-
"noUnusedLocals": true,
|
|
16
|
-
"noUnusedParameters": true,
|
|
17
|
-
"noFallthroughCasesInSwitch": true,
|
|
18
|
-
"jsx": "preserve",
|
|
19
|
-
"jsxImportSource": "vue"
|
|
20
|
-
},
|
|
21
|
-
"include": [
|
|
22
|
-
"**/*.ts",
|
|
23
|
-
"**/*.tsx",
|
|
24
|
-
"**/*.vue",
|
|
25
|
-
],
|
|
26
|
-
"exclude": ["node_modules"]
|
|
27
|
-
}
|
package/vite.config.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import tailwindcss from '@tailwindcss/vite';
|
|
2
|
-
import vue from '@vitejs/plugin-vue';
|
|
3
|
-
import { pascalCase } from 'change-case';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import { defineConfig } from 'vite';
|
|
6
|
-
import dts from 'vite-plugin-dts';
|
|
7
|
-
import pkg from './package.json';
|
|
8
|
-
|
|
9
|
-
const fileName = pkg.name.split('/')[1];
|
|
10
|
-
|
|
11
|
-
const external = [
|
|
12
|
-
...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),
|
|
13
|
-
...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : [])
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
export default ({ command }) => defineConfig({
|
|
17
|
-
build: {
|
|
18
|
-
sourcemap: command === 'build',
|
|
19
|
-
lib: {
|
|
20
|
-
entry: path.resolve(__dirname, 'index.ts'),
|
|
21
|
-
name: pascalCase(fileName),
|
|
22
|
-
fileName,
|
|
23
|
-
},
|
|
24
|
-
rollupOptions: {
|
|
25
|
-
external,
|
|
26
|
-
output: {
|
|
27
|
-
globals: external.reduce((carry, dep) => {
|
|
28
|
-
return Object.assign(carry, {
|
|
29
|
-
[dep]: pascalCase(dep)
|
|
30
|
-
});
|
|
31
|
-
}, {}),
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
watch: !process.env.NODE_ENV && {
|
|
35
|
-
include: [
|
|
36
|
-
'./tailwindcss/**/*.js'
|
|
37
|
-
]
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
plugins: [
|
|
41
|
-
vue(),
|
|
42
|
-
dts({
|
|
43
|
-
entryRoot: path.resolve(__dirname, './'),
|
|
44
|
-
}),
|
|
45
|
-
tailwindcss()
|
|
46
|
-
],
|
|
47
|
-
});
|