UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 19.9 kB
{"version":3,"file":"VTextarea.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VCounter","VField","Intersect","forwardRefs","useFocus","useProxiedModel","computed","nextTick","onBeforeUnmount","onMounted","ref","watch","callEvent","clamp","convertToUnit","filterInputAttrs","genericComponent","useRender","VTextarea","name","directives","inheritAttrs","props","autoGrow","Boolean","autofocus","counter","Number","String","counterValue","Function","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","noResize","rows","type","default","validator","v","isNaN","parseFloat","maxRows","suffix","emits","e","focused","val","setup","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","controlHeight","textareaRef","isActive","messages","onFocus","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","sizerRef","calculateInputHeight","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","Math","maxHeight","Infinity","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","includes","variant","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","handler"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport const VTextarea = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'>>()({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: {\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 hint: String,\n persistentHint: Boolean,\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\n ...makeVInputProps(),\n ...makeVFieldProps(),\n },\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 = ref('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.persistentPlaceholder\n ))\n\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isActive.value || props.persistentHint) ? props.hint : ''\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 model.value = (e.target as HTMLTextAreaElement).value\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\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\n controlHeight.value = convertToUnit(clamp(height ?? 0, minHeight, maxHeight))\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 }] = filterInputProps(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--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ props['onClick:prepend'] }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n messages={ messages.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 dirty={ isDirty.value || props.dirty }\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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"}