From 8a52ff3246bffa558decf7664d82acfa0e6b45de Mon Sep 17 00:00:00 2001 From: John Leider Date: Tue, 16 Apr 2024 23:20:07 -0500 Subject: [PATCH 01/39] fix(VNavigationDrawer): element drag area size fixes #17352 --- packages/vuetify/src/components/VNavigationDrawer/touch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vuetify/src/components/VNavigationDrawer/touch.ts b/packages/vuetify/src/components/VNavigationDrawer/touch.ts index d1c5dd009fc..0ae68af26f4 100644 --- a/packages/vuetify/src/components/VNavigationDrawer/touch.ts +++ b/packages/vuetify/src/components/VNavigationDrawer/touch.ts @@ -83,12 +83,12 @@ export function useTouch ({ isActive, isTemporary, width, touchless, position }: inElement || (isActive.value && isTemporary.value) ) { - maybeDragging = true start = [touchX, touchY] offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value) dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY) + maybeDragging = offset.value > -30 && offset.value < 30 endTouch(e) addMovement(e) } From c1e81503f72c4ed1740cab58966ded6549dc11e3 Mon Sep 17 00:00:00 2001 From: John Leider Date: Wed, 17 Apr 2024 09:04:35 -0500 Subject: [PATCH 02/39] chore(touch): increase touch area that triggers drag --- packages/vuetify/src/components/VNavigationDrawer/touch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vuetify/src/components/VNavigationDrawer/touch.ts b/packages/vuetify/src/components/VNavigationDrawer/touch.ts index 0ae68af26f4..36e5f57af5c 100644 --- a/packages/vuetify/src/components/VNavigationDrawer/touch.ts +++ b/packages/vuetify/src/components/VNavigationDrawer/touch.ts @@ -88,7 +88,7 @@ export function useTouch ({ isActive, isTemporary, width, touchless, position }: offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value) dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY) - maybeDragging = offset.value > -30 && offset.value < 30 + maybeDragging = offset.value > -100 && offset.value < 100 endTouch(e) addMovement(e) } From d6a500be40baaa44d58c151fb898cde8ab875e1a Mon Sep 17 00:00:00 2001 From: Kael Date: Thu, 18 Apr 2024 00:40:54 +1000 Subject: [PATCH 03/39] fix(VCombobox): don't delete chips on backspace until search is empty fixes #19626 --- .../VAutocomplete/VAutocomplete.tsx | 21 ++++++++---------- .../src/components/VCombobox/VCombobox.tsx | 22 +++++++++---------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx b/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx index e676a30a39e..81d862e4185 100644 --- a/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx +++ b/packages/vuetify/src/components/VAutocomplete/VAutocomplete.tsx @@ -250,21 +250,18 @@ export const VAutocomplete = genericComponent 0 + model.value.length > 0 && + !search.value ) return select(model.value[0], false) - if (selectionIndex.value < 0) { - if (e.key === 'Backspace' && !search.value) { - selectionIndex.value = length - 1 - } + if (~selectionIndex.value) { + const originalSelectionIndex = selectionIndex.value + select(model.value[selectionIndex.value], false) - return + selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex + } else if (e.key === 'Backspace' && !search.value) { + selectionIndex.value = length - 1 } - - const originalSelectionIndex = selectionIndex.value - select(model.value[selectionIndex.value], false) - - selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex } if (!props.multiple) return @@ -324,7 +321,7 @@ export const VAutocomplete = genericComponent 0 + model.value.length > 0 && + !search.value ) return select(model.value[0], false) - if (selectionIndex.value < 0) { - if (e.key === 'Backspace' && !search.value) { - selectionIndex.value = length - 1 - } - return - } + if (~selectionIndex.value) { + const originalSelectionIndex = selectionIndex.value + select(model.value[selectionIndex.value], false) - const originalSelectionIndex = selectionIndex.value - select(model.value[selectionIndex.value], false) - - selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex + selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex + } else if (e.key === 'Backspace' && !search.value) { + selectionIndex.value = length - 1 + } } if (!props.multiple) return @@ -405,7 +403,7 @@ export const VCombobox = genericComponent { From bb486ae9b6ea04bc0bc6cce962d7f733b13b833a Mon Sep 17 00:00:00 2001 From: John Leider Date: Wed, 17 Apr 2024 09:42:22 -0500 Subject: [PATCH 04/39] fix(VNavigationDrawer): manually apply dragging styles to avoid rerender dragStyles causes rerendering of internal items when dragging --- .../VNavigationDrawer/VNavigationDrawer.tsx | 4 +-- .../src/components/VNavigationDrawer/touch.ts | 28 +++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/vuetify/src/components/VNavigationDrawer/VNavigationDrawer.tsx b/packages/vuetify/src/components/VNavigationDrawer/VNavigationDrawer.tsx index 346e7a4668c..99eda661bc9 100644 --- a/packages/vuetify/src/components/VNavigationDrawer/VNavigationDrawer.tsx +++ b/packages/vuetify/src/components/VNavigationDrawer/VNavigationDrawer.tsx @@ -155,7 +155,8 @@ export const VNavigationDrawer = genericComponent()({ isActive.value = props.permanent || !mobile.value }) - const { isDragging, dragProgress, dragStyles } = useTouch({ + const { isDragging, dragProgress } = useTouch({ + el: rootEl, isActive, isTemporary, width, @@ -243,7 +244,6 @@ export const VNavigationDrawer = genericComponent()({ style={[ backgroundColorStyles.value, layoutItemStyles.value, - dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, diff --git a/packages/vuetify/src/components/VNavigationDrawer/touch.ts b/packages/vuetify/src/components/VNavigationDrawer/touch.ts index 36e5f57af5c..1f21ecfed84 100644 --- a/packages/vuetify/src/components/VNavigationDrawer/touch.ts +++ b/packages/vuetify/src/components/VNavigationDrawer/touch.ts @@ -1,13 +1,22 @@ // Composables +import { useToggleScope } from '@/composables/toggleScope' import { useVelocity } from '@/composables/touch' // Utilities -import { computed, onBeforeUnmount, onMounted, shallowRef } from 'vue' +import { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue' // Types import type { Ref } from 'vue' -export function useTouch ({ isActive, isTemporary, width, touchless, position }: { +export function useTouch ({ + el, + isActive, + isTemporary, + width, + touchless, + position, +}: { + el: Ref isActive: Ref isTemporary: Ref width: Ref @@ -174,6 +183,21 @@ export function useTouch ({ isActive, isTemporary, width, touchless, position }: } : undefined }) + useToggleScope(isDragging, () => { + const transform = el.value?.style.transform ?? null + const transition = el.value?.style.transition ?? null + + watchEffect(() => { + el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none') + el.value?.style.setProperty('transition', dragStyles.value?.transition || null) + }) + + onScopeDispose(() => { + el.value?.style.setProperty('transform', transform) + el.value?.style.setProperty('transition', transition) + }) + }) + return { isDragging, dragProgress, From 118507f3784513670648dffc2cae845fb577292b Mon Sep 17 00:00:00 2001 From: John Leider Date: Wed, 17 Apr 2024 09:49:24 -0500 Subject: [PATCH 05/39] chore(VNavigationDrawer): adjust touch drag size --- packages/vuetify/src/components/VNavigationDrawer/touch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vuetify/src/components/VNavigationDrawer/touch.ts b/packages/vuetify/src/components/VNavigationDrawer/touch.ts index 1f21ecfed84..f7f2a4e66c7 100644 --- a/packages/vuetify/src/components/VNavigationDrawer/touch.ts +++ b/packages/vuetify/src/components/VNavigationDrawer/touch.ts @@ -97,7 +97,7 @@ export function useTouch ({ offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value) dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY) - maybeDragging = offset.value > -100 && offset.value < 100 + maybeDragging = offset.value > -20 && offset.value < 80 endTouch(e) addMovement(e) } From 10864261bf5a07c79fb0a67c4f1e5503fa859edd Mon Sep 17 00:00:00 2001 From: Kael Date: Thu, 18 Apr 2024 01:08:43 +1000 Subject: [PATCH 06/39] fix(typography): use relative line heights (#19628) --- .../src/styles/settings/_variables.scss | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/vuetify/src/styles/settings/_variables.scss b/packages/vuetify/src/styles/settings/_variables.scss index e29c25c62dd..e91ae1cb60c 100644 --- a/packages/vuetify/src/styles/settings/_variables.scss +++ b/packages/vuetify/src/styles/settings/_variables.scss @@ -180,7 +180,7 @@ $typography: map-deep-merge( 'h1': ( 'size': 6rem, 'weight': 300, - 'line-height': 6rem, + 'line-height': 1, 'letter-spacing': -.015625em, 'font-family': $heading-font-family, 'text-transform': none @@ -188,7 +188,7 @@ $typography: map-deep-merge( 'h2': ( 'size': 3.75rem, 'weight': 300, - 'line-height': 3.75rem, + 'line-height': 1, 'letter-spacing': -.0083333333em, 'font-family': $heading-font-family, 'text-transform': none @@ -196,7 +196,7 @@ $typography: map-deep-merge( 'h3': ( 'size': 3rem, 'weight': 400, - 'line-height': 3.125rem, + 'line-height': 1.05, 'letter-spacing': normal, 'font-family': $heading-font-family, 'text-transform': none @@ -204,7 +204,7 @@ $typography: map-deep-merge( 'h4': ( 'size': 2.125rem, 'weight': 400, - 'line-height': 2.5rem, + 'line-height': 1.175, 'letter-spacing': .0073529412em, 'font-family': $heading-font-family, 'text-transform': none @@ -212,7 +212,7 @@ $typography: map-deep-merge( 'h5': ( 'size': 1.5rem, 'weight': 400, - 'line-height': 2rem, + 'line-height': 1.333, 'letter-spacing': normal, 'font-family': $heading-font-family, 'text-transform': none @@ -220,7 +220,7 @@ $typography: map-deep-merge( 'h6': ( 'size': 1.25rem, 'weight': 500, - 'line-height': 2rem, + 'line-height': 1.6, 'letter-spacing': .0125em, 'font-family': $heading-font-family, 'text-transform': none @@ -228,7 +228,7 @@ $typography: map-deep-merge( 'subtitle-1': ( 'size': 1rem, 'weight': normal, - 'line-height': 1.75rem, + 'line-height': 1.75, 'letter-spacing': .009375em, 'font-family': $body-font-family, 'text-transform': none @@ -236,7 +236,7 @@ $typography: map-deep-merge( 'subtitle-2': ( 'size': .875rem, 'weight': 500, - 'line-height': 1.375rem, + 'line-height': 1.6, 'letter-spacing': .0071428571em, 'font-family': $body-font-family, 'text-transform': none @@ -244,7 +244,7 @@ $typography: map-deep-merge( 'body-1': ( 'size': 1rem, 'weight': 400, - 'line-height': 1.5rem, + 'line-height': 1.5, 'letter-spacing': .03125em, 'font-family': $body-font-family, 'text-transform': none @@ -252,7 +252,7 @@ $typography: map-deep-merge( 'body-2': ( 'size': .875rem, 'weight': 400, - 'line-height': 1.25rem, + 'line-height': 1.425, 'letter-spacing': .0178571429em, 'font-family': $body-font-family, 'text-transform': none @@ -260,7 +260,7 @@ $typography: map-deep-merge( 'button': ( 'size': .875rem, 'weight': 500, - 'line-height': 2.25rem, + 'line-height': 2.6, 'letter-spacing': .0892857143em, 'font-family': $body-font-family, 'text-transform': uppercase @@ -268,7 +268,7 @@ $typography: map-deep-merge( 'caption': ( 'size': .75rem, 'weight': 400, - 'line-height': 1.25rem, + 'line-height': 1.667, 'letter-spacing': .0333333333em, 'font-family': $body-font-family, 'text-transform': none @@ -276,7 +276,7 @@ $typography: map-deep-merge( 'overline': ( 'size': .75rem, 'weight': 500, - 'line-height': 2rem, + 'line-height': 2.667, 'letter-spacing': .1666666667em, 'font-family': $body-font-family, 'text-transform': uppercase From bc53bd36df0ec4932b7d3623642d3d1044f3dd0b Mon Sep 17 00:00:00 2001 From: John Leider Date: Wed, 17 Apr 2024 10:39:32 -0500 Subject: [PATCH 07/39] docs(VNavigationDrawer); fix bottom-drawer example --- .../v-navigation-drawer/prop-bottom-drawer.vue | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/docs/src/examples/v-navigation-drawer/prop-bottom-drawer.vue b/packages/docs/src/examples/v-navigation-drawer/prop-bottom-drawer.vue index 38a2a43af7d..6043ddcd14e 100644 --- a/packages/docs/src/examples/v-navigation-drawer/prop-bottom-drawer.vue +++ b/packages/docs/src/examples/v-navigation-drawer/prop-bottom-drawer.vue @@ -1,8 +1,6 @@