PromucFlow_constructor/app/client/src/utils/hooks/useClick.tsx
Arsalan Yaldram 119f0be18b
chore: update Styled components to latest version and related cleanup (#19284)
## 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
2023-01-13 16:35:59 +05:30

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]);
};