@vuetify/nightly 3.0.0-beta.10 → 3.0.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/dist/json/attributes.json +37 -29
  3. package/dist/json/importMap.json +46 -46
  4. package/dist/json/tags.json +10 -8
  5. package/dist/json/web-types.json +101 -87
  6. package/dist/vuetify.css +545 -441
  7. package/dist/vuetify.d.ts +12095 -10059
  8. package/dist/vuetify.esm.js +401 -266
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +371 -236
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +3 -3
  13. package/dist/vuetify.min.js +496 -490
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/blueprints/index.d.ts +171 -0
  16. package/lib/blueprints/md1.d.ts +167 -0
  17. package/lib/blueprints/md2.d.ts +167 -0
  18. package/lib/blueprints/md3.d.ts +167 -0
  19. package/lib/components/VAlert/index.d.ts +185 -0
  20. package/lib/components/VApp/index.d.ts +83 -0
  21. package/lib/components/VAppBar/VAppBar.css +3 -0
  22. package/lib/components/VAppBar/VAppBar.sass +3 -0
  23. package/lib/components/VAppBar/index.d.ts +156 -0
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.ts +1569 -0
  27. package/lib/components/VAvatar/VAvatar.css +44 -2
  28. package/lib/components/VAvatar/VAvatar.mjs +16 -12
  29. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  30. package/lib/components/VAvatar/VAvatar.sass +5 -1
  31. package/lib/components/VAvatar/_variables.scss +9 -4
  32. package/lib/components/VAvatar/index.d.ts +80 -0
  33. package/lib/components/VBadge/index.d.ts +123 -0
  34. package/lib/components/VBanner/index.d.ts +122 -0
  35. package/lib/components/VBottomNavigation/index.d.ts +143 -0
  36. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +2 -2
  37. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  38. package/lib/components/VBreadcrumbs/index.d.ts +301 -0
  39. package/lib/components/VBtn/VBtn.css +8 -3
  40. package/lib/components/VBtn/VBtn.mjs +16 -6
  41. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  42. package/lib/components/VBtn/index.d.ts +210 -0
  43. package/lib/components/VBtnGroup/index.d.ts +65 -0
  44. package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -3
  45. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  46. package/lib/components/VBtnToggle/index.d.ts +175 -0
  47. package/lib/components/VCard/VCard.css +8 -3
  48. package/lib/components/VCard/index.d.ts +230 -0
  49. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  50. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  51. package/lib/components/VCarousel/index.d.ts +80 -0
  52. package/lib/components/VCheckbox/index.d.ts +291 -0
  53. package/lib/components/VChip/index.d.ts +195 -0
  54. package/lib/components/VChipGroup/index.d.ts +89 -0
  55. package/lib/components/VCode/index.d.ts +19 -0
  56. package/lib/components/VColorPicker/index.d.ts +116 -0
  57. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  58. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  59. package/lib/components/VCombobox/index.d.ts +1590 -0
  60. package/lib/components/VCounter/index.d.ts +223 -0
  61. package/lib/components/VDefaultsProvider/index.d.ts +26 -0
  62. package/lib/components/VDialog/VDialog.css +2 -0
  63. package/lib/components/VDialog/VDialog.mjs +17 -12
  64. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  65. package/lib/components/VDialog/VDialog.sass +2 -0
  66. package/lib/components/VDialog/index.d.ts +859 -0
  67. package/lib/components/VDivider/index.d.ts +22 -0
  68. package/lib/components/VExpansionPanel/VExpansionPanel.css +8 -3
  69. package/lib/components/VExpansionPanel/index.d.ts +206 -0
  70. package/lib/components/VField/VField.css +27 -24
  71. package/lib/components/VField/VField.mjs +1 -1
  72. package/lib/components/VField/VField.mjs.map +1 -1
  73. package/lib/components/VField/VField.sass +23 -21
  74. package/lib/components/VField/index.d.ts +332 -0
  75. package/lib/components/VFileInput/VFileInput.mjs +3 -3
  76. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  77. package/lib/components/VFileInput/index.d.ts +236 -0
  78. package/lib/components/VFooter/VFooter.css +7 -0
  79. package/lib/components/VFooter/VFooter.sass +1 -1
  80. package/lib/components/VFooter/_variables.scss +11 -0
  81. package/lib/components/VFooter/index.d.ts +76 -0
  82. package/lib/components/VForm/index.d.ts +72 -0
  83. package/lib/components/VGrid/index.d.ts +154 -0
  84. package/lib/components/VHover/index.d.ts +30 -0
  85. package/lib/components/VIcon/index.d.ts +124 -0
  86. package/lib/components/VImg/VImg.mjs +29 -27
  87. package/lib/components/VImg/VImg.mjs.map +1 -1
  88. package/lib/components/VImg/index.d.ts +89 -0
  89. package/lib/components/VInput/VInput.mjs +4 -4
  90. package/lib/components/VInput/VInput.mjs.map +1 -1
  91. package/lib/components/VInput/index.d.ts +325 -0
  92. package/lib/components/VItemGroup/index.d.ts +210 -0
  93. package/lib/components/VKbd/index.d.ts +19 -0
  94. package/lib/components/VLabel/VLabel.css +4 -1
  95. package/lib/components/VLabel/VLabel.mjs +4 -1
  96. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  97. package/lib/components/VLabel/VLabel.sass +3 -1
  98. package/lib/components/VLabel/index.d.ts +16 -0
  99. package/lib/components/VLayout/index.d.ts +75 -0
  100. package/lib/components/VLazy/index.d.ts +85 -0
  101. package/lib/components/VList/VListItem.css +8 -3
  102. package/lib/components/VList/VListItem.mjs +4 -4
  103. package/lib/components/VList/VListItem.mjs.map +1 -1
  104. package/lib/components/VList/index.d.ts +1250 -0
  105. package/lib/components/VLocaleProvider/index.d.ts +23 -0
  106. package/lib/components/VMain/index.d.ts +26 -0
  107. package/lib/components/VMenu/VMenu.mjs +16 -3
  108. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  109. package/lib/components/VMenu/index.d.ts +817 -0
  110. package/lib/components/VMessages/index.d.ts +234 -0
  111. package/lib/components/VNavigationDrawer/index.d.ts +148 -0
  112. package/lib/components/VNoSsr/index.d.ts +7 -0
  113. package/lib/components/VOverlay/VOverlay.mjs +4 -3
  114. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  115. package/lib/components/VOverlay/index.d.ts +579 -0
  116. package/lib/components/VOverlay/useActivator.mjs +27 -1
  117. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  118. package/lib/components/VPagination/VPagination.mjs +6 -3
  119. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  120. package/lib/components/VPagination/index.d.ts +247 -0
  121. package/lib/components/VParallax/VParallax.mjs +24 -10
  122. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  123. package/lib/components/VParallax/index.d.ts +18 -0
  124. package/lib/components/VProgressCircular/index.d.ts +68 -0
  125. package/lib/components/VProgressLinear/index.d.ts +101 -0
  126. package/lib/components/VRadio/index.d.ts +103 -0
  127. package/lib/components/VRadioGroup/VRadioGroup.css +2 -3
  128. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  129. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  130. package/lib/components/VRadioGroup/VRadioGroup.sass +2 -2
  131. package/lib/components/VRadioGroup/_variables.scss +0 -1
  132. package/lib/components/VRadioGroup/index.d.ts +186 -0
  133. package/lib/components/VRangeSlider/VRangeSlider.mjs +12 -2
  134. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  135. package/lib/components/VRangeSlider/index.d.ts +242 -0
  136. package/lib/components/VRating/index.d.ts +356 -0
  137. package/lib/components/VResponsive/index.d.ts +23 -0
  138. package/lib/components/VSelect/VSelect.mjs +1 -1
  139. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  140. package/lib/components/VSelect/index.d.ts +1521 -0
  141. package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
  142. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  143. package/lib/components/VSelectionControl/index.d.ts +275 -0
  144. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +5 -0
  145. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +3 -1
  146. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  147. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +5 -0
  148. package/lib/components/VSelectionControlGroup/index.d.ts +47 -0
  149. package/lib/components/VSheet/index.d.ts +68 -0
  150. package/lib/components/VSlideGroup/index.d.ts +151 -0
  151. package/lib/components/VSlider/VSlider.css +7 -2
  152. package/lib/components/VSlider/VSlider.mjs +14 -4
  153. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  154. package/lib/components/VSlider/VSlider.sass +6 -2
  155. package/lib/components/VSlider/VSliderTrack.css +20 -20
  156. package/lib/components/VSlider/VSliderTrack.mjs +7 -3
  157. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  158. package/lib/components/VSlider/VSliderTrack.sass +14 -14
  159. package/lib/components/VSlider/_variables.scss +2 -2
  160. package/lib/components/VSlider/index.d.ts +239 -0
  161. package/lib/components/VSlider/slider.mjs +2 -2
  162. package/lib/components/VSlider/slider.mjs.map +1 -1
  163. package/lib/components/VSnackbar/VSnackbar.mjs +3 -2
  164. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  165. package/lib/components/VSnackbar/index.d.ts +892 -0
  166. package/lib/components/VSwitch/index.d.ts +175 -0
  167. package/lib/components/VSystemBar/index.d.ts +61 -0
  168. package/lib/components/VTable/index.d.ts +39 -0
  169. package/lib/components/VTabs/VTab.mjs +1 -0
  170. package/lib/components/VTabs/VTab.mjs.map +1 -1
  171. package/lib/components/VTabs/index.d.ts +178 -0
  172. package/lib/components/VTextField/VTextField.css +2 -3
  173. package/lib/components/VTextField/VTextField.sass +2 -4
  174. package/lib/components/VTextField/index.d.ts +582 -0
  175. package/lib/components/VTextarea/VTextarea.css +5 -3
  176. package/lib/components/VTextarea/VTextarea.mjs +2 -1
  177. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  178. package/lib/components/VTextarea/VTextarea.sass +5 -4
  179. package/lib/components/VTextarea/index.d.ts +218 -0
  180. package/lib/components/VThemeProvider/index.d.ts +24 -0
  181. package/lib/components/VTimeline/VTimeline.css +21 -6
  182. package/lib/components/VTimeline/VTimeline.mjs +6 -1
  183. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  184. package/lib/components/VTimeline/VTimeline.sass +16 -2
  185. package/lib/components/VTimeline/_variables.scss +4 -3
  186. package/lib/components/VTimeline/index.d.ts +154 -0
  187. package/lib/components/VToolbar/VToolbar.css +0 -1
  188. package/lib/components/VToolbar/VToolbar.sass +0 -1
  189. package/lib/components/VToolbar/index.d.ts +414 -0
  190. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  191. package/lib/components/VTooltip/index.d.ts +799 -0
  192. package/lib/components/VValidation/index.d.ts +61 -0
  193. package/lib/components/VWindow/index.d.ts +428 -0
  194. package/lib/components/index.d.ts +12037 -10009
  195. package/lib/components/transitions/index.d.ts +454 -0
  196. package/lib/composables/display.mjs +3 -3
  197. package/lib/composables/display.mjs.map +1 -1
  198. package/lib/composables/items.mjs.map +1 -1
  199. package/lib/composables/locale.mjs +10 -3
  200. package/lib/composables/locale.mjs.map +1 -1
  201. package/lib/composables/proxiedModel.mjs +28 -10
  202. package/lib/composables/proxiedModel.mjs.map +1 -1
  203. package/lib/composables/router.mjs +10 -2
  204. package/lib/composables/router.mjs.map +1 -1
  205. package/lib/composables/selectLink.mjs +4 -4
  206. package/lib/composables/selectLink.mjs.map +1 -1
  207. package/lib/composables/theme.mjs +37 -33
  208. package/lib/composables/theme.mjs.map +1 -1
  209. package/lib/composables/validation.mjs +1 -1
  210. package/lib/composables/validation.mjs.map +1 -1
  211. package/lib/entry-bundler.mjs +1 -1
  212. package/lib/framework.mjs +46 -51
  213. package/lib/framework.mjs.map +1 -1
  214. package/lib/index.d.ts +31 -22
  215. package/lib/locale/adapters/vue-i18n.d.ts +35 -0
  216. package/lib/locale/adapters/vue-intl.d.ts +42 -0
  217. package/lib/styles/main.css +73 -73
  218. package/lib/styles/settings/_colors.scss +84 -84
  219. package/lib/styles/tools/_states.sass +8 -3
  220. package/lib/util/getCurrentInstance.mjs +2 -3
  221. package/lib/util/getCurrentInstance.mjs.map +1 -1
  222. package/lib/util/helpers.mjs +6 -11
  223. package/lib/util/helpers.mjs.map +1 -1
  224. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"VTextarea.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VCounter","VField","Intersect","forwardRefs","useProxiedModel","computed","nextTick","onBeforeUnmount","onMounted","ref","watch","callEvent","clamp","convertToUnit","defineComponent","filterInputAttrs","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","val","setup","attrs","emit","slots","model","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","focus","vInputRef","vFieldRef","isFocused","controlHeight","textareaRef","isActive","messages","onFocus","document","activeElement","onControlClick","onClear","stopPropagation","onInput","sizerRef","calculateInputHeight","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","Math","maxHeight","Infinity","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","handler"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { callEvent, clamp, convertToUnit, defineComponent, filterInputAttrs, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VTextarea = defineComponent({\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 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\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 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<VInput>()\n const isFocused = ref(false)\n const controlHeight = ref('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.persistentPlaceholder\n ))\n\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isActive.value || props.persistentHint) ? props.hint : ''\n })\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) isFocused.value = true\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 = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n model.value = (e.target as HTMLTextAreaElement).value\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n\n controlHeight.value = convertToUnit(clamp(height ?? 0, minHeight, maxHeight))\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-textarea v-text-field',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n },\n ]}\n onClick:prepend={ props['onClick:prepend'] }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\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:control={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\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={ 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","useProxiedModel","computed","nextTick","onBeforeUnmount","onMounted","ref","watch","callEvent","clamp","convertToUnit","defineComponent","filterInputAttrs","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","val","setup","attrs","emit","slots","model","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","focus","vInputRef","vFieldRef","isFocused","controlHeight","textareaRef","isActive","messages","onFocus","document","activeElement","onControlClick","onClear","stopPropagation","onInput","sizerRef","calculateInputHeight","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","Math","maxHeight","Infinity","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","includes","variant","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","handler"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { callEvent, clamp, convertToUnit, defineComponent, filterInputAttrs, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VTextarea = defineComponent({\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 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\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 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<VInput>()\n const isFocused = ref(false)\n const controlHeight = ref('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.persistentPlaceholder\n ))\n\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isActive.value || props.persistentHint) ? props.hint : ''\n })\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) isFocused.value = true\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 = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n model.value = (e.target as HTMLTextAreaElement).value\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n\n controlHeight.value = convertToUnit(clamp(height ?? 0, minHeight, maxHeight))\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-textarea v-text-field',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ props['onClick:prepend'] }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n 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:control={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\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={ 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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"}
@@ -5,6 +5,9 @@
5
5
  @use './variables' as *
6
6
 
7
7
  .v-textarea
8
+ .v-field
9
+ --v-textarea-control-height: var(--v-input-control-height)
10
+
8
11
  .v-field__field
9
12
  --v-input-control-height: var(--v-textarea-control-height)
10
13
 
@@ -34,15 +37,13 @@
34
37
  min-height: 0 !important
35
38
  pointer-events: none
36
39
 
37
- .v-field--has-label
38
- textarea
39
- opacity: 0
40
-
40
+ .v-field--no-label,
41
41
  .v-field--active
42
42
  textarea
43
43
  opacity: 1
44
44
 
45
45
  textarea
46
+ opacity: 0
46
47
  flex: 1
47
48
  min-width: 0
48
49
  transition: .15s opacity settings.$standard-easing
@@ -0,0 +1,218 @@
1
+ import * as vue from 'vue';
2
+ import { PropType, JSXComponent } from 'vue';
3
+
4
+ declare type EventProp<T = (...args: any[]) => any> = T | T[];
5
+ declare const EventProp: PropType<EventProp<(...args: any[]) => any>>;
6
+
7
+ declare type ValidationResult = string | boolean;
8
+ declare type ValidationRule = ValidationResult | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>);
9
+
10
+ declare type IconValue = string | JSXComponent;
11
+ declare const IconValue: PropType<IconValue>;
12
+
13
+ declare const VTextarea: vue.DefineComponent<{
14
+ loading: BooleanConstructor;
15
+ theme: StringConstructor;
16
+ appendInnerIcon: PropType<IconValue>;
17
+ bgColor: StringConstructor;
18
+ clearable: BooleanConstructor;
19
+ clearIcon: {
20
+ type: PropType<IconValue>;
21
+ default: string;
22
+ };
23
+ active: BooleanConstructor;
24
+ color: StringConstructor;
25
+ dirty: BooleanConstructor;
26
+ disabled: BooleanConstructor;
27
+ error: BooleanConstructor;
28
+ label: StringConstructor;
29
+ persistentClear: BooleanConstructor;
30
+ prependInnerIcon: PropType<IconValue>;
31
+ reverse: BooleanConstructor;
32
+ singleLine: BooleanConstructor;
33
+ variant: {
34
+ type: PropType<"filled" | "outlined" | "plain" | "underlined" | "solo">;
35
+ default: string;
36
+ validator: (v: any) => boolean;
37
+ };
38
+ 'onClick:clear': PropType<EventProp<(...args: any[]) => any>>;
39
+ 'onClick:appendInner': PropType<EventProp<(...args: any[]) => any>>;
40
+ 'onClick:prependInner': PropType<EventProp<(...args: any[]) => any>>;
41
+ errorMessages: {
42
+ type: PropType<string | string[]>;
43
+ default: () => never[];
44
+ };
45
+ maxErrors: {
46
+ type: (StringConstructor | NumberConstructor)[];
47
+ default: number;
48
+ };
49
+ name: StringConstructor;
50
+ readonly: BooleanConstructor;
51
+ rules: {
52
+ type: PropType<ValidationRule[]>;
53
+ default: () => never[];
54
+ };
55
+ modelValue: null;
56
+ validationValue: null;
57
+ density: {
58
+ type: PropType<"default" | "compact" | "comfortable" | null>;
59
+ default: string;
60
+ validator: (v: any) => boolean;
61
+ };
62
+ id: StringConstructor;
63
+ appendIcon: PropType<IconValue>;
64
+ prependIcon: PropType<IconValue>;
65
+ hideDetails: PropType<boolean | "auto">;
66
+ messages: {
67
+ type: PropType<string | string[]>;
68
+ default: () => never[];
69
+ };
70
+ direction: {
71
+ type: PropType<"horizontal" | "vertical">;
72
+ default: string;
73
+ validator: (v: any) => boolean;
74
+ };
75
+ 'onClick:prepend': PropType<EventProp<(...args: any[]) => any>>;
76
+ 'onClick:append': PropType<EventProp<(...args: any[]) => any>>;
77
+ autoGrow: BooleanConstructor;
78
+ autofocus: BooleanConstructor;
79
+ counter: PropType<string | number | true>;
80
+ counterValue: PropType<(value: any) => number>;
81
+ hint: StringConstructor;
82
+ persistentHint: BooleanConstructor;
83
+ prefix: StringConstructor;
84
+ placeholder: StringConstructor;
85
+ persistentPlaceholder: BooleanConstructor;
86
+ persistentCounter: BooleanConstructor;
87
+ noResize: BooleanConstructor;
88
+ rows: {
89
+ type: (StringConstructor | NumberConstructor)[];
90
+ default: number;
91
+ validator: (v: any) => boolean;
92
+ };
93
+ maxRows: {
94
+ type: (StringConstructor | NumberConstructor)[];
95
+ validator: (v: any) => boolean;
96
+ };
97
+ suffix: StringConstructor;
98
+ }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
99
+ 'click:control': (e: MouseEvent) => true;
100
+ 'update:modelValue': (val: string) => true;
101
+ }, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
102
+ loading: BooleanConstructor;
103
+ theme: StringConstructor;
104
+ appendInnerIcon: PropType<IconValue>;
105
+ bgColor: StringConstructor;
106
+ clearable: BooleanConstructor;
107
+ clearIcon: {
108
+ type: PropType<IconValue>;
109
+ default: string;
110
+ };
111
+ active: BooleanConstructor;
112
+ color: StringConstructor;
113
+ dirty: BooleanConstructor;
114
+ disabled: BooleanConstructor;
115
+ error: BooleanConstructor;
116
+ label: StringConstructor;
117
+ persistentClear: BooleanConstructor;
118
+ prependInnerIcon: PropType<IconValue>;
119
+ reverse: BooleanConstructor;
120
+ singleLine: BooleanConstructor;
121
+ variant: {
122
+ type: PropType<"filled" | "outlined" | "plain" | "underlined" | "solo">;
123
+ default: string;
124
+ validator: (v: any) => boolean;
125
+ };
126
+ 'onClick:clear': PropType<EventProp<(...args: any[]) => any>>;
127
+ 'onClick:appendInner': PropType<EventProp<(...args: any[]) => any>>;
128
+ 'onClick:prependInner': PropType<EventProp<(...args: any[]) => any>>;
129
+ errorMessages: {
130
+ type: PropType<string | string[]>;
131
+ default: () => never[];
132
+ };
133
+ maxErrors: {
134
+ type: (StringConstructor | NumberConstructor)[];
135
+ default: number;
136
+ };
137
+ name: StringConstructor;
138
+ readonly: BooleanConstructor;
139
+ rules: {
140
+ type: PropType<ValidationRule[]>;
141
+ default: () => never[];
142
+ };
143
+ modelValue: null;
144
+ validationValue: null;
145
+ density: {
146
+ type: PropType<"default" | "compact" | "comfortable" | null>;
147
+ default: string;
148
+ validator: (v: any) => boolean;
149
+ };
150
+ id: StringConstructor;
151
+ appendIcon: PropType<IconValue>;
152
+ prependIcon: PropType<IconValue>;
153
+ hideDetails: PropType<boolean | "auto">;
154
+ messages: {
155
+ type: PropType<string | string[]>;
156
+ default: () => never[];
157
+ };
158
+ direction: {
159
+ type: PropType<"horizontal" | "vertical">;
160
+ default: string;
161
+ validator: (v: any) => boolean;
162
+ };
163
+ 'onClick:prepend': PropType<EventProp<(...args: any[]) => any>>;
164
+ 'onClick:append': PropType<EventProp<(...args: any[]) => any>>;
165
+ autoGrow: BooleanConstructor;
166
+ autofocus: BooleanConstructor;
167
+ counter: PropType<string | number | true>;
168
+ counterValue: PropType<(value: any) => number>;
169
+ hint: StringConstructor;
170
+ persistentHint: BooleanConstructor;
171
+ prefix: StringConstructor;
172
+ placeholder: StringConstructor;
173
+ persistentPlaceholder: BooleanConstructor;
174
+ persistentCounter: BooleanConstructor;
175
+ noResize: BooleanConstructor;
176
+ rows: {
177
+ type: (StringConstructor | NumberConstructor)[];
178
+ default: number;
179
+ validator: (v: any) => boolean;
180
+ };
181
+ maxRows: {
182
+ type: (StringConstructor | NumberConstructor)[];
183
+ validator: (v: any) => boolean;
184
+ };
185
+ suffix: StringConstructor;
186
+ }>> & {
187
+ "onUpdate:modelValue"?: ((val: string) => any) | undefined;
188
+ "onClick:control"?: ((e: MouseEvent) => any) | undefined;
189
+ }, {
190
+ reverse: boolean;
191
+ error: boolean;
192
+ active: boolean;
193
+ direction: "horizontal" | "vertical";
194
+ loading: boolean;
195
+ autofocus: boolean;
196
+ disabled: boolean;
197
+ readonly: boolean;
198
+ messages: string | string[];
199
+ density: "default" | "compact" | "comfortable" | null;
200
+ variant: "filled" | "outlined" | "plain" | "underlined" | "solo";
201
+ errorMessages: string | string[];
202
+ maxErrors: string | number;
203
+ rules: ValidationRule[];
204
+ clearIcon: IconValue;
205
+ clearable: boolean;
206
+ dirty: boolean;
207
+ persistentClear: boolean;
208
+ singleLine: boolean;
209
+ persistentHint: boolean;
210
+ persistentPlaceholder: boolean;
211
+ persistentCounter: boolean;
212
+ autoGrow: boolean;
213
+ noResize: boolean;
214
+ rows: string | number;
215
+ }>;
216
+ declare type VTextarea = InstanceType<typeof VTextarea>;
217
+
218
+ export { VTextarea };
@@ -0,0 +1,24 @@
1
+ import * as vue from 'vue';
2
+
3
+ declare const VThemeProvider: vue.DefineComponent<{
4
+ tag: {
5
+ type: StringConstructor;
6
+ default: string;
7
+ };
8
+ theme: StringConstructor;
9
+ withBackground: BooleanConstructor;
10
+ }, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
11
+ [key: string]: any;
12
+ }>[] | JSX.Element | undefined, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
13
+ tag: {
14
+ type: StringConstructor;
15
+ default: string;
16
+ };
17
+ theme: StringConstructor;
18
+ withBackground: BooleanConstructor;
19
+ }>>, {
20
+ tag: string;
21
+ withBackground: boolean;
22
+ }>;
23
+
24
+ export { VThemeProvider };
@@ -11,7 +11,6 @@
11
11
  position: relative;
12
12
  }
13
13
  .v-timeline--horizontal.v-timeline {
14
- grid-template-rows: auto min-content auto;
15
14
  grid-column-gap: 24px;
16
15
  width: 100%;
17
16
  }
@@ -33,6 +32,7 @@
33
32
  .v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n+1) .v-timeline-item__body {
34
33
  grid-row: 1;
35
34
  padding-block-end: 24px;
35
+ align-self: flex-end;
36
36
  }
37
37
  .v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n+1) .v-timeline-item__opposite {
38
38
  grid-row: 3;
@@ -40,7 +40,6 @@
40
40
  }
41
41
 
42
42
  .v-timeline--vertical.v-timeline {
43
- grid-template-columns: auto min-content auto;
44
43
  grid-row-gap: 24px;
45
44
  height: 100%;
46
45
  }
@@ -252,6 +251,22 @@
252
251
  }
253
252
 
254
253
  /** Modifiers **/
254
+ .v-timeline--horizontal.v-timeline--justify-center {
255
+ grid-template-rows: minmax(auto, 50%) min-content minmax(auto, 50%);
256
+ }
257
+
258
+ .v-timeline--vertical.v-timeline--justify-center {
259
+ grid-template-columns: minmax(auto, 50%) min-content minmax(auto, 50%);
260
+ }
261
+
262
+ .v-timeline--horizontal.v-timeline--justify-auto {
263
+ grid-template-rows: auto min-content auto;
264
+ }
265
+
266
+ .v-timeline--vertical.v-timeline--justify-auto {
267
+ grid-template-columns: auto min-content auto;
268
+ }
269
+
255
270
  .v-timeline--horizontal.v-timeline--density-comfortable {
256
271
  height: 100%;
257
272
  }
@@ -273,20 +288,20 @@
273
288
  }
274
289
 
275
290
  .v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-end {
276
- grid-template-rows: min-content auto;
291
+ grid-template-rows: 0 min-content auto;
277
292
  }
278
293
  .v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-start {
279
- grid-template-rows: auto min-content;
294
+ grid-template-rows: auto min-content 0;
280
295
  }
281
296
  .v-timeline--horizontal.v-timeline--density-compact .v-timeline-item__body {
282
297
  grid-row: 1;
283
298
  }
284
299
 
285
300
  .v-timeline--vertical.v-timeline--density-compact.v-timeline--side-end {
286
- grid-template-columns: min-content auto;
301
+ grid-template-columns: 0 min-content auto;
287
302
  }
288
303
  .v-timeline--vertical.v-timeline--density-compact.v-timeline--side-start {
289
- grid-template-columns: auto min-content;
304
+ grid-template-columns: auto min-content 0;
290
305
  }
291
306
  .v-timeline--vertical.v-timeline--density-compact .v-timeline-item__body {
292
307
  grid-column: 3;
@@ -23,6 +23,11 @@ export const VTimeline = defineComponent({
23
23
  default: 'vertical',
24
24
  validator: v => ['vertical', 'horizontal'].includes(v)
25
25
  },
26
+ justify: {
27
+ type: String,
28
+ default: 'auto',
29
+ validator: v => ['auto', 'center'].includes(v)
30
+ },
26
31
  side: {
27
32
  type: String,
28
33
  validator: v => v == null || ['start', 'end'].includes(v)
@@ -86,7 +91,7 @@ export const VTimeline = defineComponent({
86
91
  }
87
92
  });
88
93
  useRender(() => _createVNode(props.tag, {
89
- "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, truncateClasses.value, {
94
+ "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
90
95
  'v-timeline--inset-line': !!props.lineInset
91
96
  }, themeClasses.value, densityClasses.value, sideClasses.value],
92
97
  "style": {
@@ -1 +1 @@
1
- {"version":3,"file":"VTimeline.mjs","names":["makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","provideDefaults","computed","toRef","convertToUnit","defineComponent","useRender","VTimeline","name","props","align","type","String","default","validator","v","includes","direction","side","lineInset","Number","lineThickness","lineColor","truncateLine","setup","slots","themeClasses","densityClasses","VTimelineDivider","VTimelineItem","density","sideClasses","truncateClasses","classes","value"],"sources":["../../../src/components/VTimeline/VTimeline.tsx"],"sourcesContent":["// Styles\nimport './VTimeline.sass'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, defineComponent, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\n\nexport type TimelineDirection = 'vertical' | 'horizontal'\nexport type TimelineSide = 'start' | 'end' | undefined\nexport type TimelineAlign = 'center' | 'start'\nexport type TimelineTruncateLine = 'start' | 'end' | 'both' | undefined\n\nexport const VTimeline = defineComponent({\n name: 'VTimeline',\n\n props: {\n align: {\n type: String,\n default: 'center',\n validator: (v: any) => ['center', 'start'].includes(v),\n } as Prop<TimelineAlign>,\n direction: {\n type: String,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n } as Prop<TimelineDirection>,\n side: {\n type: String,\n validator: (v: any) => v == null || ['start', 'end'].includes(v),\n } as Prop<TimelineSide>,\n lineInset: {\n type: [String, Number],\n default: 0,\n },\n lineThickness: {\n type: [String, Number],\n default: 2,\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n } as Prop<TimelineTruncateLine>,\n\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor'),\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n lineInset: toRef(props, 'lineInset'),\n },\n })\n\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null\n\n return side && `v-timeline--side-${side}`\n })\n\n const truncateClasses = computed(() => {\n const classes = [\n 'v-timeline--truncate-line-start',\n 'v-timeline--truncate-line-end',\n ]\n\n switch (props.truncateLine) {\n case 'both': return classes\n case 'start': return classes[0]\n case 'end': return classes[1]\n default: return null\n }\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-timeline',\n `v-timeline--${props.direction}`,\n `v-timeline--align-${props.align}`,\n truncateClasses.value,\n {\n 'v-timeline--inset-line': !!props.lineInset,\n },\n themeClasses.value,\n densityClasses.value,\n sideClasses.value,\n ]}\n style={{\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness),\n }}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n"],"mappings":";AAAA;AACA,yB,CAEA;;SACSA,gB,EAAkBC,U;SAClBC,Y;SACAC,c,EAAgBC,Y;SAChBC,e,0CAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,a,EAAeC,e,EAAiBC,S,gCAEzC;;AAQA,OAAO,MAAMC,SAAS,GAAGF,eAAe,CAAC;EACvCG,IAAI,EAAE,WADiC;EAGvCC,KAAK,EAAE;IACLC,KAAK,EAAE;MACLC,IAAI,EAAEC,MADD;MAELC,OAAO,EAAE,QAFJ;MAGLC,SAAS,EAAGC,CAAD,IAAY,CAAC,QAAD,EAAW,OAAX,EAAoBC,QAApB,CAA6BD,CAA7B;IAHlB,CADF;IAMLE,SAAS,EAAE;MACTN,IAAI,EAAEC,MADG;MAETC,OAAO,EAAE,UAFA;MAGTC,SAAS,EAAGC,CAAD,IAAY,CAAC,UAAD,EAAa,YAAb,EAA2BC,QAA3B,CAAoCD,CAApC;IAHd,CANN;IAWLG,IAAI,EAAE;MACJP,IAAI,EAAEC,MADF;MAEJE,SAAS,EAAGC,CAAD,IAAYA,CAAC,IAAI,IAAL,IAAa,CAAC,OAAD,EAAU,KAAV,EAAiBC,QAAjB,CAA0BD,CAA1B;IAFhC,CAXD;IAeLI,SAAS,EAAE;MACTR,IAAI,EAAE,CAACC,MAAD,EAASQ,MAAT,CADG;MAETP,OAAO,EAAE;IAFA,CAfN;IAmBLQ,aAAa,EAAE;MACbV,IAAI,EAAE,CAACC,MAAD,EAASQ,MAAT,CADO;MAEbP,OAAO,EAAE;IAFI,CAnBV;IAuBLS,SAAS,EAAEV,MAvBN;IAwBLW,YAAY,EAAE;MACZZ,IAAI,EAAEC,MADM;MAEZE,SAAS,EAAGC,CAAD,IAAY,CAAC,OAAD,EAAU,KAAV,EAAiB,MAAjB,EAAyBC,QAAzB,CAAkCD,CAAlC;IAFX,CAxBT;IA6BL,GAAGnB,gBAAgB,EA7Bd;IA8BL,GAAGE,YAAY,EA9BV;IA+BL,GAAGC,cAAc;EA/BZ,CAHgC;;EAqCvCyB,KAAK,CAAEf,KAAF,QAAoB;IAAA,IAAX;MAAEgB;IAAF,CAAW;IACvB,MAAM;MAAEC;IAAF,IAAmB1B,YAAY,CAACS,KAAD,CAArC;IACA,MAAM;MAAEkB;IAAF,IAAqB9B,UAAU,CAACY,KAAD,CAArC;IAEAR,eAAe,CAAC;MACd2B,gBAAgB,EAAE;QAChBN,SAAS,EAAEnB,KAAK,CAACM,KAAD,EAAQ,WAAR;MADA,CADJ;MAIdoB,aAAa,EAAE;QACbC,OAAO,EAAE3B,KAAK,CAACM,KAAD,EAAQ,SAAR,CADD;QAEbU,SAAS,EAAEhB,KAAK,CAACM,KAAD,EAAQ,WAAR;MAFH;IAJD,CAAD,CAAf;IAUA,MAAMsB,WAAW,GAAG7B,QAAQ,CAAC,MAAM;MACjC,MAAMgB,IAAI,GAAGT,KAAK,CAACS,IAAN,GAAaT,KAAK,CAACS,IAAnB,GAA0BT,KAAK,CAACqB,OAAN,KAAkB,SAAlB,GAA8B,KAA9B,GAAsC,IAA7E;MAEA,OAAOZ,IAAI,IAAK,oBAAmBA,IAAK,EAAxC;IACD,CAJ2B,CAA5B;IAMA,MAAMc,eAAe,GAAG9B,QAAQ,CAAC,MAAM;MACrC,MAAM+B,OAAO,GAAG,CACd,iCADc,EAEd,+BAFc,CAAhB;;MAKA,QAAQxB,KAAK,CAACc,YAAd;QACE,KAAK,MAAL;UAAa,OAAOU,OAAP;;QACb,KAAK,OAAL;UAAc,OAAOA,OAAO,CAAC,CAAD,CAAd;;QACd,KAAK,KAAL;UAAY,OAAOA,OAAO,CAAC,CAAD,CAAd;;QACZ;UAAS,OAAO,IAAP;MAJX;IAMD,CAZ+B,CAAhC;IAcA3B,SAAS,CAAC;MAAA,SAEC,CACL,YADK,EAEJ,eAAcG,KAAK,CAACQ,SAAU,EAF1B,EAGJ,qBAAoBR,KAAK,CAACC,KAAM,EAH5B,EAILsB,eAAe,CAACE,KAJX,EAKL;QACE,0BAA0B,CAAC,CAACzB,KAAK,CAACU;MADpC,CALK,EAQLO,YAAY,CAACQ,KARR,EASLP,cAAc,CAACO,KATV,EAULH,WAAW,CAACG,KAVP,CAFD;MAAA,SAcC;QACL,+BAA+B9B,aAAa,CAACK,KAAK,CAACY,aAAP;MADvC;IAdD,GAiBII,KAjBJ,CAAD,CAAT;IAqBA,OAAO,EAAP;EACD;;AA7FsC,CAAD,CAAjC"}
1
+ {"version":3,"file":"VTimeline.mjs","names":["makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","provideDefaults","computed","toRef","convertToUnit","defineComponent","useRender","VTimeline","name","props","align","type","String","default","validator","v","includes","direction","justify","side","lineInset","Number","lineThickness","lineColor","truncateLine","setup","slots","themeClasses","densityClasses","VTimelineDivider","VTimelineItem","density","sideClasses","truncateClasses","classes","value"],"sources":["../../../src/components/VTimeline/VTimeline.tsx"],"sourcesContent":["// Styles\nimport './VTimeline.sass'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, defineComponent, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\n\nexport type TimelineDirection = 'vertical' | 'horizontal'\nexport type TimelineSide = 'start' | 'end' | undefined\nexport type TimelineAlign = 'center' | 'start'\nexport type TimelineTruncateLine = 'start' | 'end' | 'both' | undefined\n\nexport const VTimeline = defineComponent({\n name: 'VTimeline',\n\n props: {\n align: {\n type: String,\n default: 'center',\n validator: (v: any) => ['center', 'start'].includes(v),\n } as Prop<TimelineAlign>,\n direction: {\n type: String,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n } as Prop<TimelineDirection>,\n justify: {\n type: String,\n default: 'auto',\n validator: (v: any) => ['auto', 'center'].includes(v),\n },\n side: {\n type: String,\n validator: (v: any) => v == null || ['start', 'end'].includes(v),\n } as Prop<TimelineSide>,\n lineInset: {\n type: [String, Number],\n default: 0,\n },\n lineThickness: {\n type: [String, Number],\n default: 2,\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n } as Prop<TimelineTruncateLine>,\n\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor'),\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n lineInset: toRef(props, 'lineInset'),\n },\n })\n\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null\n\n return side && `v-timeline--side-${side}`\n })\n\n const truncateClasses = computed(() => {\n const classes = [\n 'v-timeline--truncate-line-start',\n 'v-timeline--truncate-line-end',\n ]\n\n switch (props.truncateLine) {\n case 'both': return classes\n case 'start': return classes[0]\n case 'end': return classes[1]\n default: return null\n }\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-timeline',\n `v-timeline--${props.direction}`,\n `v-timeline--align-${props.align}`,\n `v-timeline--justify-${props.justify}`,\n truncateClasses.value,\n {\n 'v-timeline--inset-line': !!props.lineInset,\n },\n themeClasses.value,\n densityClasses.value,\n sideClasses.value,\n ]}\n style={{\n '--v-timeline-line-thickness': convertToUnit(props.lineThickness),\n }}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n"],"mappings":"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"}
@@ -19,7 +19,6 @@
19
19
  position: relative
20
20
 
21
21
  @include horizontal(true)
22
- grid-template-rows: $timeline-item-grid-template
23
22
  grid-column-gap: $timeline-item-padding
24
23
  width: 100%
25
24
 
@@ -43,13 +42,13 @@
43
42
  .v-timeline-item__body
44
43
  grid-row: 1
45
44
  padding-block-end: $timeline-item-padding
45
+ align-self: flex-end
46
46
 
47
47
  .v-timeline-item__opposite
48
48
  grid-row: 3
49
49
  padding-block-start: $timeline-item-padding
50
50
 
51
51
  @include vertical(true)
52
- grid-template-columns: $timeline-item-grid-template
53
52
  grid-row-gap: $timeline-item-padding
54
53
  height: 100%
55
54
 
@@ -230,6 +229,21 @@ $timeline-line-size-first-last: calc(var(--v-timeline-line-size-base) - var(--v-
230
229
 
231
230
  /** Modifiers **/
232
231
 
232
+ // Justify
233
+ .v-timeline--justify-center
234
+ @include horizontal(true)
235
+ grid-template-rows: $timeline-item-grid-template-center
236
+
237
+ @include vertical(true)
238
+ grid-template-columns: $timeline-item-grid-template-center
239
+
240
+ .v-timeline--justify-auto
241
+ @include horizontal(true)
242
+ grid-template-rows: $timeline-item-grid-template-auto
243
+
244
+ @include vertical(true)
245
+ grid-template-columns: $timeline-item-grid-template-auto
246
+
233
247
  // Density
234
248
  .v-timeline--density-comfortable
235
249
  @include horizontal(true)
@@ -3,8 +3,8 @@
3
3
  // VTimeline
4
4
  $timeline-density-comfortable-grid-template-end: min-content min-content auto !default;
5
5
  $timeline-density-comfortable-grid-template-start: auto min-content min-content !default;
6
- $timeline-density-compact-grid-template-end: min-content auto !default;
7
- $timeline-density-compact-grid-template-start: auto min-content !default;
6
+ $timeline-density-compact-grid-template-end: 0 min-content auto !default;
7
+ $timeline-density-compact-grid-template-start: auto min-content 0 !default;
8
8
  $timeline-dot-border-radius: 50% !default;
9
9
  $timeline-dot-divider-background: rgb(var(--v-theme-on-surface-variant)) !default;
10
10
  $timeline-dot-size: 38px !default;
@@ -19,7 +19,8 @@ $timeline-divider-line-horizontal-width: var(--v-timeline-line-inset, 0px) !defa
19
19
  $timeline-divider-line-thickness: var(--v-timeline-line-thickness) !default;
20
20
 
21
21
  // VTimelineItem
22
- $timeline-item-grid-template: auto min-content auto !default;
22
+ $timeline-item-grid-template-center: minmax(auto, 50%) min-content minmax(auto, 50%) !default;
23
+ $timeline-item-grid-template-auto: auto min-content auto !default;
23
24
  $timeline-item-padding: 24px !default;
24
25
 
25
26
  // Lists