Skip to content

Commit 0825f88

Browse files
authored
fix(spinner): cater global spinner variant (#5948)
* fix(spinner): cater global spinner variant * feat(spinner): add spinner test cases * chore(changeset): add changeset
1 parent ce0c298 commit 0825f88

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

.changeset/perfect-toes-cry.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@heroui/spinner": patch
3+
---
4+
5+
cater global spinner variant (#5939)

packages/components/spinner/__tests__/spinner.test.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as React from "react";
22
import {render} from "@testing-library/react";
3+
import {HeroUIProvider} from "@heroui/system";
34

45
import {Spinner} from "../src";
56

@@ -40,4 +41,24 @@ describe("Spinner", () => {
4041

4142
expect(getByLabelText("Custom label")).toBeInTheDocument();
4243
});
44+
45+
it("should use global spinner variant if variant is not defined", () => {
46+
const {container} = render(
47+
<HeroUIProvider spinnerVariant="gradient">
48+
<Spinner aria-label="Custom label" />
49+
</HeroUIProvider>,
50+
);
51+
52+
expect(container.querySelector("[class*='gradient']")).toBeInTheDocument();
53+
});
54+
55+
it("should not use global spinner variant if variant is defined", () => {
56+
const {container} = render(
57+
<HeroUIProvider spinnerVariant="gradient">
58+
<Spinner aria-label="Custom label" variant="default" />
59+
</HeroUIProvider>,
60+
);
61+
62+
expect(container.querySelector("[class*='gradient']")).not.toBeInTheDocument();
63+
});
4364
});

packages/components/spinner/src/use-spinner.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ export function useSpinner(originalProps: UseSpinnerProps) {
4545

4646
const {children, className, classNames, label: labelProp, ...otherProps} = props;
4747

48-
const slots = useMemo(() => spinner({...variantProps}), [objectToDeps(variantProps)]);
48+
const slots = useMemo(
49+
() => spinner({...variantProps, variant}),
50+
[objectToDeps(variantProps), variant],
51+
);
4952

5053
const baseStyles = clsx(classNames?.base, className);
5154

0 commit comments

Comments
 (0)