vuetify 3.3.11 → 3.3.13
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/dist/json/attributes.json +49 -5
- package/dist/json/importMap.json +12 -12
- package/dist/json/tags.json +11 -0
- package/dist/json/web-types.json +168 -11
- package/dist/vuetify-labs.css +423 -358
- package/dist/vuetify-labs.d.ts +233 -91
- package/dist/vuetify-labs.esm.js +189 -104
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +189 -104
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +130 -65
- package/dist/vuetify.d.ts +172 -38
- package/dist/vuetify.esm.js +100 -59
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +100 -59
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +152 -152
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/md3.mjs +2 -1
- package/lib/blueprints/md3.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.mts +6 -6
- package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +42 -0
- package/lib/components/VBanner/VBanner.css +2 -0
- package/lib/components/VBanner/VBanner.sass +2 -0
- package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -0
- package/lib/components/VBottomNavigation/VBottomNavigation.sass +1 -0
- package/lib/components/VBtn/VBtn.css +6 -0
- package/lib/components/VBtn/VBtn.sass +5 -0
- package/lib/components/VCheckbox/index.d.mts +3 -1
- package/lib/components/VChip/VChip.mjs +1 -0
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +6 -2
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +42 -0
- package/lib/components/VDialog/VDialog.css +15 -6
- package/lib/components/VDialog/VDialog.sass +41 -35
- package/lib/components/VField/VField.css +7 -2
- package/lib/components/VField/VField.mjs +5 -3
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +7 -2
- package/lib/components/VFileInput/VFileInput.css +4 -0
- package/lib/components/VFileInput/VFileInput.sass +5 -1
- package/lib/components/VFileInput/_variables.scss +2 -1
- package/lib/components/VGrid/VGrid.css +4 -0
- package/lib/components/VGrid/VGrid.sass +4 -1
- package/lib/components/VGrid/VSpacer.mjs +1 -1
- package/lib/components/VGrid/VSpacer.mjs.map +1 -1
- package/lib/components/VList/VList.css +1 -1
- package/lib/components/VList/VList.sass +1 -1
- package/lib/components/VList/VListItem.css +20 -9
- package/lib/components/VList/VListItem.mjs +6 -2
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +19 -8
- package/lib/components/VMenu/VMenu.mjs +4 -3
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.mts +5 -5
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +0 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
- package/lib/components/VNavigationDrawer/_variables.scss +0 -1
- package/lib/components/VRadio/index.d.mts +3 -1
- package/lib/components/VRadioGroup/VRadioGroup.css +6 -1
- package/lib/components/VRadioGroup/VRadioGroup.sass +5 -0
- package/lib/components/VRadioGroup/_variables.scss +3 -1
- package/lib/components/VRadioGroup/index.d.mts +3 -1
- package/lib/components/VSelect/VSelect.mjs +14 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +42 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs +22 -19
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.mts +27 -25
- package/lib/components/VSwitch/VSwitch.css +24 -17
- package/lib/components/VSwitch/VSwitch.mjs +28 -19
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.sass +20 -11
- package/lib/components/VSwitch/_variables.scss +18 -6
- package/lib/components/VSwitch/index.d.mts +3 -1
- package/lib/components/VTextField/VTextField.css +9 -2
- package/lib/components/VTextField/VTextField.mjs +6 -3
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +10 -3
- package/lib/components/VTextField/index.d.mts +6 -0
- package/lib/components/VTextarea/VTextarea.mjs +1 -2
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.css +6 -1
- package/lib/components/VTimeline/VTimeline.sass +6 -1
- package/lib/components/VTooltip/VTooltip.css +1 -1
- package/lib/components/VTooltip/_variables.scss +1 -1
- package/lib/components/index.d.mts +169 -35
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +3 -3
- package/lib/labs/VDateInput/composables.mjs +11 -1
- package/lib/labs/VDateInput/composables.mjs.map +1 -1
- package/lib/labs/VDateInput/index.d.mts +6 -0
- package/lib/labs/VDatePicker/VDatePicker.mjs +34 -14
- package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs +1 -1
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/labs/VDatePicker/composables.mjs +4 -2
- package/lib/labs/VDatePicker/composables.mjs.map +1 -1
- package/lib/labs/VDatePicker/index.d.mts +14 -0
- package/lib/labs/VOtpInput/VOtpInput.mjs +31 -22
- package/lib/labs/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/labs/VStepper/VStepper.mjs +12 -9
- package/lib/labs/VStepper/VStepper.mjs.map +1 -1
- package/lib/labs/VStepper/index.d.mts +50 -56
- package/lib/labs/components.d.mts +64 -56
- package/lib/labs/date/adapters/vuetify.mjs +1 -1
- package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
- package/lib/locale/af.mjs +1 -0
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +1 -0
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +1 -0
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +1 -0
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +1 -0
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +1 -0
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +1 -0
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +1 -0
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +1 -0
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +1 -0
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +1 -0
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +1 -0
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +1 -0
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +1 -0
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +1 -0
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +1 -0
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +1 -0
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +1 -0
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +1 -0
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +1 -0
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +42 -0
- package/lib/locale/it.mjs +1 -0
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +1 -0
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/ko.mjs +1 -0
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +1 -0
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +1 -0
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +1 -0
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +16 -15
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +1 -0
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +1 -0
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +1 -0
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +1 -0
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +1 -0
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +1 -0
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +1 -0
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +1 -0
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +1 -0
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +1 -0
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +1 -0
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +1 -0
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +1 -0
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +1 -0
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +1 -0
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -22,6 +22,7 @@ export const makeVTextFieldProps = propsFactory({
|
|
|
22
22
|
persistentPlaceholder: Boolean,
|
|
23
23
|
persistentCounter: Boolean,
|
|
24
24
|
suffix: String,
|
|
25
|
+
role: String,
|
|
25
26
|
type: {
|
|
26
27
|
type: String,
|
|
27
28
|
default: 'text'
|
|
@@ -146,7 +147,7 @@ export const VTextField = genericComponent()({
|
|
|
146
147
|
"onClick:clear": onClear,
|
|
147
148
|
"onClick:prependInner": props['onClick:prependInner'],
|
|
148
149
|
"onClick:appendInner": props['onClick:appendInner'],
|
|
149
|
-
"role":
|
|
150
|
+
"role": props.role
|
|
150
151
|
}, fieldProps, {
|
|
151
152
|
"id": id.value,
|
|
152
153
|
"active": isActive.value || isDirty.value,
|
|
@@ -185,10 +186,12 @@ export const VTextField = genericComponent()({
|
|
|
185
186
|
"class": "v-text-field__prefix"
|
|
186
187
|
}, [_createVNode("span", {
|
|
187
188
|
"class": "v-text-field__prefix__text"
|
|
188
|
-
}, [props.prefix])]), _createVNode("div", {
|
|
189
|
+
}, [props.prefix])]), slots.default ? _createVNode("div", {
|
|
189
190
|
"class": fieldClass,
|
|
190
191
|
"data-no-activator": ""
|
|
191
|
-
}, [slots.default
|
|
192
|
+
}, [slots.default(), inputNode]) : cloneVNode(inputNode, {
|
|
193
|
+
class: fieldClass
|
|
194
|
+
}), props.suffix && _createVNode("span", {
|
|
192
195
|
"class": "v-text-field__suffix"
|
|
193
196
|
}, [_createVNode("span", {
|
|
194
197
|
"class": "v-text-field__suffix__text"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTextField.mjs","names":["VCounter","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","isPlainOrUnderlined","includes","variant","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","active","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent<VTextFieldSlots>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant),\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n <span class=\"v-text-field__prefix__text\">\n { props.prefix }\n </span>\n </span>\n )}\n\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default ? (\n <>\n { slots.default() }\n { inputNode }\n </>\n ) : cloneVNode(inputNode)\n }\n </div>\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n <span class=\"v-text-field__suffix__text\">\n { props.suffix }\n </span>\n </span>\n )}\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VTextField.mjs","names":["VCounter","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","role","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","isPlainOrUnderlined","includes","variant","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","active","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent<VTextFieldSlots>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant),\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role={ props.role }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n <span class=\"v-text-field__prefix__text\">\n { props.prefix }\n </span>\n </span>\n )}\n\n { slots.default ? (\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default() }\n { inputNode }\n </div>\n ) : cloneVNode(inputNode, { class: fieldClass })}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n <span class=\"v-text-field__suffix__text\">\n { props.suffix }\n </span>\n </span>\n )}\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n"],"mappings":"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"}
|
|
@@ -10,9 +10,7 @@
|
|
|
10
10
|
flex: $text-field-input-flex
|
|
11
11
|
transition: $text-field-input-transition
|
|
12
12
|
min-width: 0
|
|
13
|
-
|
|
14
|
-
margin-bottom: var(--v-input-chips-margin-bottom)
|
|
15
|
-
|
|
13
|
+
|
|
16
14
|
&:focus,
|
|
17
15
|
&:active
|
|
18
16
|
outline: none
|
|
@@ -30,6 +28,15 @@
|
|
|
30
28
|
|
|
31
29
|
@at-root #{selector.append('.v-text-field--suffixed', &)}
|
|
32
30
|
--v-field-padding-end: #{$text-field-input-padding-end}
|
|
31
|
+
|
|
32
|
+
input
|
|
33
|
+
margin-top: var(--v-input-chips-margin-top)
|
|
34
|
+
margin-bottom: var(--v-input-chips-margin-bottom)
|
|
35
|
+
|
|
36
|
+
input.v-field__input
|
|
37
|
+
min-height: calc($field-input-min-height - var(--v-input-chips-margin-top) - var(--v-input-chips-margin-bottom))
|
|
38
|
+
padding-top: calc(var(--v-input-chips-margin-top) + var(--v-field-input-padding-top))
|
|
39
|
+
padding-bottom: calc(var(--v-input-chips-margin-bottom) + var(--v-field-input-padding-bottom))
|
|
33
40
|
|
|
34
41
|
.v-input__details
|
|
35
42
|
padding-inline-start: $text-field-details-padding-inline
|
|
@@ -131,6 +131,7 @@ declare const VTextField: {
|
|
|
131
131
|
loading?: string | boolean | undefined;
|
|
132
132
|
label?: string | undefined;
|
|
133
133
|
prefix?: string | undefined;
|
|
134
|
+
role?: string | undefined;
|
|
134
135
|
class?: any;
|
|
135
136
|
placeholder?: string | undefined;
|
|
136
137
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
@@ -327,6 +328,7 @@ declare const VTextField: {
|
|
|
327
328
|
loading?: string | boolean | undefined;
|
|
328
329
|
label?: string | undefined;
|
|
329
330
|
prefix?: string | undefined;
|
|
331
|
+
role?: string | undefined;
|
|
330
332
|
class?: any;
|
|
331
333
|
placeholder?: string | undefined;
|
|
332
334
|
theme?: string | undefined;
|
|
@@ -1060,6 +1062,7 @@ declare const VTextField: {
|
|
|
1060
1062
|
loading?: string | boolean | undefined;
|
|
1061
1063
|
label?: string | undefined;
|
|
1062
1064
|
prefix?: string | undefined;
|
|
1065
|
+
role?: string | undefined;
|
|
1063
1066
|
class?: any;
|
|
1064
1067
|
placeholder?: string | undefined;
|
|
1065
1068
|
theme?: string | undefined;
|
|
@@ -1707,6 +1710,7 @@ declare const VTextField: {
|
|
|
1707
1710
|
loading?: string | boolean | undefined;
|
|
1708
1711
|
label?: string | undefined;
|
|
1709
1712
|
prefix?: string | undefined;
|
|
1713
|
+
role?: string | undefined;
|
|
1710
1714
|
class?: any;
|
|
1711
1715
|
placeholder?: string | undefined;
|
|
1712
1716
|
theme?: string | undefined;
|
|
@@ -2485,6 +2489,7 @@ declare const VTextField: {
|
|
|
2485
2489
|
persistentPlaceholder: BooleanConstructor;
|
|
2486
2490
|
persistentCounter: BooleanConstructor;
|
|
2487
2491
|
suffix: StringConstructor;
|
|
2492
|
+
role: StringConstructor;
|
|
2488
2493
|
type: {
|
|
2489
2494
|
type: StringConstructor;
|
|
2490
2495
|
default: string;
|
|
@@ -2588,6 +2593,7 @@ declare const VTextField: {
|
|
|
2588
2593
|
persistentPlaceholder: BooleanConstructor;
|
|
2589
2594
|
persistentCounter: BooleanConstructor;
|
|
2590
2595
|
suffix: StringConstructor;
|
|
2596
|
+
role: StringConstructor;
|
|
2591
2597
|
type: {
|
|
2592
2598
|
type: StringConstructor;
|
|
2593
2599
|
default: string;
|
|
@@ -195,8 +195,7 @@ export const VTextarea = genericComponent()({
|
|
|
195
195
|
"onMousedown": onControlMousedown,
|
|
196
196
|
"onClick:clear": onClear,
|
|
197
197
|
"onClick:prependInner": props['onClick:prependInner'],
|
|
198
|
-
"onClick:appendInner": props['onClick:appendInner']
|
|
199
|
-
"role": "textbox"
|
|
198
|
+
"onClick:appendInner": props['onClick:appendInner']
|
|
200
199
|
}, fieldProps, {
|
|
201
200
|
"active": isActive.value || isDirty.value,
|
|
202
201
|
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTextarea.mjs","names":["VCounter","VField","filterFieldProps","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","computed","nextTick","onBeforeUnmount","onMounted","ref","shallowRef","watch","watchEffect","callEvent","clamp","convertToUnit","filterInputAttrs","genericComponent","propsFactory","useRender","makeVTextareaProps","autoGrow","Boolean","autofocus","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","noResize","rows","type","default","validator","v","isNaN","parseFloat","maxRows","suffix","modelModifiers","Object","VTextarea","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","controlHeight","textareaRef","isActive","active","onFocus","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","sizerRef","isPlainOrUnderlined","includes","variant","calculateInputHeight","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","Math","maxHeight","Infinity","newHeight","floor","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","_ref2","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","_Fragment","_withDirectives","_resolveDirective","handler","once","_vModelText"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport const makeVTextareaProps = propsFactory({\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextarea')\n\ntype VTextareaSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n counter: VCounterSlot\n}\n\nexport const VTextarea = genericComponent<VTextareaSlots>()({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextareaProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as string | number\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const controlHeight = shallowRef('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLTextAreaElement\n model.value = el.value\n if (props.modelModifiers?.trim) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n const rows = ref(+props.rows)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n watchEffect(() => {\n if (!props.autoGrow) rows.value = +props.rows\n })\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n const newHeight = clamp(height ?? 0, minHeight, maxHeight)\n rows.value = Math.floor((newHeight - padding) / lineHeight)\n\n controlHeight.value = convertToUnit(newHeight)\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-textarea v-text-field',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-text-field--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ rows.value === 1 && !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n style={{\n '--v-textarea-control-height': controlHeight.value,\n }}\n onClick={ onControlClick }\n onMousedown={ onControlMousedown }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n centerAffix={ rows.value === 1 && !isPlainOrUnderlined.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n { props.autoGrow && (\n <textarea\n class={[\n fieldClass,\n 'v-textarea__sizer',\n ]}\n v-model={ model.value }\n ref={ sizerRef }\n readonly\n aria-hidden=\"true\"\n />\n )}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n )}\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType<typeof VTextarea>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VTextarea.mjs","names":["VCounter","VField","filterFieldProps","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","computed","nextTick","onBeforeUnmount","onMounted","ref","shallowRef","watch","watchEffect","callEvent","clamp","convertToUnit","filterInputAttrs","genericComponent","propsFactory","useRender","makeVTextareaProps","autoGrow","Boolean","autofocus","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","noResize","rows","type","default","validator","v","isNaN","parseFloat","maxRows","suffix","modelModifiers","Object","VTextarea","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","controlHeight","textareaRef","isActive","active","onFocus","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","sizerRef","isPlainOrUnderlined","includes","variant","calculateInputHeight","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","Math","maxHeight","Infinity","newHeight","floor","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","_ref2","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","_Fragment","_withDirectives","_resolveDirective","handler","once","_vModelText"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport const makeVTextareaProps = propsFactory({\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextarea')\n\ntype VTextareaSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n counter: VCounterSlot\n}\n\nexport const VTextarea = genericComponent<VTextareaSlots>()({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextareaProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as string | number\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const controlHeight = shallowRef('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLTextAreaElement\n model.value = el.value\n if (props.modelModifiers?.trim) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n const rows = ref(+props.rows)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n watchEffect(() => {\n if (!props.autoGrow) rows.value = +props.rows\n })\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n const newHeight = clamp(height ?? 0, minHeight, maxHeight)\n rows.value = Math.floor((newHeight - padding) / lineHeight)\n\n controlHeight.value = convertToUnit(newHeight)\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-textarea v-text-field',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-text-field--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ rows.value === 1 && !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n style={{\n '--v-textarea-control-height': controlHeight.value,\n }}\n onClick={ onControlClick }\n onMousedown={ onControlMousedown }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n centerAffix={ rows.value === 1 && !isPlainOrUnderlined.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n { props.autoGrow && (\n <textarea\n class={[\n fieldClass,\n 'v-textarea__sizer',\n ]}\n v-model={ model.value }\n ref={ sizerRef }\n readonly\n aria-hidden=\"true\"\n />\n )}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n )}\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType<typeof VTextarea>\n"],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
position: relative;
|
|
12
12
|
}
|
|
13
13
|
.v-timeline--horizontal.v-timeline {
|
|
14
|
-
grid-column-gap: 24px;
|
|
15
14
|
width: 100%;
|
|
16
15
|
}
|
|
17
16
|
.v-timeline--horizontal.v-timeline .v-timeline-item:first-child .v-timeline-divider, .v-timeline--horizontal.v-timeline .v-timeline-item:first-child .v-timeline-item__body, .v-timeline--horizontal.v-timeline .v-timeline-item:first-child .v-timeline-item__opposite {
|
|
@@ -20,6 +19,12 @@
|
|
|
20
19
|
.v-timeline--horizontal.v-timeline .v-timeline-item:last-child .v-timeline-divider, .v-timeline--horizontal.v-timeline .v-timeline-item:last-child .v-timeline-item__body, .v-timeline--horizontal.v-timeline .v-timeline-item:last-child .v-timeline-item__opposite {
|
|
21
20
|
padding-inline-end: 24px;
|
|
22
21
|
}
|
|
22
|
+
.v-timeline--horizontal.v-timeline .v-timeline-item__body {
|
|
23
|
+
padding-inline-end: 24px;
|
|
24
|
+
}
|
|
25
|
+
.v-timeline--horizontal.v-timeline .v-timeline-item__opposite {
|
|
26
|
+
padding-inline-end: 24px;
|
|
27
|
+
}
|
|
23
28
|
.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body {
|
|
24
29
|
grid-row: 3;
|
|
25
30
|
padding-block-start: 24px;
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
position: relative
|
|
20
20
|
|
|
21
21
|
@include horizontal(true)
|
|
22
|
-
grid-column-gap: $timeline-item-padding
|
|
23
22
|
width: 100%
|
|
24
23
|
|
|
25
24
|
@include timeline-first-item()
|
|
@@ -28,6 +27,12 @@
|
|
|
28
27
|
@include timeline-last-item()
|
|
29
28
|
padding-inline-end: $timeline-item-padding
|
|
30
29
|
|
|
30
|
+
.v-timeline-item__body
|
|
31
|
+
padding-inline-end: $timeline-item-padding
|
|
32
|
+
|
|
33
|
+
.v-timeline-item__opposite
|
|
34
|
+
padding-inline-end: $timeline-item-padding
|
|
35
|
+
|
|
31
36
|
.v-timeline-item:nth-child(2n)
|
|
32
37
|
.v-timeline-item__body
|
|
33
38
|
grid-row: 3
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@use '../../styles/settings';
|
|
2
2
|
|
|
3
3
|
// VTooltip
|
|
4
|
-
$tooltip-background-color:
|
|
4
|
+
$tooltip-background-color: rgb(var(--v-theme-surface-variant)) !default;
|
|
5
5
|
$tooltip-text-color: rgb(var(--v-theme-on-surface-variant)) !default;
|
|
6
6
|
$tooltip-border-radius: settings.$border-radius-root !default;
|
|
7
7
|
$tooltip-font-size: .875rem !default;
|