From f6fbe6fd4751a022812215cb66da57f54031254f Mon Sep 17 00:00:00 2001 From: chyzman Date: Mon, 17 Aug 2026 15:17:58 -0400 Subject: [PATCH 1/3] fix some ButtonLinks not being links --- .../ui/src/components/base/buttons/ButtonLink.vue | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/components/base/buttons/ButtonLink.vue b/packages/ui/src/components/base/buttons/ButtonLink.vue index cb11c7c6c6..de2ee04ce7 100644 --- a/packages/ui/src/components/base/buttons/ButtonLink.vue +++ b/packages/ui/src/components/base/buttons/ButtonLink.vue @@ -38,6 +38,15 @@ const resolvedRel = computed(() => { return props.target === '_blank' ? 'noopener noreferrer' : undefined }) +// https://github.com/vuejs/vue-router/issues/2005 moment +const linkAttrs = computed(() => + usesRouter.value + ? { to: props.to } + : !props.disabled + ? { href: props.href } + : {}, +) + function handleClick(event: MouseEvent) { if (!props.disabled) return event.preventDefault() @@ -52,8 +61,7 @@ function handleClick(event: MouseEvent) { :color="props.color" :size="props.size" :interaction="props.interaction" - :to="usesRouter ? props.to : undefined" - :href="!usesRouter && !props.disabled ? props.href : undefined" + v-bind="linkAttrs" :target="props.target" :rel="resolvedRel" :download="!props.disabled ? props.download : undefined" From 9f5008ce17f6a5ee1ea50a7794473b9b9eb9b015 Mon Sep 17 00:00:00 2001 From: chyzman Date: Tue, 18 Aug 2026 14:19:41 -0400 Subject: [PATCH 2/3] fix comboboxes not aligning correctly immediately --- packages/ui/src/components/base/Combobox.vue | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/ui/src/components/base/Combobox.vue b/packages/ui/src/components/base/Combobox.vue index 750238a9e1..eddd74c20c 100644 --- a/packages/ui/src/components/base/Combobox.vue +++ b/packages/ui/src/components/base/Combobox.vue @@ -478,7 +478,7 @@ function setInitialFocus() { function determineOpenDirection( triggerRect: DOMRect, - dropdownRect: DOMRect, + dropdownRect: { width: number; height: number }, viewport: ViewportRect, ): 'up' | 'down' { if (props.forceDirection) { @@ -499,7 +499,7 @@ function determineOpenDirection( function calculateVerticalPosition( triggerRect: DOMRect, - dropdownRect: DOMRect, + dropdownRect: { width: number; height: number }, direction: 'up' | 'down', viewport: ViewportRect, ): number { @@ -513,7 +513,7 @@ function calculateVerticalPosition( function calculateHorizontalPosition( triggerRect: DOMRect, - dropdownRect: DOMRect, + dropdownRect: { width: number; height: number }, viewport: ViewportRect, ): number { const minLeft = viewport.offsetLeft + DROPDOWN_VIEWPORT_MARGIN @@ -556,7 +556,7 @@ async function updateDropdownPosition() { await nextTick() const triggerRect = effectiveTriggerEl.value.getBoundingClientRect() - const width = resolveDropdownWidth(triggerRect.width) + const width = resolveDropdownWidth(effectiveTriggerEl.value.offsetWidth) const minWidth = resolveCssSize(props.dropdownMinWidth) ?? '0px' dropdownStyle.value = { @@ -567,7 +567,10 @@ async function updateDropdownPosition() { await nextTick() - const dropdownRect = dropdownRef.value.getBoundingClientRect() + const dropdownRect = { + width: dropdownRef.value.offsetWidth, + height: dropdownRef.value.offsetHeight, + } const viewport = getViewportRect() const direction = determineOpenDirection(triggerRect, dropdownRect, viewport) From 3a4ad3c968e5123dde3365bf6e88b0bf299b6ae7 Mon Sep 17 00:00:00 2001 From: chyzman Date: Wed, 19 Aug 2026 15:02:05 -0400 Subject: [PATCH 3/3] prepr --- packages/ui/src/components/base/buttons/ButtonLink.vue | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/ui/src/components/base/buttons/ButtonLink.vue b/packages/ui/src/components/base/buttons/ButtonLink.vue index de2ee04ce7..08d59351cf 100644 --- a/packages/ui/src/components/base/buttons/ButtonLink.vue +++ b/packages/ui/src/components/base/buttons/ButtonLink.vue @@ -40,11 +40,7 @@ const resolvedRel = computed(() => { // https://github.com/vuejs/vue-router/issues/2005 moment const linkAttrs = computed(() => - usesRouter.value - ? { to: props.to } - : !props.disabled - ? { href: props.href } - : {}, + usesRouter.value ? { to: props.to } : !props.disabled ? { href: props.href } : {}, ) function handleClick(event: MouseEvent) {