## Description We need to upgrade `styled-components`, so that it will become easy to upgrade to version 6.0 when it is out. This is because, v6.0 has an important functionality which isn't available in today's version. ### Tasks completed - Update Styled components to latest version. - Prepare codebase by cleaning up the styled components functions that will be deprecated in version 6 - We are still using the `withTheme` HOC, we should instead use the `useTheme` hook (best practices) - Remove the `AnyStyledComponent` type it is un-necessary and will be deprecated Fixes #19463 ## Type of change - Non breaking change. The application should work as before and should not effect any visual elements or UI. ## How Has This Been Tested? - Manual @appsmithorg/qa please refer to the test plan for areas of interest. - Cypress: All existing test cases must pass. ### Test Plan - We need to do a sanity check on the Product Updates Modal, Release section. - We also need to do a sanity check on the Login, Signup, ResetPassword pages. - I think we can merge this Pull Request and continue with our weekly regression, because there are no style changes in this Pull Request, everything should work as expected. ## Checklist: ### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test
37 lines
955 B
TypeScript
37 lines
955 B
TypeScript
import { MutableRefObject, MouseEvent, useEffect } from "react";
|
|
|
|
export default (
|
|
currentRef: MutableRefObject<HTMLElement | null>,
|
|
singleClk: (e: MouseEvent<HTMLElement>) => void,
|
|
doubleClk?: (e: MouseEvent<HTMLElement>) => void,
|
|
) => {
|
|
useEffect(() => {
|
|
let clickCount = 0;
|
|
let timeoutId: ReturnType<typeof setTimeout>;
|
|
|
|
const handleClick = (e: any) => {
|
|
if (!doubleClk) {
|
|
singleClk(e);
|
|
} else {
|
|
clickCount++;
|
|
if (clickCount === 2 && doubleClk) {
|
|
doubleClk(e);
|
|
clearTimeout(timeoutId);
|
|
clickCount = 0;
|
|
} else {
|
|
timeoutId = setTimeout(() => {
|
|
singleClk(e);
|
|
clickCount = 0;
|
|
}, 200);
|
|
}
|
|
}
|
|
};
|
|
|
|
const el = currentRef.current;
|
|
el?.addEventListener("click", handleClick);
|
|
return () => {
|
|
el?.removeEventListener("click", handleClick);
|
|
};
|
|
}, [currentRef, singleClk, doubleClk]);
|
|
};
|