From 712d3c5205766144616b0eb2257e3c35dde408dc Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 19 Jan 2026 11:53:42 +0000 Subject: [PATCH 1/8] Add a very slight delay to bulk actions to prevent the floating bar width changing as the "duplicate" action is rendered --- resources/js/components/ui/Listing/BulkActions.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/components/ui/Listing/BulkActions.vue b/resources/js/components/ui/Listing/BulkActions.vue index 63ef6e7f578..32824dc7690 100644 --- a/resources/js/components/ui/Listing/BulkActions.vue +++ b/resources/js/components/ui/Listing/BulkActions.vue @@ -49,7 +49,7 @@ function actionFailed(response) { class="fixed inset-x-0 bottom-1 sm:bottom-6 z-100 flex w-full max-w-[95vw] mx-auto justify-center " :initial="{ y: 100, opacity: 0 }" :animate="{ y: 0, opacity: 1 }" - :transition="{ duration: 0.2, ease: 'easeInOut' }" + :transition="{ duration: 0.2, delay: 0.075, ease: 'easeInOut' }" >
From 7363e3a26bf935640af7f8007a99cd617e079865 Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 19 Jan 2026 12:10:19 +0000 Subject: [PATCH 2/8] When the listings are shorter than the viewport, position the floating toolbar at the bottom of the listings container --- resources/js/components/ui/Button/Group.vue | 28 +++++++++++++++++++ .../js/components/ui/Listing/Listing.vue | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/resources/js/components/ui/Button/Group.vue b/resources/js/components/ui/Button/Group.vue index c8feb054a7b..972940126bf 100644 --- a/resources/js/components/ui/Button/Group.vue +++ b/resources/js/components/ui/Button/Group.vue @@ -36,4 +36,32 @@ } } } + + /* When the listings are shorter than the viewport, position the floating toolbar at the bottom of the listings container. */ + @supports (anchor-name: --results) { + /* [1] Test whether the listings container is scrollable if listings are present. */ + #main-content:has([data-listings-container]) { + container-type: scroll-state; + + #content-card { + /* [2] If the listings container is relatively short (not scrollable), position the floating toolbar at the bottom of it. This is helpful for taller screens. The toolbar is more noticeable when it's not at the bottom of the viewport. */ + @container not scroll-state(scrollable: y) { + [data-floating-toolbar] { + position: absolute; + position-anchor: --results; + top: 3rem; + position-area: bottom; + + > * { + translate: unset; + } + } + } + } + } + + [data-listings-container] { + anchor-name: --results; + } + } diff --git a/resources/js/components/ui/Listing/Listing.vue b/resources/js/components/ui/Listing/Listing.vue index 9eb3655eee3..936e3cfbf66 100644 --- a/resources/js/components/ui/Listing/Listing.vue +++ b/resources/js/components/ui/Listing/Listing.vue @@ -729,7 +729,7 @@ autoApplyState(); v-text="__('No results')" /> - + diff --git a/resources/js/components/ui/DocsCallout.vue b/resources/js/components/ui/DocsCallout.vue index 988b6300c6e..b9931260a5d 100644 --- a/resources/js/components/ui/DocsCallout.vue +++ b/resources/js/components/ui/DocsCallout.vue @@ -15,7 +15,7 @@ const url = computed(() => props.url.startsWith('http') ? props.url : `https://s