diff --git a/app/client/src/components/ads/Icon.tsx b/app/client/src/components/ads/Icon.tsx index 30940f9942..d61771cf69 100644 --- a/app/client/src/components/ads/Icon.tsx +++ b/app/client/src/components/ads/Icon.tsx @@ -198,7 +198,8 @@ export const IconWrapper = styled.span` display: flex; align-items: center; - + cursor: ${(props) => + props.disabled ? "not-allowed" : props.clickable ? "pointer" : "default"}; svg { width: ${(props) => sizeHandler(props.size)}px; height: ${(props) => sizeHandler(props.size)}px; @@ -217,7 +218,6 @@ export const IconWrapper = styled.span` ${(props) => (props.invisible ? `visibility: hidden;` : null)}; &:hover { - cursor: ${(props) => (props.clickable ? "pointer" : "default")}; ${(props) => !props.keepColors ? ` @@ -400,10 +400,14 @@ export type IconProps = { keepColors?: boolean; loaderWithIconWrapper?: boolean; clickable?: boolean; + disabled?: boolean; }; const Icon = forwardRef( - (props: IconProps & CommonComponentProps, ref: Ref) => { + ( + { onClick, ...props }: IconProps & CommonComponentProps, + ref: Ref, + ) => { const iconName = props.name; const returnIcon = ICON_LOOKUP[iconName as keyof typeof ICON_LOOKUP] || null; @@ -424,9 +428,9 @@ const Icon = forwardRef( className={`${Classes.ICON} ${props.className}`} clickable={clickable} data-cy={props.cypressSelector} + onClick={props.disabled ? noop : onClick} ref={ref} {...props} - onClick={props.onClick || noop} > {returnIcon} diff --git a/app/client/src/pages/Editor/BottomBar/ManualUpgrades.tsx b/app/client/src/pages/Editor/BottomBar/ManualUpgrades.tsx index ca82f6604f..4e33b06d4f 100644 --- a/app/client/src/pages/Editor/BottomBar/ManualUpgrades.tsx +++ b/app/client/src/pages/Editor/BottomBar/ManualUpgrades.tsx @@ -248,7 +248,6 @@ function ManualUpgrades() { > { diff --git a/app/client/src/widgets/SelectWidget/component/SelectButton.test.tsx b/app/client/src/widgets/SelectWidget/component/SelectButton.test.tsx index ab0c65b382..5fe7a1996f 100644 --- a/app/client/src/widgets/SelectWidget/component/SelectButton.test.tsx +++ b/app/client/src/widgets/SelectWidget/component/SelectButton.test.tsx @@ -18,15 +18,27 @@ const renderComponent = (props: SelectButtonProps = defaultProps) => { }; describe("SelectButton", () => { + it("should not clear value when disabled", () => { + const { getByTestId, getByText } = renderComponent({ + ...defaultProps, + disabled: true, + }); + fireEvent.click(getByTestId("selectbutton.btn.cancel")); + expect(defaultProps.handleCancelClick).not.toBeCalled(); + expect(getByText("0")).toBeTruthy(); + }); + it("should render correctly", () => { const { getByText } = renderComponent(); expect(getByText("0")).toBeTruthy(); }); + it("should trigger handleCancelClick method on cancel click", () => { const { getByTestId } = renderComponent(); fireEvent.click(getByTestId("selectbutton.btn.cancel")); expect(defaultProps.handleCancelClick).toBeCalled(); }); + it("should toggle popover visibility method on button click", () => { const { getByTestId } = renderComponent(); fireEvent.click(getByTestId("selectbutton.btn.main")); diff --git a/app/client/src/widgets/SelectWidget/component/SelectButton.tsx b/app/client/src/widgets/SelectWidget/component/SelectButton.tsx index 0daadbd257..7d2c1d9f57 100644 --- a/app/client/src/widgets/SelectWidget/component/SelectButton.tsx +++ b/app/client/src/widgets/SelectWidget/component/SelectButton.tsx @@ -38,6 +38,7 @@ function SelectButton(props: SelectButtonProps) {