@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 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
+
@@ -0,0 +1,2 @@
1
+ import { default as InputField } from './src/InputField.vue';
2
+ export { InputField };
@@ -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.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/input-field"
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": "ISC",
31
+ "license": "MIT",
32
32
  "bugs": {
33
- "url": "https://github.com/vue-interface/input-field"
33
+ "url": "https://github.com/vue-interface/vue-interface.github.io"
34
34
  },
35
- "homepage": "https://github.com/vue-interface/vue-interface",
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.0",
39
- "@vue-interface/form-control": "2.0.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
@@ -1,12 +0,0 @@
1
- # @vue-interface/input-field
2
-
3
- ## 2.0.0
4
-
5
- ### Major Changes
6
-
7
- - 0da678a: Add support for TailwindCSS v4
8
-
9
- ### Patch Changes
10
-
11
- - Updated dependencies [0da678a]
12
- - @vue-interface/form-control@2.0.0
package/demo.css DELETED
@@ -1,12 +0,0 @@
1
- @import "tailwindcss";
2
- @import "./index.css";
3
-
4
- @source "../activity-indicator/src/**/*.vue";
5
-
6
- @variant dark {
7
- body {
8
- @apply text-white;
9
- }
10
- }
11
-
12
- @custom-variant dark (&:where(.dark, .dark *));
@@ -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
@@ -1,5 +0,0 @@
1
- import InputField from './src/InputField.vue';
2
-
3
- export {
4
- InputField
5
- };
@@ -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
- });