diff --git a/.changeset/short-lions-develop.md b/.changeset/short-lions-develop.md
new file mode 100644
index 0000000000..8ec88e5826
--- /dev/null
+++ b/.changeset/short-lions-develop.md
@@ -0,0 +1,6 @@
+---
+'@storefront-ui/react': patch
+'@storefront-ui/vue': patch
+---
+
+Unify code between vue and react, when buttons are disabled in floating button position mode they should be hidden
diff --git a/apps/docs/components/components/scrollable.md b/apps/docs/components/components/scrollable.md
index 8454b0e85a..41ef0a1bd0 100644
--- a/apps/docs/components/components/scrollable.md
+++ b/apps/docs/components/components/scrollable.md
@@ -15,14 +15,10 @@ This component is shipped in our NPM package, but its API might change based on
::: read-more
-
Learn more about `useScrollable` hook in the [Hooks > useScrollable docs](/react/hooks/useScrollable.html).
-
-
Learn more about `useScrollable` composable in the [Composables > useScrollable docs](/vue/hooks/useScrollable.html).
-
:::
@@ -36,14 +32,10 @@ Can be setup that will be without scrollbar
-
<<<../../preview/nuxt/pages/showcases/Scrollable/HideScrollbar.vue
-
-
<<<../../preview/next/pages/showcases/Scrollable/HideScrollbar.tsx#source
-
@@ -55,14 +47,10 @@ Can be setup that will be without scrollbar
-
<<<../../preview/nuxt/pages/showcases/Scrollable/SnapCenter.vue
-
-
<<<../../preview/next/pages/showcases/Scrollable/SnapCenter.tsx#source
-
@@ -74,14 +62,10 @@ By default `SfScrollable` scroll by one page of items, but can be modified that
-
<<<../../preview/nuxt/pages/showcases/Scrollable/ScrollByOneItem.vue
-
-
<<<../../preview/next/pages/showcases/Scrollable/ScrollByOneItem.tsx#source
-
@@ -157,14 +141,11 @@ The previous and next buttons have `aria-label` attributes (`buttonPrevAriaLabel
-
<<<../../../packages/sfui/frameworks/vue/components/SfScrollable/SfScrollable.vue
-
-
<<< ../../../packages/sfui/frameworks/react/components/SfScrollable/SfScrollable.tsx
-
+
::::::
diff --git a/packages/sfui/frameworks/react/components/SfScrollable/SfScrollable.tsx b/packages/sfui/frameworks/react/components/SfScrollable/SfScrollable.tsx
index 222343b22c..74234e4bed 100644
--- a/packages/sfui/frameworks/react/components/SfScrollable/SfScrollable.tsx
+++ b/packages/sfui/frameworks/react/components/SfScrollable/SfScrollable.tsx
@@ -92,8 +92,8 @@ const SfScrollable = polymorphicForwardRef,
ariaLabel: buttonPrevAriaLabel,
className: classNames(
- 'hidden md:block !ring-neutral-500 !text-neutral-500 disabled:!ring-disabled-300 disabled:!text-disabled-500',
classNameButton,
+ isFloating ? 'disabled:hidden' : 'disabled:!ring-disabled-300 disabled:!text-disabled-500',
),
})}
/>
@@ -114,8 +114,8 @@ const SfScrollable = polymorphicForwardRef,
ariaLabel: buttonNextAriaLabel,
className: classNames(
- 'hidden md:block !ring-neutral-500 !text-neutral-500 disabled:!ring-disabled-300 disabled:!text-disabled-500',
classNameButton,
+ isFloating ? 'disabled:hidden' : 'disabled:!ring-disabled-300 disabled:!text-disabled-500',
),
})}
/>
@@ -131,7 +131,7 @@ const SfScrollable = polymorphicForwardRef
{buttonsPlacement !== SfScrollableButtonsPlacement.none && (
{buttonsPlacement !== SfScrollableButtonsPlacement.none && (
- isDisabled ? '!ring-disabled-300 !text-disabled-500' : '!ring-neutral-500 !text-neutral-500';
const isHorizontal = computed(() => props.direction === SfScrollableDirection.horizontal);
+const isFloating = computed(() => props.buttonsPlacement === SfScrollableButtonsPlacement.floating);
+const isBlock = computed(() => props.buttonsPlacement === SfScrollableButtonsPlacement.block);
@@ -112,14 +112,17 @@ const isHorizontal = computed(() => props.direction === SfScrollableDirection.ho
size="lg"
square
:class="[
- '!rounded-full bg-white hidden md:block',
- buttonsPlacement === SfScrollableButtonsPlacement.block && (isHorizontal ? 'mr-4' : 'mb-4 rotate-90'),
- buttonsPlacement === SfScrollableButtonsPlacement.floating && (isHorizontal ? 'left-4' : 'top-4 rotate-90'),
- { 'absolute z-10': buttonsPlacement === SfScrollableButtonsPlacement.floating },
- changeDisabledClass(typeof prevDisabled === 'boolean' ? prevDisabled : getPrevButtonProps.disabled),
+ '!rounded-full bg-white hidden md:block !ring-neutral-500 !text-neutral-500',
+ {
+ 'mr-4': isBlock && isHorizontal,
+ 'mb-4 rotate-90': isBlock && !isHorizontal,
+ 'absolute left-4 z-10': isFloating && isHorizontal,
+ 'absolute top-4 rotate-90 z-10': isFloating && !isHorizontal,
+ },
+ isFloating ? 'disabled:hidden' : 'disabled:!ring-disabled-300 disabled:!text-disabled-500',
]"
v-bind="getPrevButtonProps"
- :disabled="prevDisabled"
+ :disabled="prevDisabled || getPrevButtonProps.disabled"
:aria-label="buttonPrevAriaLabel"
>
@@ -151,14 +154,17 @@ const isHorizontal = computed(() => props.direction === SfScrollableDirection.ho
size="lg"
square
:class="[
- '!rounded-full bg-white hidden md:block',
- buttonsPlacement === SfScrollableButtonsPlacement.block && (isHorizontal ? 'ml-4' : 'mt-4 rotate-90'),
- buttonsPlacement === SfScrollableButtonsPlacement.floating && (isHorizontal ? 'right-4' : 'bottom-4 rotate-90'),
- { 'absolute z-10': buttonsPlacement === SfScrollableButtonsPlacement.floating },
- changeDisabledClass(typeof nextDisabled === 'boolean' ? nextDisabled : getNextButtonProps.disabled),
+ '!rounded-full bg-white hidden md:block !ring-neutral-500 !text-neutral-500',
+ {
+ 'ml-4': isBlock && isHorizontal,
+ 'mt-4 rotate-90': isBlock && !isHorizontal,
+ 'absolute right-4 z-10': isFloating && isHorizontal,
+ 'absolute bottom-4 rotate-90 z-10': isFloating && !isHorizontal,
+ },
+ isFloating ? 'disabled:hidden' : 'disabled:!ring-disabled-300 disabled:!text-disabled-500',
]"
v-bind="getNextButtonProps"
- :disabled="nextDisabled"
+ :disabled="nextDisabled || getNextButtonProps.disabled"
:aria-label="buttonNextAriaLabel"
>