@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.
Files changed (52) hide show
  1. package/CHANGELOG.md +11 -2
  2. package/dist/json/attributes.json +24 -4
  3. package/dist/json/importMap.json +40 -40
  4. package/dist/json/tags.json +5 -0
  5. package/dist/json/web-types.json +83 -38
  6. package/dist/vuetify-labs.css +1141 -1136
  7. package/dist/vuetify-labs.d.ts +140 -84
  8. package/dist/vuetify-labs.esm.js +29 -24
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +29 -24
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +344 -339
  13. package/dist/vuetify.d.ts +41 -11
  14. package/dist/vuetify.esm.js +13 -9
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +13 -9
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +9 -8
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/index.d.ts +6 -0
  22. package/lib/components/VCombobox/index.d.ts +6 -0
  23. package/lib/components/VProgressCircular/VProgressCircular.css +3 -1
  24. package/lib/components/VProgressCircular/VProgressCircular.sass +3 -1
  25. package/lib/components/VProgressCircular/_variables.scss +1 -0
  26. package/lib/components/VProgressLinear/VProgressLinear.css +5 -2
  27. package/lib/components/VProgressLinear/VProgressLinear.sass +3 -0
  28. package/lib/components/VProgressLinear/_variables.scss +1 -1
  29. package/lib/components/VSelect/index.d.ts +6 -0
  30. package/lib/components/VTextField/VTextField.mjs +2 -1
  31. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  32. package/lib/components/VTextField/index.d.ts +6 -0
  33. package/lib/components/VTextarea/VTextarea.mjs +8 -5
  34. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  35. package/lib/components/VTextarea/index.d.ts +6 -0
  36. package/lib/components/index.d.ts +30 -0
  37. package/lib/entry-bundler.mjs +1 -1
  38. package/lib/entry-bundler.mjs.map +1 -1
  39. package/lib/framework.mjs +1 -1
  40. package/lib/framework.mjs.map +1 -1
  41. package/lib/index.d.ts +11 -11
  42. package/lib/labs/VDataTable/VDataTable.mjs +4 -4
  43. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  44. package/lib/labs/VDataTable/VDataTableRows.mjs +5 -7
  45. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  46. package/lib/labs/VDataTable/VDataTableServer.mjs +3 -2
  47. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  48. package/lib/labs/VDataTable/VDataTableVirtual.mjs +4 -2
  49. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  50. package/lib/labs/VDataTable/index.d.ts +110 -84
  51. package/lib/labs/components.d.ts +110 -84
  52. 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: 4px;
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: 4px;
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;
@@ -9,6 +9,9 @@
9
9
  transition: $progress-linear-transition
10
10
  width: 100%
11
11
 
12
+ &--rounded
13
+ @include tools.rounded($progress-linear-border-radius)
14
+
12
15
  // Elements
13
16
  .v-progress-linear__background
14
17
  background: $progress-linear-background
@@ -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.$border-radius-root !default;
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
- nextTick(() => {
112
- el.selectionStart = caretPosition[0];
113
- el.selectionEnd = caretPosition[1];
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