@vuetify/nightly 3.10.5-dev.2025-10-07 → 3.10.5-dev.2025-10-10
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/CHANGELOG.md +21 -3
- package/dist/json/attributes.json +2024 -2040
- package/dist/json/importMap-labs.json +12 -12
- package/dist/json/importMap.json +180 -180
- package/dist/json/tags.json +5 -9
- package/dist/json/web-types.json +3964 -3985
- package/dist/vuetify-labs.cjs +233 -169
- package/dist/vuetify-labs.css +4520 -4520
- package/dist/vuetify-labs.d.ts +1444 -1390
- package/dist/vuetify-labs.esm.js +233 -169
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +233 -169
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +156 -92
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3385 -3385
- package/dist/vuetify.d.ts +2289 -2200
- package/dist/vuetify.esm.js +156 -92
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +156 -92
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +959 -955
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +0 -61
- package/lib/components/VAutocomplete/VAutocomplete.js +13 -11
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.d.ts +6 -67
- package/lib/components/VCombobox/VCombobox.js +22 -23
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.d.ts +7 -7
- package/lib/components/VDataTable/VDataTableFooter.d.ts +16 -3
- package/lib/components/VDataTable/VDataTableFooter.js +4 -2
- package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +10 -7
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.d.ts +10 -0
- package/lib/components/VDataTable/VDataTableRow.js +3 -0
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRows.d.ts +10 -0
- package/lib/components/VDataTable/VDataTableRows.js +2 -0
- package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +7 -7
- package/lib/components/VNumberInput/VNumberInput.js +23 -8
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VTabs/VTabs.d.ts +16 -2
- package/lib/components/VTabs/VTabs.js +4 -2
- package/lib/components/VTabs/VTabs.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.css +2 -2
- package/lib/components/VTextarea/VTextarea.js +20 -1
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.sass +4 -2
- package/lib/components/VTreeview/VTreeview.d.ts +192 -5
- package/lib/components/VTreeview/VTreeview.js +16 -3
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/composables/icons.d.ts +0 -2
- package/lib/composables/icons.js +3 -36
- package/lib/composables/icons.js.map +1 -1
- package/lib/composables/virtual.js +2 -2
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +65 -65
- package/lib/framework.js +3 -2
- package/lib/framework.js.map +1 -1
- package/lib/icons.d.ts +3 -0
- package/lib/icons.js +34 -0
- package/lib/icons.js.map +1 -0
- package/lib/labs/VColorInput/VColorInput.d.ts +0 -40
- package/lib/labs/VColorInput/VColorInput.js +2 -2
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +0 -30
- package/lib/labs/VDateInput/VDateInput.js +2 -2
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VMaskInput/VMaskInput.js +1 -1
- package/lib/labs/VMaskInput/VMaskInput.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
.v-textarea .v-field__input {
|
|
8
8
|
flex: 1 1 auto;
|
|
9
9
|
outline: none;
|
|
10
|
-
-webkit-mask-image: linear-gradient(to bottom, transparent, transparent calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) - 6px), black calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) + 4px));
|
|
11
|
-
mask-image: linear-gradient(to bottom, transparent, transparent calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) - 6px), black calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) + 4px));
|
|
10
|
+
-webkit-mask-image: linear-gradient(to bottom, transparent, transparent calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) - 6px), black calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) + 4px)), linear-gradient(to right, transparent, transparent calc(100% - var(--v-textarea-scroll-bar-width, 16px)), black calc(100% - var(--v-textarea-scroll-bar-width, 16px)));
|
|
11
|
+
mask-image: linear-gradient(to bottom, transparent, transparent calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) - 6px), black calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) + 4px)), linear-gradient(to right, transparent, transparent calc(100% - var(--v-textarea-scroll-bar-width, 16px)), black calc(100% - var(--v-textarea-scroll-bar-width, 16px)));
|
|
12
12
|
}
|
|
13
13
|
.v-textarea .v-field__input.v-textarea__sizer {
|
|
14
14
|
visibility: hidden;
|
|
@@ -8,6 +8,7 @@ import { VCounter } from "../VCounter/VCounter.js";
|
|
|
8
8
|
import { VField } from "../VField/index.js";
|
|
9
9
|
import { makeVFieldProps } from "../VField/VField.js";
|
|
10
10
|
import { makeVInputProps, VInput } from "../VInput/VInput.js"; // Composables
|
|
11
|
+
import { useDisplay } from "../../composables/index.js";
|
|
11
12
|
import { makeAutocompleteProps, useAutocomplete } from "../../composables/autocomplete.js";
|
|
12
13
|
import { useAutofocus } from "../../composables/autofocus.js";
|
|
13
14
|
import { useFocus } from "../../composables/focus.js";
|
|
@@ -82,6 +83,10 @@ export const VTextarea = genericComponent()({
|
|
|
82
83
|
const vFieldRef = ref();
|
|
83
84
|
const controlHeight = shallowRef('');
|
|
84
85
|
const textareaRef = ref();
|
|
86
|
+
const scrollbarWidth = ref(0);
|
|
87
|
+
const {
|
|
88
|
+
platform
|
|
89
|
+
} = useDisplay();
|
|
85
90
|
const autocomplete = useAutocomplete(props);
|
|
86
91
|
const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
|
|
87
92
|
function onFocus() {
|
|
@@ -126,6 +131,18 @@ export const VTextarea = genericComponent()({
|
|
|
126
131
|
if (!props.autoGrow) rows.value = Number(props.rows);
|
|
127
132
|
});
|
|
128
133
|
function calculateInputHeight() {
|
|
134
|
+
nextTick(() => {
|
|
135
|
+
if (!textareaRef.value) return;
|
|
136
|
+
if (platform.value.firefox) {
|
|
137
|
+
scrollbarWidth.value = 12;
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const {
|
|
141
|
+
offsetWidth,
|
|
142
|
+
clientWidth
|
|
143
|
+
} = textareaRef.value;
|
|
144
|
+
scrollbarWidth.value = Math.max(0, offsetWidth - clientWidth);
|
|
145
|
+
});
|
|
129
146
|
if (!props.autoGrow) return;
|
|
130
147
|
nextTick(() => {
|
|
131
148
|
if (!sizerRef.value || !vFieldRef.value) return;
|
|
@@ -186,7 +203,9 @@ export const VTextarea = genericComponent()({
|
|
|
186
203
|
'v-textarea--no-resize': props.noResize || props.autoGrow,
|
|
187
204
|
'v-input--plain-underlined': isPlainOrUnderlined.value
|
|
188
205
|
}, props.class],
|
|
189
|
-
"style":
|
|
206
|
+
"style": [{
|
|
207
|
+
'--v-textarea-scroll-bar-width': convertToUnit(scrollbarWidth.value)
|
|
208
|
+
}, props.style]
|
|
190
209
|
}, rootAttrs, inputProps, {
|
|
191
210
|
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
|
192
211
|
"focused": isFocused.value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTextarea.js","names":["VCounter","VField","makeVFieldProps","makeVInputProps","VInput","makeAutocompleteProps","useAutocomplete","useAutofocus","useFocus","forwardRefs","useProxiedModel","vIntersect","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","onIntersect","value","toString","length","max","maxlength","undefined","vInputRef","vFieldRef","controlHeight","textareaRef","autocomplete","isActive","active","onFocus","isSuppressing","update","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","el","target","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","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","_createElementVNode","_Fragment","_withDirectives","fieldName","fieldAutocomplete","handler","once","_normalizeClass","_vModelText","disabled"],"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 { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { makeAutocompleteProps, useAutocomplete } from '@/composables/autocomplete'\nimport { useAutofocus } from '@/composables/autofocus'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport vIntersect 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 ...makeAutocompleteProps(),\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: { vIntersect },\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 'update:rows': (rows: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const { onIntersect } = useAutofocus(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 const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const controlHeight = shallowRef('')\n const textareaRef = ref<HTMLInputElement>()\n const autocomplete = useAutocomplete(props)\n const isActive = computed(() => (\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n\n function onFocus () {\n if (autocomplete.isSuppressing.value) {\n autocomplete.update()\n }\n\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(Number(props.rows))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n watchEffect(() => {\n if (!props.autoGrow) rows.value = Number(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 watch(rows, val => {\n emit('update:rows', val)\n })\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 = {\n ...VField.filterProps(props),\n 'onClick:clear': onClear,\n }\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-input--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 id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n style={{\n '--v-textarea-control-height': controlHeight.value,\n }}\n onClick={ onControlClick }\n onMousedown={ onControlMousedown }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\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 details={ hasDetails.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={ autocomplete.fieldName.value }\n autocomplete={ autocomplete.fieldAutocomplete.value }\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 id={ `${slotProps.id}-sizer` }\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 disabled={ props.disabled }\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":";AAAA;AACA;AACA;;AAEA;AAAA,SACSA,QAAQ;AAAA,SACRC,MAAM;AAAA,SACNC,eAAe;AAAA,SACfC,eAAe,EAAEC,MAAM,+BAEhC;AAAA,SACSC,qBAAqB,EAAEC,eAAe;AAAA,SACtCC,YAAY;AAAA,SACZC,QAAQ;AAAA,SACRC,WAAW;AAAA,SACXC,eAAe,6CAExB;AAAA,OACOC,UAAU,6CAEjB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,eAAe,EAAEC,SAAS,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAChGC,SAAS,EAAEC,KAAK,EAAEC,aAAa,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAErG;AAMA,OAAO,MAAMC,kBAAkB,GAAGF,YAAY,CAAC;EAC7CG,QAAQ,EAAEC,OAAO;EACjBC,SAAS,EAAED,OAAO;EAClBE,OAAO,EAAE,CAACF,OAAO,EAAEG,MAAM,EAAEC,MAAM,CAAqC;EACtEC,YAAY,EAAEC,QAA4C;EAC1DC,MAAM,EAAEH,MAAM;EACdI,WAAW,EAAEJ,MAAM;EACnBK,qBAAqB,EAAET,OAAO;EAC9BU,iBAAiB,EAAEV,OAAO;EAC1BW,QAAQ,EAAEX,OAAO;EACjBY,IAAI,EAAE;IACJC,IAAI,EAAE,CAACV,MAAM,EAAEC,MAAM,CAAC;IACtBU,OAAO,EAAE,CAAC;IACVC,SAAS,EAAGC,CAAM,IAAK,CAACC,KAAK,CAACC,UAAU,CAACF,CAAC,CAAC;EAC7C,CAAC;EACDG,OAAO,EAAE;IACPN,IAAI,EAAE,CAACV,MAAM,EAAEC,MAAM,CAAC;IACtBW,SAAS,EAAGC,CAAM,IAAK,CAACC,KAAK,CAACC,UAAU,CAACF,CAAC,CAAC;EAC7C,CAAC;EACDI,MAAM,EAAEhB,MAAM;EACdiB,cAAc,EAAEC,MAA2C;EAE3D,GAAG9C,qBAAqB,CAAC,CAAC;EAC1B,GAAGF,eAAe,CAAC,CAAC;EACpB,GAAGD,eAAe,CAAC;AACrB,CAAC,EAAE,WAAW,CAAC;AAMf,OAAO,MAAMkD,SAAS,GAAG5B,gBAAgB,CAAiB,CAAC,CAAC;EAC1D6B,IAAI,EAAE,WAAW;EAEjBC,UAAU,EAAE;IAAE3C;EAAW,CAAC;EAE1B4C,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAE7B,kBAAkB,CAAC,CAAC;EAE3B8B,KAAK,EAAE;IACL,eAAe,EAAGC,CAAa,IAAK,IAAI;IACxC,mBAAmB,EAAGA,CAAa,IAAK,IAAI;IAC5C,gBAAgB,EAAGC,OAAgB,IAAK,IAAI;IAC5C,mBAAmB,EAAGC,GAAW,IAAK,IAAI;IAC1C,aAAa,EAAGnB,IAAY,IAAK;EACnC,CAAC;EAEDoB,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAMI,KAAK,GAAGxD,eAAe,CAAC8C,KAAK,EAAE,YAAY,CAAC;IAClD,MAAM;MAAEW,SAAS;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAG7D,QAAQ,CAACgD,KAAK,CAAC;IAClD,MAAM;MAAEc;IAAY,CAAC,GAAG/D,YAAY,CAACiD,KAAK,CAAC;IAC3C,MAAMtB,YAAY,GAAGtB,QAAQ,CAAC,MAAM;MAClC,OAAO,OAAO4C,KAAK,CAACtB,YAAY,KAAK,UAAU,GAC3CsB,KAAK,CAACtB,YAAY,CAACgC,KAAK,CAACK,KAAK,CAAC,GAC/B,CAACL,KAAK,CAACK,KAAK,IAAI,EAAE,EAAEC,QAAQ,CAAC,CAAC,CAACC,MAAM;IAC3C,CAAC,CAAC;IACF,MAAMC,GAAG,GAAG9D,QAAQ,CAAC,MAAM;MACzB,IAAImD,KAAK,CAACY,SAAS,EAAE,OAAOZ,KAAK,CAACY,SAAS;MAE3C,IACE,CAACnB,KAAK,CAACzB,OAAO,IACb,OAAOyB,KAAK,CAACzB,OAAO,KAAK,QAAQ,IAClC,OAAOyB,KAAK,CAACzB,OAAO,KAAK,QAAS,EAClC,OAAO6C,SAAS;MAElB,OAAOpB,KAAK,CAACzB,OAAO;IACtB,CAAC,CAAC;IAEF,MAAM8C,SAAS,GAAG7D,GAAG,CAAS,CAAC;IAC/B,MAAM8D,SAAS,GAAG9D,GAAG,CAAS,CAAC;IAC/B,MAAM+D,aAAa,GAAG9D,UAAU,CAAC,EAAE,CAAC;IACpC,MAAM+D,WAAW,GAAGhE,GAAG,CAAmB,CAAC;IAC3C,MAAMiE,YAAY,GAAG3E,eAAe,CAACkD,KAAK,CAAC;IAC3C,MAAM0B,QAAQ,GAAGtE,QAAQ,CAAC,MACxB4C,KAAK,CAAClB,qBAAqB,IAC3B6B,SAAS,CAACI,KAAK,IACff,KAAK,CAAC2B,MACP,CAAC;IAEF,SAASC,OAAOA,CAAA,EAAI;MAClB,IAAIH,YAAY,CAACI,aAAa,CAACd,KAAK,EAAE;QACpCU,YAAY,CAACK,MAAM,CAAC,CAAC;MACvB;MAEA,IAAIN,WAAW,CAACT,KAAK,KAAKgB,QAAQ,CAACC,aAAa,EAAE;QAChDR,WAAW,CAACT,KAAK,EAAEH,KAAK,CAAC,CAAC;MAC5B;MAEA,IAAI,CAACD,SAAS,CAACI,KAAK,EAAEH,KAAK,CAAC,CAAC;IAC/B;IACA,SAASqB,cAAcA,CAAE/B,CAAa,EAAE;MACtC0B,OAAO,CAAC,CAAC;MAETpB,IAAI,CAAC,eAAe,EAAEN,CAAC,CAAC;IAC1B;IACA,SAASgC,kBAAkBA,CAAEhC,CAAa,EAAE;MAC1CM,IAAI,CAAC,mBAAmB,EAAEN,CAAC,CAAC;IAC9B;IACA,SAASiC,OAAOA,CAAEjC,CAAa,EAAE;MAC/BA,CAAC,CAACkC,eAAe,CAAC,CAAC;MAEnBR,OAAO,CAAC,CAAC;MAETvE,QAAQ,CAAC,MAAM;QACbqD,KAAK,CAACK,KAAK,GAAG,EAAE;QAEhBnD,SAAS,CAACoC,KAAK,CAAC,eAAe,CAAC,EAAEE,CAAC,CAAC;MACtC,CAAC,CAAC;IACJ;IACA,SAASmC,OAAOA,CAAEnC,CAAQ,EAAE;MAC1B,MAAMoC,EAAE,GAAGpC,CAAC,CAACqC,MAA6B;MAC1C7B,KAAK,CAACK,KAAK,GAAGuB,EAAE,CAACvB,KAAK;MACtB,IAAIf,KAAK,CAACN,cAAc,EAAE8C,IAAI,EAAE;QAC9B,MAAMC,aAAa,GAAG,CAACH,EAAE,CAACI,cAAc,EAAEJ,EAAE,CAACK,YAAY,CAAC;QAC1DtF,QAAQ,CAAC,MAAM;UACbiF,EAAE,CAACI,cAAc,GAAGD,aAAa,CAAC,CAAC,CAAC;UACpCH,EAAE,CAACK,YAAY,GAAGF,aAAa,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC;MACJ;IACF;IAEA,MAAMG,QAAQ,GAAGpF,GAAG,CAAsB,CAAC;IAC3C,MAAMyB,IAAI,GAAGzB,GAAG,CAACgB,MAAM,CAACwB,KAAK,CAACf,IAAI,CAAC,CAAC;IACpC,MAAM4D,mBAAmB,GAAGzF,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC0F,QAAQ,CAAC9C,KAAK,CAAC+C,OAAO,CAAC,CAAC;IAC3FpF,WAAW,CAAC,MAAM;MAChB,IAAI,CAACqC,KAAK,CAAC5B,QAAQ,EAAEa,IAAI,CAAC8B,KAAK,GAAGvC,MAAM,CAACwB,KAAK,CAACf,IAAI,CAAC;IACtD,CAAC,CAAC;IACF,SAAS+D,oBAAoBA,CAAA,EAAI;MAC/B,IAAI,CAAChD,KAAK,CAAC5B,QAAQ,EAAE;MAErBf,QAAQ,CAAC,MAAM;QACb,IAAI,CAACuF,QAAQ,CAAC7B,KAAK,IAAI,CAACO,SAAS,CAACP,KAAK,EAAE;QAEzC,MAAMkC,KAAK,GAAGC,gBAAgB,CAACN,QAAQ,CAAC7B,KAAK,CAAC;QAC9C,MAAMoC,UAAU,GAAGD,gBAAgB,CAAC5B,SAAS,CAACP,KAAK,CAACqC,GAAG,CAAC;QAExD,MAAMC,OAAO,GAAG9D,UAAU,CAAC0D,KAAK,CAACK,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,GACzE/D,UAAU,CAAC0D,KAAK,CAACK,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,GAC3D/D,UAAU,CAAC0D,KAAK,CAACK,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;QAEhE,MAAMC,MAAM,GAAGX,QAAQ,CAAC7B,KAAK,CAACyC,YAAY;QAC1C,MAAMC,UAAU,GAAGlE,UAAU,CAAC0D,KAAK,CAACQ,UAAU,CAAC;QAC/C,MAAMC,SAAS,GAAGC,IAAI,CAACzC,GAAG,CACxB3B,UAAU,CAACS,KAAK,CAACf,IAAI,CAAC,GAAGwE,UAAU,GAAGJ,OAAO,EAC7C9D,UAAU,CAAC4D,UAAU,CAACG,gBAAgB,CAAC,0BAA0B,CAAC,CACpE,CAAC;QACD,MAAMM,SAAS,GAAGrE,UAAU,CAACS,KAAK,CAACR,OAAQ,CAAC,GAAGiE,UAAU,GAAGJ,OAAO,IAAIQ,QAAQ;QAC/E,MAAMC,SAAS,GAAGjG,KAAK,CAAC0F,MAAM,IAAI,CAAC,EAAEG,SAAS,EAAEE,SAAS,CAAC;QAC1D3E,IAAI,CAAC8B,KAAK,GAAG4C,IAAI,CAACI,KAAK,CAAC,CAACD,SAAS,GAAGT,OAAO,IAAII,UAAU,CAAC;QAE3DlC,aAAa,CAACR,KAAK,GAAGjD,aAAa,CAACgG,SAAS,CAAC;MAChD,CAAC,CAAC;IACJ;IAEAvG,SAAS,CAACyF,oBAAoB,CAAC;IAC/BtF,KAAK,CAACgD,KAAK,EAAEsC,oBAAoB,CAAC;IAClCtF,KAAK,CAAC,MAAMsC,KAAK,CAACf,IAAI,EAAE+D,oBAAoB,CAAC;IAC7CtF,KAAK,CAAC,MAAMsC,KAAK,CAACR,OAAO,EAAEwD,oBAAoB,CAAC;IAChDtF,KAAK,CAAC,MAAMsC,KAAK,CAACgE,OAAO,EAAEhB,oBAAoB,CAAC;IAChDtF,KAAK,CAACuB,IAAI,EAAEmB,GAAG,IAAI;MACjBI,IAAI,CAAC,aAAa,EAAEJ,GAAG,CAAC;IAC1B,CAAC,CAAC;IAEF,IAAI6D,QAAoC;IACxCvG,KAAK,CAACkF,QAAQ,EAAExC,GAAG,IAAI;MACrB,IAAIA,GAAG,EAAE;QACP6D,QAAQ,GAAG,IAAIC,cAAc,CAAClB,oBAAoB,CAAC;QACnDiB,QAAQ,CAACE,OAAO,CAACvB,QAAQ,CAAC7B,KAAM,CAAC;MACnC,CAAC,MAAM;QACLkD,QAAQ,EAAEG,UAAU,CAAC,CAAC;MACxB;IACF,CAAC,CAAC;IACF9G,eAAe,CAAC,MAAM;MACpB2G,QAAQ,EAAEG,UAAU,CAAC,CAAC;IACxB,CAAC,CAAC;IAEFlG,SAAS,CAAC,MAAM;MACd,MAAMmG,UAAU,GAAG,CAAC,EAAE5D,KAAK,CAAClC,OAAO,IAAIyB,KAAK,CAACzB,OAAO,IAAIyB,KAAK,CAACtB,YAAY,CAAC;MAC3E,MAAM4F,UAAU,GAAG,CAAC,EAAED,UAAU,IAAI5D,KAAK,CAAC8D,OAAO,CAAC;MAClD,MAAM,CAACC,SAAS,EAAEC,UAAU,CAAC,GAAG1G,gBAAgB,CAACwC,KAAK,CAAC;MACvD,MAAM;QAAEmE,UAAU,EAAEC,CAAC;QAAE,GAAGC;MAAW,CAAC,GAAGhI,MAAM,CAACiI,WAAW,CAAC7E,KAAK,CAAC;MAClE,MAAM8E,UAAU,GAAG;QACjB,GAAGrI,MAAM,CAACoI,WAAW,CAAC7E,KAAK,CAAC;QAC5B,eAAe,EAAEmC;MACnB,CAAC;MAED,OAAA4C,YAAA,CAAAnI,MAAA,EAAAoI,WAAA;QAAA,OAEU3D,SAAS;QAAA,cACLX,KAAK,CAACK,KAAK;QAAA,uBAAAkE,MAAA,IAAXvE,KAAK,CAACK,KAAK,GAAAkE,MAAA;QAAA,SACd,CACL,yBAAyB,EACzB;UACE,sBAAsB,EAAEjF,KAAK,CAACpB,MAAM;UACpC,sBAAsB,EAAEoB,KAAK,CAACP,MAAM;UACpC,wBAAwB,EAAEO,KAAK,CAACpB,MAAM;UACtC,wBAAwB,EAAEoB,KAAK,CAACP,MAAM;UACtC,uBAAuB,EAAEO,KAAK,CAAC5B,QAAQ;UACvC,uBAAuB,EAAE4B,KAAK,CAAChB,QAAQ,IAAIgB,KAAK,CAAC5B,QAAQ;UACzD,2BAA2B,EAAEyE,mBAAmB,CAAC9B;QACnD,CAAC,EACDf,KAAK,CAACkF,KAAK,CACZ;QAAA,SACOlF,KAAK,CAACiD;MAAK,GACduB,SAAS,EACTI,UAAU;QAAA,eACD3F,IAAI,CAAC8B,KAAK,KAAK,CAAC,IAAI,CAAC8B,mBAAmB,CAAC9B,KAAK;QAAA,WAClDJ,SAAS,CAACI;MAAK;QAGvB,GAAGN,KAAK;QACRtB,OAAO,EAAEgG,KAAA;UAAA,IAAC;YACRC,EAAE;YACFC,UAAU;YACVC,OAAO;YACPC,UAAU;YACVC,OAAO;YACPlB;UACF,CAAC,GAAAa,KAAA;UAAA,OAAAJ,YAAA,CAAAtI,MAAA,EAAAuI,WAAA;YAAA,OAES1D,SAAS;YAAA,SACR;cACL,6BAA6B,EAAEC,aAAa,CAACR;YAC/C,CAAC;YAAA,WACSkB,cAAc;YAAA,eACVC,kBAAkB;YAAA,wBACTlC,KAAK,CAAC,sBAAsB,CAAC;YAAA,uBAC9BA,KAAK,CAAC,qBAAqB;UAAC,GAC7C8E,UAAU;YAAA,MACVM,EAAE,CAACrE,KAAK;YAAA,UACJW,QAAQ,CAACX,KAAK,IAAIuE,OAAO,CAACvE,KAAK;YAAA,eAC1B9B,IAAI,CAAC8B,KAAK,KAAK,CAAC,IAAI,CAAC8B,mBAAmB,CAAC9B,KAAK;YAAA,SACpDuE,OAAO,CAACvE,KAAK,IAAIf,KAAK,CAACyF,KAAK;YAAA,YACzBJ,UAAU,CAACtE,KAAK;YAAA,WACjBJ,SAAS,CAACI,KAAK;YAAA,WACfuD,UAAU,CAACvD,KAAK;YAAA,SAClByE,OAAO,CAACzE,KAAK,KAAK;UAAK;YAG7B,GAAGN,KAAK;YACRtB,OAAO,EAAEuG,KAAA;cAAA,IAAC;gBACR1F,KAAK,EAAE;kBAAEkF,KAAK,EAAES,UAAU;kBAAE,GAAGC;gBAAU;cAC3C,CAAC,GAAAF,KAAA;cAAA,OAAAG,mBAAA,CAAAC,SAAA,SAEK9F,KAAK,CAACpB,MAAM,IAAAiH,mBAAA;gBAAA;cAAA,IAER7F,KAAK,CAACpB,MAAM,EAEjB,EAAAmH,eAAA,CAAAF,mBAAA,aAAAb,WAAA;gBAAA,OAGOxD,WAAW;gBAAA,SACTmE,UAAU;gBAAA,SACVjF,KAAK,CAACK,KAAK;gBAAA,WACTsB,OAAO;gBAAA,aAILrC,KAAK,CAAC1B,SAAS;gBAAA,YAChBiH,UAAU,CAACxE,KAAK;gBAAA,YAChBsE,UAAU,CAACtE,KAAK;gBAAA,eACbf,KAAK,CAACnB,WAAW;gBAAA,QACxBmB,KAAK,CAACf,IAAI;gBAAA,QACVwC,YAAY,CAACuE,SAAS,CAACjF,KAAK;gBAAA,gBACpBU,YAAY,CAACwE,iBAAiB,CAAClF,KAAK;gBAAA,WACzCa,OAAO;gBAAA,UACRf;cAAI,GACR+E,SAAS,EACTnB,UAAU,YAAAtH,UAAA,EAbD;gBACZ+I,OAAO,EAAEpF;cACX,CAAC,EAAE,IAAI;gBAAAqF,IAAA;cAAA,MAcPnG,KAAK,CAAC5B,QAAQ,IAAA2H,eAAA,CAAAF,mBAAA;gBAAA,SAAAO,eAAA,CAEL,CACLT,UAAU,EACV,mBAAmB,CACpB;gBAAA,MACI,GAAGC,SAAS,CAACR,EAAE,QAAQ;gBAAA,uBAAAH,MAAA,IAClBvE,KAAK,CAACK,KAAK,GAAAkE,MAAA;gBAAA,OACfrC,QAAQ;gBAAA;gBAAA;cAAA,YAAAyD,WAAA,EADJ3F,KAAK,CAACK,KAAK,GAKxB,EAECf,KAAK,CAACP,MAAM,IAAAoG,mBAAA;gBAAA;cAAA,IAER7F,KAAK,CAACP,MAAM,EAEjB;YAAA;UAEJ;QAAA,CAGN;QACD8E,OAAO,EAAED,UAAU,GAAGsB,SAAS,IAAAC,mBAAA,CAAAC,SAAA,SAEzBrF,KAAK,CAAC8D,OAAO,GAAGqB,SAAS,CAAC,EAE1BvB,UAAU,IAAAwB,mBAAA,CAAAC,SAAA,SAAAD,mBAAA,sBAAAd,YAAA,CAAAvI,QAAA;UAAA,UAKGwD,KAAK,CAACjB,iBAAiB,IAAI4B,SAAS,CAACI,KAAK;UAAA,SAC3CrC,YAAY,CAACqC,KAAK;UAAA,OACpBG,GAAG,CAACH,KAAK;UAAA,YACJf,KAAK,CAACsG;QAAQ,GACP7F,KAAK,CAAClC,OAAO,GAGpC,EAEJ,GAAG6C;MAAS;IAIrB,CAAC,CAAC;IAEF,OAAOnE,WAAW,CAAC,CAAC,CAAC,EAAEoE,SAAS,EAAEC,SAAS,EAAEE,WAAW,CAAC;EAC3D;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VTextarea.js","names":["VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useDisplay","makeAutocompleteProps","useAutocomplete","useAutofocus","useFocus","forwardRefs","useProxiedModel","vIntersect","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","onIntersect","value","toString","length","max","maxlength","undefined","vInputRef","vFieldRef","controlHeight","textareaRef","scrollbarWidth","platform","autocomplete","isActive","active","onFocus","isSuppressing","update","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","el","target","trim","caretPosition","selectionStart","selectionEnd","sizerRef","isPlainOrUnderlined","includes","variant","calculateInputHeight","firefox","offsetWidth","clientWidth","Math","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","maxHeight","Infinity","newHeight","floor","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","_createElementVNode","_Fragment","_withDirectives","fieldName","fieldAutocomplete","handler","once","_normalizeClass","_vModelText","disabled"],"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 { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeAutocompleteProps, useAutocomplete } from '@/composables/autocomplete'\nimport { useAutofocus } from '@/composables/autofocus'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport vIntersect 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 ...makeAutocompleteProps(),\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: { vIntersect },\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 'update:rows': (rows: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const { onIntersect } = useAutofocus(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 const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const controlHeight = shallowRef('')\n const textareaRef = ref<HTMLInputElement>()\n const scrollbarWidth = ref(0)\n const { platform } = useDisplay()\n const autocomplete = useAutocomplete(props)\n const isActive = computed(() => (\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n\n function onFocus () {\n if (autocomplete.isSuppressing.value) {\n autocomplete.update()\n }\n\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(Number(props.rows))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n watchEffect(() => {\n if (!props.autoGrow) rows.value = Number(props.rows)\n })\n function calculateInputHeight () {\n nextTick(() => {\n if (!textareaRef.value) return\n if (platform.value.firefox) {\n scrollbarWidth.value = 12\n return\n }\n const { offsetWidth, clientWidth } = textareaRef.value\n scrollbarWidth.value = Math.max(0, offsetWidth - clientWidth)\n })\n\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 watch(rows, val => {\n emit('update:rows', val)\n })\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 = {\n ...VField.filterProps(props),\n 'onClick:clear': onClear,\n }\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-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={[\n {\n '--v-textarea-scroll-bar-width': convertToUnit(scrollbarWidth.value),\n },\n props.style,\n ]}\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ rows.value === 1 && !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n style={{\n '--v-textarea-control-height': controlHeight.value,\n }}\n onClick={ onControlClick }\n onMousedown={ onControlMousedown }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\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 details={ hasDetails.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={ autocomplete.fieldName.value }\n autocomplete={ autocomplete.fieldAutocomplete.value }\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 id={ `${slotProps.id}-sizer` }\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 disabled={ props.disabled }\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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","ignoreList":[]}
|
|
@@ -15,11 +15,13 @@
|
|
|
15
15
|
.v-field__input
|
|
16
16
|
$a: calc((var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0)) - 6px)
|
|
17
17
|
$b: calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) + 4px)
|
|
18
|
+
$c: calc(100% - var(--v-textarea-scroll-bar-width, 16px))
|
|
18
19
|
|
|
19
20
|
flex: 1 1 auto
|
|
20
21
|
outline: none
|
|
21
|
-
|
|
22
|
-
mask-image: linear-gradient(to bottom, transparent, transparent $a, black $b)
|
|
22
|
+
|
|
23
|
+
-webkit-mask-image: linear-gradient(to bottom, transparent, transparent $a, black $b), linear-gradient(to right, transparent, transparent $c, black $c)
|
|
24
|
+
mask-image: linear-gradient(to bottom, transparent, transparent $a, black $b), linear-gradient(to right, transparent, transparent $c, black $c)
|
|
23
25
|
|
|
24
26
|
&.v-textarea__sizer
|
|
25
27
|
visibility: hidden
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Types
|
|
2
2
|
import type { PropType } from 'vue';
|
|
3
|
-
import type { VTreeviewChildrenSlots } from './VTreeviewChildren.js';
|
|
4
3
|
import type { InternalListItem } from '../VList/VList.js';
|
|
5
4
|
import type { GenericProps, IndentLinesVariant } from '../../util/index.js';
|
|
6
5
|
export declare const makeVTreeviewProps: <Defaults extends {
|
|
@@ -68,6 +67,8 @@ export declare const makeVTreeviewProps: <Defaults extends {
|
|
|
68
67
|
openAll?: unknown;
|
|
69
68
|
indentLines?: unknown;
|
|
70
69
|
search?: unknown;
|
|
70
|
+
hideNoData?: unknown;
|
|
71
|
+
noDataText?: unknown;
|
|
71
72
|
modelValue?: unknown;
|
|
72
73
|
} = {}>(defaults?: Defaults | undefined) => {
|
|
73
74
|
theme: unknown extends Defaults["theme"] ? StringConstructor : {
|
|
@@ -508,6 +509,20 @@ export declare const makeVTreeviewProps: <Defaults extends {
|
|
|
508
509
|
type: PropType<unknown extends Defaults["search"] ? string : string | Defaults["search"]>;
|
|
509
510
|
default: unknown extends Defaults["search"] ? string : string | Defaults["search"];
|
|
510
511
|
};
|
|
512
|
+
hideNoData: unknown extends Defaults["hideNoData"] ? BooleanConstructor : {
|
|
513
|
+
type: PropType<unknown extends Defaults["hideNoData"] ? boolean : boolean | Defaults["hideNoData"]>;
|
|
514
|
+
default: unknown extends Defaults["hideNoData"] ? boolean : boolean | Defaults["hideNoData"];
|
|
515
|
+
};
|
|
516
|
+
noDataText: unknown extends Defaults["noDataText"] ? {
|
|
517
|
+
type: StringConstructor;
|
|
518
|
+
default: string;
|
|
519
|
+
} : Omit<{
|
|
520
|
+
type: StringConstructor;
|
|
521
|
+
default: string;
|
|
522
|
+
}, "default" | "type"> & {
|
|
523
|
+
type: PropType<unknown extends Defaults["noDataText"] ? string : string | Defaults["noDataText"]>;
|
|
524
|
+
default: unknown extends Defaults["noDataText"] ? string : string | Defaults["noDataText"];
|
|
525
|
+
};
|
|
511
526
|
modelValue: unknown extends Defaults["modelValue"] ? ArrayConstructor : {
|
|
512
527
|
type: PropType<unknown extends Defaults["modelValue"] ? unknown[] : unknown[] | Defaults["modelValue"]>;
|
|
513
528
|
default: unknown extends Defaults["modelValue"] ? unknown[] : unknown[] | Defaults["modelValue"];
|
|
@@ -545,6 +560,8 @@ export declare const VTreeview: {
|
|
|
545
560
|
indeterminateIcon: import("../../composables/icons.js").IconValue;
|
|
546
561
|
separateRoots: boolean;
|
|
547
562
|
openAll: boolean;
|
|
563
|
+
hideNoData: boolean;
|
|
564
|
+
noDataText: string;
|
|
548
565
|
} & {
|
|
549
566
|
theme?: string | undefined;
|
|
550
567
|
class?: any;
|
|
@@ -618,7 +635,7 @@ export declare const VTreeview: {
|
|
|
618
635
|
value: boolean;
|
|
619
636
|
path: unknown[];
|
|
620
637
|
}) => true;
|
|
621
|
-
}, "$children" | "items" | "v-slot:append" | "v-slot:default" | "v-slot:divider" | "v-slot:footer" | "v-slot:header" | "v-slot:item" | "v-slot:prepend" | "v-slot:subheader" | "v-slot:subtitle" | "v-slot:title" | "v-slot:toggle" | "v-slots">, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
|
638
|
+
}, "$children" | "items" | "v-slot:append" | "v-slot:default" | "v-slot:divider" | "v-slot:footer" | "v-slot:header" | "v-slot:item" | "v-slot:no-data" | "v-slot:prepend" | "v-slot:subheader" | "v-slot:subtitle" | "v-slot:title" | "v-slot:toggle" | "v-slots">, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
|
622
639
|
style: import("vue").StyleValue;
|
|
623
640
|
filterKeys: import("../../composables/filter.js").FilterKeys;
|
|
624
641
|
filterMode: import("../../composables/filter.js").FilterMode;
|
|
@@ -651,6 +668,8 @@ export declare const VTreeview: {
|
|
|
651
668
|
indeterminateIcon: import("../../composables/icons.js").IconValue;
|
|
652
669
|
separateRoots: boolean;
|
|
653
670
|
openAll: boolean;
|
|
671
|
+
hideNoData: boolean;
|
|
672
|
+
noDataText: string;
|
|
654
673
|
}, true, {}, import("vue").SlotsType<Partial<{
|
|
655
674
|
prepend: (arg: import("../VList/VListItem.js").ListItemSlot & {
|
|
656
675
|
item: unknown;
|
|
@@ -742,6 +761,9 @@ export declare const VTreeview: {
|
|
|
742
761
|
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
743
762
|
[key: string]: any;
|
|
744
763
|
}>[];
|
|
764
|
+
"no-data": () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
765
|
+
[key: string]: any;
|
|
766
|
+
}>[];
|
|
745
767
|
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
746
768
|
P: {};
|
|
747
769
|
B: {};
|
|
@@ -780,6 +802,8 @@ export declare const VTreeview: {
|
|
|
780
802
|
indeterminateIcon: import("../../composables/icons.js").IconValue;
|
|
781
803
|
separateRoots: boolean;
|
|
782
804
|
openAll: boolean;
|
|
805
|
+
hideNoData: boolean;
|
|
806
|
+
noDataText: string;
|
|
783
807
|
} & {
|
|
784
808
|
theme?: string | undefined;
|
|
785
809
|
class?: any;
|
|
@@ -871,6 +895,8 @@ export declare const VTreeview: {
|
|
|
871
895
|
indeterminateIcon: import("../../composables/icons.js").IconValue;
|
|
872
896
|
separateRoots: boolean;
|
|
873
897
|
openAll: boolean;
|
|
898
|
+
hideNoData: boolean;
|
|
899
|
+
noDataText: string;
|
|
874
900
|
}>;
|
|
875
901
|
__isFragment?: undefined;
|
|
876
902
|
__isTeleport?: undefined;
|
|
@@ -906,6 +932,8 @@ export declare const VTreeview: {
|
|
|
906
932
|
indeterminateIcon: import("../../composables/icons.js").IconValue;
|
|
907
933
|
separateRoots: boolean;
|
|
908
934
|
openAll: boolean;
|
|
935
|
+
hideNoData: boolean;
|
|
936
|
+
noDataText: string;
|
|
909
937
|
} & {
|
|
910
938
|
theme?: string | undefined;
|
|
911
939
|
class?: any;
|
|
@@ -979,7 +1007,7 @@ export declare const VTreeview: {
|
|
|
979
1007
|
value: boolean;
|
|
980
1008
|
path: unknown[];
|
|
981
1009
|
}) => true;
|
|
982
|
-
}, "$children" | "items" | "v-slot:append" | "v-slot:default" | "v-slot:divider" | "v-slot:footer" | "v-slot:header" | "v-slot:item" | "v-slot:prepend" | "v-slot:subheader" | "v-slot:subtitle" | "v-slot:title" | "v-slot:toggle" | "v-slots">, string, {
|
|
1010
|
+
}, "$children" | "items" | "v-slot:append" | "v-slot:default" | "v-slot:divider" | "v-slot:footer" | "v-slot:header" | "v-slot:item" | "v-slot:no-data" | "v-slot:prepend" | "v-slot:subheader" | "v-slot:subtitle" | "v-slot:title" | "v-slot:toggle" | "v-slots">, string, {
|
|
983
1011
|
style: import("vue").StyleValue;
|
|
984
1012
|
filterKeys: import("../../composables/filter.js").FilterKeys;
|
|
985
1013
|
filterMode: import("../../composables/filter.js").FilterMode;
|
|
@@ -1012,6 +1040,8 @@ export declare const VTreeview: {
|
|
|
1012
1040
|
indeterminateIcon: import("../../composables/icons.js").IconValue;
|
|
1013
1041
|
separateRoots: boolean;
|
|
1014
1042
|
openAll: boolean;
|
|
1043
|
+
hideNoData: boolean;
|
|
1044
|
+
noDataText: string;
|
|
1015
1045
|
}, {}, string, import("vue").SlotsType<Partial<{
|
|
1016
1046
|
prepend: (arg: import("../VList/VListItem.js").ListItemSlot & {
|
|
1017
1047
|
item: unknown;
|
|
@@ -1103,11 +1133,158 @@ export declare const VTreeview: {
|
|
|
1103
1133
|
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
1104
1134
|
[key: string]: any;
|
|
1105
1135
|
}>[];
|
|
1136
|
+
"no-data": () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
1137
|
+
[key: string]: any;
|
|
1138
|
+
}>[];
|
|
1106
1139
|
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new <T>(props: {
|
|
1107
1140
|
items?: T[] | undefined;
|
|
1108
|
-
}, slots:
|
|
1141
|
+
}, slots: {
|
|
1142
|
+
prepend: import("../VList/VListItem.js").ListItemSlot & {
|
|
1143
|
+
item: T;
|
|
1144
|
+
internalItem: InternalListItem<T>;
|
|
1145
|
+
};
|
|
1146
|
+
append: import("../VList/VListItem.js").ListItemSlot & {
|
|
1147
|
+
item: T;
|
|
1148
|
+
internalItem: InternalListItem<T>;
|
|
1149
|
+
};
|
|
1150
|
+
title: import("../VList/VListItem.js").ListItemTitleSlot & {
|
|
1151
|
+
item: T;
|
|
1152
|
+
internalItem: InternalListItem<T>;
|
|
1153
|
+
};
|
|
1154
|
+
subtitle: import("../VList/VListItem.js").ListItemSubtitleSlot & {
|
|
1155
|
+
item: T;
|
|
1156
|
+
internalItem: InternalListItem<T>;
|
|
1157
|
+
};
|
|
1158
|
+
toggle: import("../VList/VListItem.js").ListItemSlot & {
|
|
1159
|
+
props: {
|
|
1160
|
+
onClick: (e: PointerEvent) => void;
|
|
1161
|
+
};
|
|
1162
|
+
} & {
|
|
1163
|
+
loading: boolean;
|
|
1164
|
+
} & {
|
|
1165
|
+
item: T;
|
|
1166
|
+
internalItem: InternalListItem<T>;
|
|
1167
|
+
};
|
|
1168
|
+
} & {
|
|
1169
|
+
default: never;
|
|
1170
|
+
item: {
|
|
1171
|
+
props: {
|
|
1172
|
+
[key: string]: any;
|
|
1173
|
+
title: string;
|
|
1174
|
+
value: any;
|
|
1175
|
+
};
|
|
1176
|
+
item: T;
|
|
1177
|
+
internalItem: InternalListItem<T>;
|
|
1178
|
+
};
|
|
1179
|
+
header: {
|
|
1180
|
+
props: {
|
|
1181
|
+
[key: string]: any;
|
|
1182
|
+
title: string;
|
|
1183
|
+
value: any;
|
|
1184
|
+
};
|
|
1185
|
+
item: T;
|
|
1186
|
+
internalItem: InternalListItem<T>;
|
|
1187
|
+
loading: boolean;
|
|
1188
|
+
};
|
|
1189
|
+
footer: {
|
|
1190
|
+
props: {
|
|
1191
|
+
indentLines?: import("../../util/index.js").IndentLineType[] | undefined;
|
|
1192
|
+
};
|
|
1193
|
+
item: T;
|
|
1194
|
+
internalItem: InternalListItem<T>;
|
|
1195
|
+
loading: boolean;
|
|
1196
|
+
};
|
|
1197
|
+
divider: {
|
|
1198
|
+
props: {
|
|
1199
|
+
[key: string]: any;
|
|
1200
|
+
title: string;
|
|
1201
|
+
value: any;
|
|
1202
|
+
};
|
|
1203
|
+
};
|
|
1204
|
+
subheader: {
|
|
1205
|
+
props: {
|
|
1206
|
+
[key: string]: any;
|
|
1207
|
+
title: string;
|
|
1208
|
+
value: any;
|
|
1209
|
+
};
|
|
1210
|
+
};
|
|
1211
|
+
} & {
|
|
1212
|
+
"no-data": never;
|
|
1213
|
+
}) => GenericProps<{
|
|
1109
1214
|
items?: T[] | undefined;
|
|
1110
|
-
},
|
|
1215
|
+
}, {
|
|
1216
|
+
prepend: import("../VList/VListItem.js").ListItemSlot & {
|
|
1217
|
+
item: T;
|
|
1218
|
+
internalItem: InternalListItem<T>;
|
|
1219
|
+
};
|
|
1220
|
+
append: import("../VList/VListItem.js").ListItemSlot & {
|
|
1221
|
+
item: T;
|
|
1222
|
+
internalItem: InternalListItem<T>;
|
|
1223
|
+
};
|
|
1224
|
+
title: import("../VList/VListItem.js").ListItemTitleSlot & {
|
|
1225
|
+
item: T;
|
|
1226
|
+
internalItem: InternalListItem<T>;
|
|
1227
|
+
};
|
|
1228
|
+
subtitle: import("../VList/VListItem.js").ListItemSubtitleSlot & {
|
|
1229
|
+
item: T;
|
|
1230
|
+
internalItem: InternalListItem<T>;
|
|
1231
|
+
};
|
|
1232
|
+
toggle: import("../VList/VListItem.js").ListItemSlot & {
|
|
1233
|
+
props: {
|
|
1234
|
+
onClick: (e: PointerEvent) => void;
|
|
1235
|
+
};
|
|
1236
|
+
} & {
|
|
1237
|
+
loading: boolean;
|
|
1238
|
+
} & {
|
|
1239
|
+
item: T;
|
|
1240
|
+
internalItem: InternalListItem<T>;
|
|
1241
|
+
};
|
|
1242
|
+
} & {
|
|
1243
|
+
default: never;
|
|
1244
|
+
item: {
|
|
1245
|
+
props: {
|
|
1246
|
+
[key: string]: any;
|
|
1247
|
+
title: string;
|
|
1248
|
+
value: any;
|
|
1249
|
+
};
|
|
1250
|
+
item: T;
|
|
1251
|
+
internalItem: InternalListItem<T>;
|
|
1252
|
+
};
|
|
1253
|
+
header: {
|
|
1254
|
+
props: {
|
|
1255
|
+
[key: string]: any;
|
|
1256
|
+
title: string;
|
|
1257
|
+
value: any;
|
|
1258
|
+
};
|
|
1259
|
+
item: T;
|
|
1260
|
+
internalItem: InternalListItem<T>;
|
|
1261
|
+
loading: boolean;
|
|
1262
|
+
};
|
|
1263
|
+
footer: {
|
|
1264
|
+
props: {
|
|
1265
|
+
indentLines?: import("../../util/index.js").IndentLineType[] | undefined;
|
|
1266
|
+
};
|
|
1267
|
+
item: T;
|
|
1268
|
+
internalItem: InternalListItem<T>;
|
|
1269
|
+
loading: boolean;
|
|
1270
|
+
};
|
|
1271
|
+
divider: {
|
|
1272
|
+
props: {
|
|
1273
|
+
[key: string]: any;
|
|
1274
|
+
title: string;
|
|
1275
|
+
value: any;
|
|
1276
|
+
};
|
|
1277
|
+
};
|
|
1278
|
+
subheader: {
|
|
1279
|
+
props: {
|
|
1280
|
+
[key: string]: any;
|
|
1281
|
+
title: string;
|
|
1282
|
+
value: any;
|
|
1283
|
+
};
|
|
1284
|
+
};
|
|
1285
|
+
} & {
|
|
1286
|
+
"no-data": never;
|
|
1287
|
+
}>) & import("../../util/index.js").FilterPropsOptions<{
|
|
1111
1288
|
theme: StringConstructor;
|
|
1112
1289
|
class: PropType<any>;
|
|
1113
1290
|
style: {
|
|
@@ -1251,6 +1428,11 @@ export declare const VTreeview: {
|
|
|
1251
1428
|
openAll: BooleanConstructor;
|
|
1252
1429
|
indentLines: PropType<boolean | IndentLinesVariant>;
|
|
1253
1430
|
search: StringConstructor;
|
|
1431
|
+
hideNoData: BooleanConstructor;
|
|
1432
|
+
noDataText: {
|
|
1433
|
+
type: StringConstructor;
|
|
1434
|
+
default: string;
|
|
1435
|
+
};
|
|
1254
1436
|
modelValue: ArrayConstructor;
|
|
1255
1437
|
}, import("vue").ExtractPropTypes<{
|
|
1256
1438
|
theme: StringConstructor;
|
|
@@ -1396,6 +1578,11 @@ export declare const VTreeview: {
|
|
|
1396
1578
|
openAll: BooleanConstructor;
|
|
1397
1579
|
indentLines: PropType<boolean | IndentLinesVariant>;
|
|
1398
1580
|
search: StringConstructor;
|
|
1581
|
+
hideNoData: BooleanConstructor;
|
|
1582
|
+
noDataText: {
|
|
1583
|
+
type: StringConstructor;
|
|
1584
|
+
default: string;
|
|
1585
|
+
};
|
|
1399
1586
|
modelValue: ArrayConstructor;
|
|
1400
1587
|
}>>;
|
|
1401
1588
|
export type VTreeview = InstanceType<typeof VTreeview>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
|
|
2
2
|
// Components
|
|
3
3
|
import { makeVTreeviewChildrenProps, VTreeviewChildren } from "./VTreeviewChildren.js";
|
|
4
|
-
import { makeVListProps, useListItems, VList } from "../VList/VList.js";
|
|
4
|
+
import { makeVListProps, useListItems, VList } from "../VList/VList.js";
|
|
5
|
+
import { VListItem } from "../VList/VListItem.js"; // Composables
|
|
6
|
+
import { useLocale } from "../../composables/index.js";
|
|
5
7
|
import { provideDefaults } from "../../composables/defaults.js";
|
|
6
8
|
import { makeFilterProps, useFilter } from "../../composables/filter.js";
|
|
7
9
|
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
|
@@ -20,6 +22,11 @@ export const makeVTreeviewProps = propsFactory({
|
|
|
20
22
|
openAll: Boolean,
|
|
21
23
|
indentLines: [Boolean, String],
|
|
22
24
|
search: String,
|
|
25
|
+
hideNoData: Boolean,
|
|
26
|
+
noDataText: {
|
|
27
|
+
type: String,
|
|
28
|
+
default: '$vuetify.noDataText'
|
|
29
|
+
},
|
|
23
30
|
...makeFilterProps({
|
|
24
31
|
filterKeys: ['title']
|
|
25
32
|
}),
|
|
@@ -47,6 +54,9 @@ export const VTreeview = genericComponent()({
|
|
|
47
54
|
slots,
|
|
48
55
|
emit
|
|
49
56
|
} = _ref;
|
|
57
|
+
const {
|
|
58
|
+
t
|
|
59
|
+
} = useLocale();
|
|
50
60
|
const {
|
|
51
61
|
items
|
|
52
62
|
} = useListItems(props);
|
|
@@ -140,7 +150,10 @@ export const VTreeview = genericComponent()({
|
|
|
140
150
|
"selected": selected.value,
|
|
141
151
|
"onUpdate:selected": $event => selected.value = $event
|
|
142
152
|
}), {
|
|
143
|
-
default: () => [
|
|
153
|
+
default: () => [visibleIds.value?.size === 0 && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {
|
|
154
|
+
"key": "no-data",
|
|
155
|
+
"title": t(props.noDataText)
|
|
156
|
+
}, null)), _createVNode(VTreeviewChildren, _mergeProps(treeviewChildrenProps, {
|
|
144
157
|
"density": props.density,
|
|
145
158
|
"returnObject": props.returnObject,
|
|
146
159
|
"items": items.value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTreeview.js","names":["makeVTreeviewChildrenProps","VTreeviewChildren","makeVListProps","useListItems","VList","provideDefaults","makeFilterProps","useFilter","useProxiedModel","computed","provide","ref","toRaw","toRef","genericComponent","omit","propsFactory","useRender","VTreeviewSymbol","flatten","items","flat","arguments","length","undefined","item","push","children","makeVTreeviewProps","openAll","Boolean","indentLines","String","search","filterKeys","collapseIcon","expandIcon","slim","modelValue","Array","VTreeview","name","props","emits","val","value","setup","_ref","slots","emit","activeColor","baseColor","color","activated","_selected","selected","get","set","vListRef","opened","flatItems","filteredItems","visibleIds","getPath","Set","flatMap","itemVal","returnObject","raw","getChildren","map","id","arr","queue","slice","child","shift","ids","i","concat","VTreeviewGroup","VTreeviewItem","activeClass","density","disabled","lines","variant","listProps","filterProps","treeviewChildrenProps","indentLinesVariant","_createVNode","_mergeProps","fluid","class","style","$event","default"],"sources":["../../../src/components/VTreeview/VTreeview.tsx"],"sourcesContent":["// Components\nimport { makeVTreeviewChildrenProps, VTreeviewChildren } from './VTreeviewChildren'\nimport { makeVListProps, useListItems, VList } from '@/components/VList/VList'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, provide, ref, toRaw, toRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTreeviewSymbol } from './shared'\nimport type { VTreeviewChildrenSlots } from './VTreeviewChildren'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps, IndentLinesVariant } from '@/util'\n\nfunction flatten (items: ListItem[], flat: ListItem[] = []) {\n for (const item of items) {\n flat.push(item)\n if (item.children) flatten(item.children, flat)\n }\n return flat\n}\n\nexport const makeVTreeviewProps = propsFactory({\n openAll: Boolean,\n indentLines: [Boolean, String] as PropType<boolean | IndentLinesVariant>,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...omit(makeVTreeviewChildrenProps(), [\n 'index',\n 'path',\n 'indentLinesVariant',\n 'parentIndentLines',\n 'isLastGroup',\n ]),\n ...omit(makeVListProps({\n collapseIcon: '$treeviewCollapse',\n expandIcon: '$treeviewExpand',\n slim: true,\n }), ['nav', 'openStrategy']),\n\n modelValue: Array,\n}, 'VTreeview')\n\nexport const VTreeview = genericComponent<new <T>(\n props: {\n items?: T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeview',\n\n props: makeVTreeviewProps(),\n\n emits: {\n 'update:opened': (val: unknown) => true,\n 'update:activated': (val: unknown) => true,\n 'update:selected': (val: unknown) => true,\n 'update:modelValue': (val: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots, emit }) {\n const { items } = useListItems(props)\n const activeColor = toRef(() => props.activeColor)\n const baseColor = toRef(() => props.baseColor)\n const color = toRef(() => props.color)\n const activated = useProxiedModel(props, 'activated')\n const _selected = useProxiedModel(props, 'selected')\n\n const selected = computed({\n get: () => props.modelValue ?? _selected.value,\n set (val) {\n _selected.value = val\n emit('update:modelValue', val)\n },\n })\n\n const vListRef = ref<VList>()\n\n const opened = computed(() => props.openAll ? openAll(items.value) : props.opened)\n const flatItems = computed(() => flatten(items.value))\n const search = toRef(() => props.search)\n const { filteredItems } = useFilter(props, flatItems, search)\n const visibleIds = computed(() => {\n if (!search.value) return null\n const getPath = vListRef.value?.getPath\n if (!getPath) return null\n return new Set(filteredItems.value.flatMap(item => {\n const itemVal = props.returnObject ? item.raw : item.props.value\n return [\n ...getPath(itemVal),\n ...getChildren(itemVal),\n ].map(toRaw)\n }))\n })\n\n function getChildren (id: unknown) {\n const arr: unknown[] = []\n const queue = ((vListRef.value?.children.get(id) ?? []).slice())\n while (queue.length) {\n const child = queue.shift()\n if (!child) continue\n arr.push(child)\n queue.push(...((vListRef.value?.children.get(child) ?? []).slice()))\n }\n return arr\n }\n\n function openAll (items: InternalListItem<any>[]) {\n let ids: any[] = []\n\n for (const i of items) {\n if (!i.children) continue\n\n ids.push(props.returnObject ? toRaw(i.raw) : i.value)\n\n if (i.children) {\n ids = ids.concat(openAll(i.children))\n }\n }\n\n return ids\n }\n\n provide(VTreeviewSymbol, { visibleIds })\n\n provideDefaults({\n VTreeviewGroup: {\n activeColor,\n baseColor,\n color,\n collapseIcon: toRef(() => props.collapseIcon),\n expandIcon: toRef(() => props.expandIcon),\n },\n VTreeviewItem: {\n activeClass: toRef(() => props.activeClass),\n activeColor,\n baseColor,\n color,\n density: toRef(() => props.density),\n disabled: toRef(() => props.disabled),\n lines: toRef(() => props.lines),\n variant: toRef(() => props.variant),\n },\n })\n\n useRender(() => {\n const listProps = VList.filterProps(props)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n const indentLinesVariant = typeof props.indentLines === 'boolean' ? 'default' : props.indentLines\n\n return (\n <VList\n ref={ vListRef }\n { ...listProps }\n class={[\n 'v-treeview',\n {\n 'v-treeview--fluid': props.fluid,\n },\n props.class,\n ]}\n openStrategy=\"multiple\"\n style={ props.style }\n opened={ opened.value }\n v-model:activated={ activated.value }\n v-model:selected={ selected.value }\n >\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n density={ props.density }\n returnObject={ props.returnObject }\n items={ items.value }\n parentIndentLines={ props.indentLines ? [] : undefined }\n indentLinesVariant={ indentLinesVariant }\n v-slots={ slots }\n ></VTreeviewChildren>\n </VList>\n )\n })\n\n return { }\n },\n})\n\nexport type VTreeview = InstanceType<typeof VTreeview>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VTreeview.js","names":["makeVTreeviewChildrenProps","VTreeviewChildren","makeVListProps","useListItems","VList","VListItem","useLocale","provideDefaults","makeFilterProps","useFilter","useProxiedModel","computed","provide","ref","toRaw","toRef","genericComponent","omit","propsFactory","useRender","VTreeviewSymbol","flatten","items","flat","arguments","length","undefined","item","push","children","makeVTreeviewProps","openAll","Boolean","indentLines","String","search","hideNoData","noDataText","type","default","filterKeys","collapseIcon","expandIcon","slim","modelValue","Array","VTreeview","name","props","emits","val","value","setup","_ref","slots","emit","t","activeColor","baseColor","color","activated","_selected","selected","get","set","vListRef","opened","flatItems","filteredItems","visibleIds","getPath","Set","flatMap","itemVal","returnObject","raw","getChildren","map","id","arr","queue","slice","child","shift","ids","i","concat","VTreeviewGroup","VTreeviewItem","activeClass","density","disabled","lines","variant","listProps","filterProps","treeviewChildrenProps","indentLinesVariant","_createVNode","_mergeProps","fluid","class","style","$event","size"],"sources":["../../../src/components/VTreeview/VTreeview.tsx"],"sourcesContent":["// Components\nimport { makeVTreeviewChildrenProps, VTreeviewChildren } from './VTreeviewChildren'\nimport { makeVListProps, useListItems, VList } from '@/components/VList/VList'\nimport { VListItem } from '@/components/VList/VListItem'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, provide, ref, toRaw, toRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTreeviewSymbol } from './shared'\nimport type { VTreeviewChildrenSlots } from './VTreeviewChildren'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps, IndentLinesVariant } from '@/util'\n\nfunction flatten (items: ListItem[], flat: ListItem[] = []) {\n for (const item of items) {\n flat.push(item)\n if (item.children) flatten(item.children, flat)\n }\n return flat\n}\n\nexport const makeVTreeviewProps = propsFactory({\n openAll: Boolean,\n indentLines: [Boolean, String] as PropType<boolean | IndentLinesVariant>,\n search: String,\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...omit(makeVTreeviewChildrenProps(), [\n 'index',\n 'path',\n 'indentLinesVariant',\n 'parentIndentLines',\n 'isLastGroup',\n ]),\n ...omit(makeVListProps({\n collapseIcon: '$treeviewCollapse',\n expandIcon: '$treeviewExpand',\n slim: true,\n }), ['nav', 'openStrategy']),\n\n modelValue: Array,\n}, 'VTreeview')\n\nexport const VTreeview = genericComponent<new <T>(\n props: {\n items?: T[]\n },\n slots: VTreeviewChildrenSlots<T> & {\n 'no-data': never\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeview',\n\n props: makeVTreeviewProps(),\n\n emits: {\n 'update:opened': (val: unknown) => true,\n 'update:activated': (val: unknown) => true,\n 'update:selected': (val: unknown) => true,\n 'update:modelValue': (val: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots, emit }) {\n const { t } = useLocale()\n const { items } = useListItems(props)\n const activeColor = toRef(() => props.activeColor)\n const baseColor = toRef(() => props.baseColor)\n const color = toRef(() => props.color)\n const activated = useProxiedModel(props, 'activated')\n const _selected = useProxiedModel(props, 'selected')\n\n const selected = computed({\n get: () => props.modelValue ?? _selected.value,\n set (val) {\n _selected.value = val\n emit('update:modelValue', val)\n },\n })\n\n const vListRef = ref<VList>()\n\n const opened = computed(() => props.openAll ? openAll(items.value) : props.opened)\n const flatItems = computed(() => flatten(items.value))\n const search = toRef(() => props.search)\n const { filteredItems } = useFilter(props, flatItems, search)\n const visibleIds = computed(() => {\n if (!search.value) return null\n const getPath = vListRef.value?.getPath\n if (!getPath) return null\n return new Set(filteredItems.value.flatMap(item => {\n const itemVal = props.returnObject ? item.raw : item.props.value\n return [\n ...getPath(itemVal),\n ...getChildren(itemVal),\n ].map(toRaw)\n }))\n })\n\n function getChildren (id: unknown) {\n const arr: unknown[] = []\n const queue = ((vListRef.value?.children.get(id) ?? []).slice())\n while (queue.length) {\n const child = queue.shift()\n if (!child) continue\n arr.push(child)\n queue.push(...((vListRef.value?.children.get(child) ?? []).slice()))\n }\n return arr\n }\n\n function openAll (items: InternalListItem<any>[]) {\n let ids: any[] = []\n\n for (const i of items) {\n if (!i.children) continue\n\n ids.push(props.returnObject ? toRaw(i.raw) : i.value)\n\n if (i.children) {\n ids = ids.concat(openAll(i.children))\n }\n }\n\n return ids\n }\n\n provide(VTreeviewSymbol, { visibleIds })\n\n provideDefaults({\n VTreeviewGroup: {\n activeColor,\n baseColor,\n color,\n collapseIcon: toRef(() => props.collapseIcon),\n expandIcon: toRef(() => props.expandIcon),\n },\n VTreeviewItem: {\n activeClass: toRef(() => props.activeClass),\n activeColor,\n baseColor,\n color,\n density: toRef(() => props.density),\n disabled: toRef(() => props.disabled),\n lines: toRef(() => props.lines),\n variant: toRef(() => props.variant),\n },\n })\n\n useRender(() => {\n const listProps = VList.filterProps(props)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n const indentLinesVariant = typeof props.indentLines === 'boolean' ? 'default' : props.indentLines\n\n return (\n <VList\n ref={ vListRef }\n { ...listProps }\n class={[\n 'v-treeview',\n {\n 'v-treeview--fluid': props.fluid,\n },\n props.class,\n ]}\n openStrategy=\"multiple\"\n style={ props.style }\n opened={ opened.value }\n v-model:activated={ activated.value }\n v-model:selected={ selected.value }\n >\n { visibleIds.value?.size === 0 && !props.hideNoData && (\n slots['no-data']?.() ?? (<VListItem key=\"no-data\" title={ t(props.noDataText) } />)\n )}\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n density={ props.density }\n returnObject={ props.returnObject }\n items={ items.value }\n parentIndentLines={ props.indentLines ? [] : undefined }\n indentLinesVariant={ indentLinesVariant }\n v-slots={ slots }\n ></VTreeviewChildren>\n </VList>\n )\n })\n\n return { }\n },\n})\n\nexport type VTreeview = InstanceType<typeof VTreeview>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -347,8 +347,6 @@ export declare const VClassIcon: {
|
|
|
347
347
|
};
|
|
348
348
|
}>>;
|
|
349
349
|
export type VClassIcon = InstanceType<typeof VClassIcon>;
|
|
350
|
-
// Composables
|
|
351
|
-
export declare function createIcons(options?: IconOptions): InternalIconOptions;
|
|
352
350
|
export declare const useIcon: (props: MaybeRefOrGetter<IconValue | undefined>) => {
|
|
353
351
|
iconData: import("vue").ComputedRef<IconInstance>;
|
|
354
352
|
};
|