@vuetify/nightly 3.1.13 → 3.1.14-master-20230406.0
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 +11 -2
- package/dist/json/attributes.json +24 -4
- package/dist/json/importMap.json +40 -40
- package/dist/json/tags.json +5 -0
- package/dist/json/web-types.json +83 -38
- package/dist/vuetify-labs.css +1141 -1136
- package/dist/vuetify-labs.d.ts +140 -84
- package/dist/vuetify-labs.esm.js +29 -24
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +29 -24
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +344 -339
- package/dist/vuetify.d.ts +41 -11
- package/dist/vuetify.esm.js +13 -9
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +13 -9
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +9 -8
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +6 -0
- package/lib/components/VCombobox/index.d.ts +6 -0
- package/lib/components/VProgressCircular/VProgressCircular.css +3 -1
- package/lib/components/VProgressCircular/VProgressCircular.sass +3 -1
- package/lib/components/VProgressCircular/_variables.scss +1 -0
- package/lib/components/VProgressLinear/VProgressLinear.css +5 -2
- package/lib/components/VProgressLinear/VProgressLinear.sass +3 -0
- package/lib/components/VProgressLinear/_variables.scss +1 -1
- package/lib/components/VSelect/index.d.ts +6 -0
- package/lib/components/VTextField/VTextField.mjs +2 -1
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.ts +6 -0
- package/lib/components/VTextarea/VTextarea.mjs +8 -5
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/index.d.ts +6 -0
- package/lib/components/index.d.ts +30 -0
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +11 -11
- package/lib/labs/VDataTable/VDataTable.mjs +4 -4
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +5 -7
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +3 -2
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +4 -2
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +110 -84
- package/lib/labs/components.d.ts +110 -84
- package/package.json +2 -2
|
@@ -292,6 +292,7 @@ declare const VAutocomplete: {
|
|
|
292
292
|
persistentCounter: BooleanConstructor;
|
|
293
293
|
suffix: StringConstructor;
|
|
294
294
|
counterValue: vue.PropType<(value: any) => number>;
|
|
295
|
+
modelModifiers: vue.PropType<Record<string, boolean>>;
|
|
295
296
|
items: {
|
|
296
297
|
type: vue.PropType<any[]>;
|
|
297
298
|
default: () => never[];
|
|
@@ -774,6 +775,7 @@ declare const VAutocomplete: {
|
|
|
774
775
|
persistentCounter: BooleanConstructor;
|
|
775
776
|
suffix: StringConstructor;
|
|
776
777
|
counterValue: vue.PropType<(value: any) => number>;
|
|
778
|
+
modelModifiers: vue.PropType<Record<string, boolean>>;
|
|
777
779
|
items: {
|
|
778
780
|
type: vue.PropType<any[]>;
|
|
779
781
|
default: () => never[];
|
|
@@ -1318,6 +1320,7 @@ declare const VAutocomplete: {
|
|
|
1318
1320
|
persistentCounter: BooleanConstructor;
|
|
1319
1321
|
suffix: StringConstructor;
|
|
1320
1322
|
counterValue: vue.PropType<(value: any) => number>;
|
|
1323
|
+
modelModifiers: vue.PropType<Record<string, boolean>>;
|
|
1321
1324
|
items: {
|
|
1322
1325
|
type: vue.PropType<any[]>;
|
|
1323
1326
|
default: () => never[];
|
|
@@ -1799,6 +1802,7 @@ declare const VAutocomplete: {
|
|
|
1799
1802
|
persistentCounter: BooleanConstructor;
|
|
1800
1803
|
suffix: StringConstructor;
|
|
1801
1804
|
counterValue: vue.PropType<(value: any) => number>;
|
|
1805
|
+
modelModifiers: vue.PropType<Record<string, boolean>>;
|
|
1802
1806
|
items: {
|
|
1803
1807
|
type: vue.PropType<any[]>;
|
|
1804
1808
|
default: () => never[];
|
|
@@ -2439,6 +2443,7 @@ declare const VAutocomplete: {
|
|
|
2439
2443
|
persistentCounter: BooleanConstructor;
|
|
2440
2444
|
suffix: StringConstructor;
|
|
2441
2445
|
counterValue: vue.PropType<(value: any) => number>;
|
|
2446
|
+
modelModifiers: vue.PropType<Record<string, boolean>>;
|
|
2442
2447
|
items: {
|
|
2443
2448
|
type: vue.PropType<any[]>;
|
|
2444
2449
|
default: () => never[];
|
|
@@ -2904,6 +2909,7 @@ declare const VAutocomplete: {
|
|
|
2904
2909
|
persistentCounter: BooleanConstructor;
|
|
2905
2910
|
suffix: StringConstructor;
|
|
2906
2911
|
counterValue: vue.PropType<(value: any) => number>;
|
|
2912
|
+
modelModifiers: vue.PropType<Record<string, boolean>>;
|
|
2907
2913
|
items: {
|
|
2908
2914
|
type: vue.PropType<any[]>;
|
|
2909
2915
|
default: () => never[];
|
|
@@ -292,6 +292,7 @@ declare const VCombobox: {
|
|
|
292
292
|
persistentCounter: BooleanConstructor;
|
|
293
293
|
suffix: StringConstructor;
|
|
294
294
|
counterValue: PropType<(value: any) => number>;
|
|
295
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
295
296
|
items: {
|
|
296
297
|
type: PropType<any[]>;
|
|
297
298
|
default: () => never[];
|
|
@@ -780,6 +781,7 @@ declare const VCombobox: {
|
|
|
780
781
|
persistentCounter: BooleanConstructor;
|
|
781
782
|
suffix: StringConstructor;
|
|
782
783
|
counterValue: PropType<(value: any) => number>;
|
|
784
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
783
785
|
items: {
|
|
784
786
|
type: PropType<any[]>;
|
|
785
787
|
default: () => never[];
|
|
@@ -1329,6 +1331,7 @@ declare const VCombobox: {
|
|
|
1329
1331
|
persistentCounter: BooleanConstructor;
|
|
1330
1332
|
suffix: StringConstructor;
|
|
1331
1333
|
counterValue: PropType<(value: any) => number>;
|
|
1334
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
1332
1335
|
items: {
|
|
1333
1336
|
type: PropType<any[]>;
|
|
1334
1337
|
default: () => never[];
|
|
@@ -1815,6 +1818,7 @@ declare const VCombobox: {
|
|
|
1815
1818
|
persistentCounter: BooleanConstructor;
|
|
1816
1819
|
suffix: StringConstructor;
|
|
1817
1820
|
counterValue: PropType<(value: any) => number>;
|
|
1821
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
1818
1822
|
items: {
|
|
1819
1823
|
type: PropType<any[]>;
|
|
1820
1824
|
default: () => never[];
|
|
@@ -2460,6 +2464,7 @@ declare const VCombobox: {
|
|
|
2460
2464
|
persistentCounter: BooleanConstructor;
|
|
2461
2465
|
suffix: StringConstructor;
|
|
2462
2466
|
counterValue: PropType<(value: any) => number>;
|
|
2467
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
2463
2468
|
items: {
|
|
2464
2469
|
type: PropType<any[]>;
|
|
2465
2470
|
default: () => never[];
|
|
@@ -2931,6 +2936,7 @@ declare const VCombobox: {
|
|
|
2931
2936
|
persistentCounter: BooleanConstructor;
|
|
2932
2937
|
suffix: StringConstructor;
|
|
2933
2938
|
counterValue: PropType<(value: any) => number>;
|
|
2939
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
2934
2940
|
items: {
|
|
2935
2941
|
type: PropType<any[]>;
|
|
2936
2942
|
default: () => never[];
|
|
@@ -62,10 +62,12 @@
|
|
|
62
62
|
transition: all 0.2s ease-in-out;
|
|
63
63
|
}
|
|
64
64
|
.v-progress-circular--indeterminate .v-progress-circular__overlay {
|
|
65
|
-
animation: progress-circular-dash 1.4s ease-in-out infinite;
|
|
65
|
+
animation: progress-circular-dash 1.4s ease-in-out infinite, progress-circular-rotate 1.4s linear infinite;
|
|
66
66
|
stroke-dasharray: 25, 200;
|
|
67
67
|
stroke-dashoffset: 0;
|
|
68
68
|
stroke-linecap: round;
|
|
69
|
+
transform-origin: center center;
|
|
70
|
+
transform: rotate(-90deg);
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
.v-progress-circular--disable-shrink > svg {
|
|
@@ -52,10 +52,12 @@
|
|
|
52
52
|
transition: $progress-circular-intermediate-svg-transition
|
|
53
53
|
|
|
54
54
|
.v-progress-circular__overlay
|
|
55
|
-
animation: $progress-circular-rotate-dash
|
|
55
|
+
animation: $progress-circular-rotate-dash, $progress-circular-rotate-animation
|
|
56
56
|
stroke-dasharray: 25, 200
|
|
57
57
|
stroke-dashoffset: 0
|
|
58
58
|
stroke-linecap: round
|
|
59
|
+
transform-origin: center center
|
|
60
|
+
transform: $progress-circular-overlay-transform
|
|
59
61
|
|
|
60
62
|
.v-progress-circular--disable-shrink
|
|
61
63
|
> svg
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// VProgressCircular
|
|
2
2
|
$progress-circular-intermediate-svg-transition: all 0.2s ease-in-out !default;
|
|
3
3
|
$progress-circular-overlay-transition: all 0.2s ease-in-out, stroke-width 0s !default;
|
|
4
|
+
$progress-circular-overlay-transform: rotate(calc(-90deg)) !default;
|
|
4
5
|
$progress-circular-rotate-animation: progress-circular-rotate 1.4s linear infinite !default;
|
|
5
6
|
$progress-circular-rotate-dash: progress-circular-dash 1.4s ease-in-out infinite !default;
|
|
6
7
|
$progress-circular-size: 32px !default;
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
6
6
|
width: 100%;
|
|
7
7
|
}
|
|
8
|
+
.v-progress-linear--rounded {
|
|
9
|
+
border-radius: 9999px;
|
|
10
|
+
}
|
|
8
11
|
|
|
9
12
|
.v-progress-linear__background {
|
|
10
13
|
background: currentColor;
|
|
@@ -109,7 +112,7 @@
|
|
|
109
112
|
}
|
|
110
113
|
|
|
111
114
|
.v-progress-linear--rounded {
|
|
112
|
-
border-radius:
|
|
115
|
+
border-radius: 9999px;
|
|
113
116
|
}
|
|
114
117
|
.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__determinate,
|
|
115
118
|
.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__indeterminate {
|
|
@@ -133,7 +136,7 @@
|
|
|
133
136
|
.v-progress-linear--rounded-bar .v-progress-linear__determinate,
|
|
134
137
|
.v-progress-linear--rounded-bar .v-progress-linear__indeterminate,
|
|
135
138
|
.v-progress-linear--rounded-bar .v-progress-linear__stream + .v-progress-linear__background {
|
|
136
|
-
border-radius:
|
|
139
|
+
border-radius: 9999px;
|
|
137
140
|
}
|
|
138
141
|
.v-progress-linear--rounded-bar .v-progress-linear__determinate.v-locale--is-ltr, .v-locale--is-ltr .v-progress-linear--rounded-bar .v-progress-linear__determinate {
|
|
139
142
|
border-top-left-radius: 0;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
$progress-linear-background: currentColor !default;
|
|
5
5
|
$progress-linear-background-background: $progress-linear-background !default;
|
|
6
6
|
$progress-linear-background-opacity: var(--v-border-opacity) !default;
|
|
7
|
-
$progress-linear-border-radius: settings.$
|
|
7
|
+
$progress-linear-border-radius: map-get(settings.$rounded, 'pill') !default;
|
|
8
8
|
$progress-linear-stream-opacity: 0.3 !default;
|
|
9
9
|
$progress-linear-stripe-background-size: 40px 40px !default;
|
|
10
10
|
$progress-linear-stream-border-width: 4px !default;
|
|
@@ -589,6 +589,7 @@ declare const VSelect: {
|
|
|
589
589
|
persistentCounter: BooleanConstructor;
|
|
590
590
|
suffix: StringConstructor;
|
|
591
591
|
counterValue: PropType<(value: any) => number>;
|
|
592
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
592
593
|
items: {
|
|
593
594
|
type: PropType<any[]>;
|
|
594
595
|
default: () => never[];
|
|
@@ -1266,6 +1267,7 @@ declare const VSelect: {
|
|
|
1266
1267
|
persistentCounter: BooleanConstructor;
|
|
1267
1268
|
suffix: StringConstructor;
|
|
1268
1269
|
counterValue: PropType<(value: any) => number>;
|
|
1270
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
1269
1271
|
items: {
|
|
1270
1272
|
type: PropType<any[]>;
|
|
1271
1273
|
default: () => never[];
|
|
@@ -2099,6 +2101,7 @@ declare const VSelect: {
|
|
|
2099
2101
|
persistentCounter: BooleanConstructor;
|
|
2100
2102
|
suffix: StringConstructor;
|
|
2101
2103
|
counterValue: PropType<(value: any) => number>;
|
|
2104
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
2102
2105
|
items: {
|
|
2103
2106
|
type: PropType<any[]>;
|
|
2104
2107
|
default: () => never[];
|
|
@@ -2769,6 +2772,7 @@ declare const VSelect: {
|
|
|
2769
2772
|
persistentCounter: BooleanConstructor;
|
|
2770
2773
|
suffix: StringConstructor;
|
|
2771
2774
|
counterValue: PropType<(value: any) => number>;
|
|
2775
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
2772
2776
|
items: {
|
|
2773
2777
|
type: PropType<any[]>;
|
|
2774
2778
|
default: () => never[];
|
|
@@ -3698,6 +3702,7 @@ declare const VSelect: {
|
|
|
3698
3702
|
persistentCounter: BooleanConstructor;
|
|
3699
3703
|
suffix: StringConstructor;
|
|
3700
3704
|
counterValue: PropType<(value: any) => number>;
|
|
3705
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
3701
3706
|
items: {
|
|
3702
3707
|
type: PropType<any[]>;
|
|
3703
3708
|
default: () => never[];
|
|
@@ -4359,6 +4364,7 @@ declare const VSelect: {
|
|
|
4359
4364
|
persistentCounter: BooleanConstructor;
|
|
4360
4365
|
suffix: StringConstructor;
|
|
4361
4366
|
counterValue: PropType<(value: any) => number>;
|
|
4367
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
4362
4368
|
items: {
|
|
4363
4369
|
type: PropType<any[]>;
|
|
4364
4370
|
default: () => never[];
|
|
@@ -29,6 +29,7 @@ export const makeVTextFieldProps = propsFactory({
|
|
|
29
29
|
type: String,
|
|
30
30
|
default: 'text'
|
|
31
31
|
},
|
|
32
|
+
modelModifiers: Object,
|
|
32
33
|
...makeVInputProps(),
|
|
33
34
|
...makeVFieldProps()
|
|
34
35
|
}, 'v-text-field');
|
|
@@ -103,7 +104,7 @@ export const VTextField = genericComponent()({
|
|
|
103
104
|
function onInput(e) {
|
|
104
105
|
const el = e.target;
|
|
105
106
|
model.value = el.value;
|
|
106
|
-
if (['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
|
|
107
|
+
if (props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
|
|
107
108
|
const caretPosition = [el.selectionStart, el.selectionEnd];
|
|
108
109
|
nextTick(() => {
|
|
109
110
|
el.selectionStart = caretPosition[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTextField.mjs","names":["filterFieldProps","makeVFieldProps","VField","filterInputProps","makeVInputProps","VInput","VCounter","Intersect","forwardRefs","useFocus","useProxiedModel","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","EventProp","Function","Array","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","VTextField","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","inputRef","isActive","includes","messages","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","_createVNode","_mergeProps","$event","variant","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","class","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\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 { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\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\ntype EventProp<T = (...args: any[]) => any> = T | T[]\nconst EventProp = [Function, Array] as PropType<EventProp>\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 hint: String,\n persistentHint: Boolean,\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\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'v-text-field')\n\nexport const VTextField = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n default: []\n}>>()({\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 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 ))\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isFocused.value || props.persistentHint) ? props.hint : ''\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 (['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {\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 }] = filterInputProps(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--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 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 { props.prefix }\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 { props.suffix }\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":["filterFieldProps","makeVFieldProps","VField","filterInputProps","makeVInputProps","VInput","VCounter","Intersect","forwardRefs","useFocus","useProxiedModel","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","EventProp","Function","Array","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","hint","persistentHint","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","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","includes","messages","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","_createVNode","_mergeProps","$event","variant","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","class","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\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 { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\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\ntype EventProp<T = (...args: any[]) => any> = T | T[]\nconst EventProp = [Function, Array] as PropType<EventProp>\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 hint: String,\n persistentHint: Boolean,\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}, 'v-text-field')\n\nexport const VTextField = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n default: []\n}>>()({\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 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 ))\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isFocused.value || props.persistentHint) ? props.hint : ''\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 }] = filterInputProps(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--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 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 { props.prefix }\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 { props.suffix }\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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"}
|
|
@@ -125,6 +125,7 @@ declare const VTextField: {
|
|
|
125
125
|
hint?: string | undefined;
|
|
126
126
|
suffix?: string | undefined;
|
|
127
127
|
counterValue?: ((value: any) => number) | undefined;
|
|
128
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
128
129
|
} & {
|
|
129
130
|
$children?: {} | vue.VNodeChild | {
|
|
130
131
|
clear?: (() => vue.VNodeChild) | undefined;
|
|
@@ -239,6 +240,7 @@ declare const VTextField: {
|
|
|
239
240
|
hint?: string | undefined;
|
|
240
241
|
suffix?: string | undefined;
|
|
241
242
|
counterValue?: ((value: any) => number) | undefined;
|
|
243
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
242
244
|
} & {
|
|
243
245
|
$children?: {} | vue.VNodeChild | {
|
|
244
246
|
clear?: (() => vue.VNodeChild) | undefined;
|
|
@@ -805,6 +807,7 @@ declare const VTextField: {
|
|
|
805
807
|
hint?: string | undefined;
|
|
806
808
|
suffix?: string | undefined;
|
|
807
809
|
counterValue?: ((value: any) => number) | undefined;
|
|
810
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
808
811
|
} & {
|
|
809
812
|
$children?: {} | vue.VNodeChild | {
|
|
810
813
|
clear?: (() => vue.VNodeChild) | undefined;
|
|
@@ -1326,6 +1329,7 @@ declare const VTextField: {
|
|
|
1326
1329
|
hint?: string | undefined;
|
|
1327
1330
|
suffix?: string | undefined;
|
|
1328
1331
|
counterValue?: ((value: any) => number) | undefined;
|
|
1332
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
1329
1333
|
} & {
|
|
1330
1334
|
$children?: {} | vue.VNodeChild | {
|
|
1331
1335
|
clear?: (() => vue.VNodeChild) | undefined;
|
|
@@ -1901,6 +1905,7 @@ declare const VTextField: {
|
|
|
1901
1905
|
type: StringConstructor;
|
|
1902
1906
|
default: string;
|
|
1903
1907
|
};
|
|
1908
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
1904
1909
|
}, vue.ExtractPropTypes<{
|
|
1905
1910
|
loading: (StringConstructor | BooleanConstructor)[];
|
|
1906
1911
|
theme: StringConstructor;
|
|
@@ -1981,6 +1986,7 @@ declare const VTextField: {
|
|
|
1981
1986
|
type: StringConstructor;
|
|
1982
1987
|
default: string;
|
|
1983
1988
|
};
|
|
1989
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
1984
1990
|
}>>;
|
|
1985
1991
|
type VTextField = InstanceType<typeof VTextField>;
|
|
1986
1992
|
|
|
@@ -42,6 +42,7 @@ export const VTextarea = genericComponent()({
|
|
|
42
42
|
validator: v => !isNaN(parseFloat(v))
|
|
43
43
|
},
|
|
44
44
|
suffix: String,
|
|
45
|
+
modelModifiers: Object,
|
|
45
46
|
...makeVInputProps(),
|
|
46
47
|
...makeVFieldProps()
|
|
47
48
|
},
|
|
@@ -106,12 +107,14 @@ export const VTextarea = genericComponent()({
|
|
|
106
107
|
}
|
|
107
108
|
function onInput(e) {
|
|
108
109
|
const el = e.target;
|
|
109
|
-
const caretPosition = [el.selectionStart, el.selectionEnd];
|
|
110
110
|
model.value = el.value;
|
|
111
|
-
|
|
112
|
-
el.selectionStart
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
if (props.modelModifiers?.trim) {
|
|
112
|
+
const caretPosition = [el.selectionStart, el.selectionEnd];
|
|
113
|
+
nextTick(() => {
|
|
114
|
+
el.selectionStart = caretPosition[0];
|
|
115
|
+
el.selectionEnd = caretPosition[1];
|
|
116
|
+
});
|
|
117
|
+
}
|
|
115
118
|
}
|
|
116
119
|
const sizerRef = ref();
|
|
117
120
|
function calculateInputHeight() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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","_ref","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","el","caretPosition","selectionStart","selectionEnd","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","_createVNode","_mergeProps","$event","includes","variant","_ref2","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","class","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 { 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 : (isFocused.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 const el = e.target as HTMLTextAreaElement\n const caretPosition = [el.selectionStart, el.selectionEnd]\n model.value = el.value\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\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 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":["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","modelModifiers","Object","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","messages","onFocus","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","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","_createVNode","_mergeProps","$event","includes","variant","_ref2","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","class","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 { 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 modelModifiers: Object as PropType<Record<string, boolean>>,\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 : (isFocused.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 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 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 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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"}
|
|
@@ -126,6 +126,7 @@ declare const VTextarea: {
|
|
|
126
126
|
hint?: string | undefined;
|
|
127
127
|
suffix?: string | undefined;
|
|
128
128
|
counterValue?: ((value: any) => number) | undefined;
|
|
129
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
129
130
|
maxRows?: string | number | undefined;
|
|
130
131
|
} & {
|
|
131
132
|
$children?: {} | vue.VNodeChild | {
|
|
@@ -239,6 +240,7 @@ declare const VTextarea: {
|
|
|
239
240
|
hint?: string | undefined;
|
|
240
241
|
suffix?: string | undefined;
|
|
241
242
|
counterValue?: ((value: any) => number) | undefined;
|
|
243
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
242
244
|
maxRows?: string | number | undefined;
|
|
243
245
|
} & {
|
|
244
246
|
$children?: {} | vue.VNodeChild | {
|
|
@@ -605,6 +607,7 @@ declare const VTextarea: {
|
|
|
605
607
|
hint?: string | undefined;
|
|
606
608
|
suffix?: string | undefined;
|
|
607
609
|
counterValue?: ((value: any) => number) | undefined;
|
|
610
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
608
611
|
maxRows?: string | number | undefined;
|
|
609
612
|
} & {
|
|
610
613
|
$children?: {} | vue.VNodeChild | {
|
|
@@ -924,6 +927,7 @@ declare const VTextarea: {
|
|
|
924
927
|
hint?: string | undefined;
|
|
925
928
|
suffix?: string | undefined;
|
|
926
929
|
counterValue?: ((value: any) => number) | undefined;
|
|
930
|
+
modelModifiers?: Record<string, boolean> | undefined;
|
|
927
931
|
maxRows?: string | number | undefined;
|
|
928
932
|
} & {
|
|
929
933
|
$children?: {} | vue.VNodeChild | {
|
|
@@ -1304,6 +1308,7 @@ declare const VTextarea: {
|
|
|
1304
1308
|
validator: (v: any) => boolean;
|
|
1305
1309
|
};
|
|
1306
1310
|
suffix: StringConstructor;
|
|
1311
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
1307
1312
|
}, vue.ExtractPropTypes<{
|
|
1308
1313
|
loading: (StringConstructor | BooleanConstructor)[];
|
|
1309
1314
|
theme: StringConstructor;
|
|
@@ -1391,6 +1396,7 @@ declare const VTextarea: {
|
|
|
1391
1396
|
validator: (v: any) => boolean;
|
|
1392
1397
|
};
|
|
1393
1398
|
suffix: StringConstructor;
|
|
1399
|
+
modelModifiers: PropType<Record<string, boolean>>;
|
|
1394
1400
|
}>>;
|
|
1395
1401
|
type VTextarea = InstanceType<typeof VTextarea>;
|
|
1396
1402
|
|