index.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. export const hasClass = (ele: RefType<any>, cls: string): any => {
  2. return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
  3. };
  4. export const addClass = (
  5. ele: RefType<any>,
  6. cls: string,
  7. extracls?: string
  8. ): any => {
  9. if (!hasClass(ele, cls)) ele.className += " " + cls;
  10. if (extracls) {
  11. if (!hasClass(ele, extracls)) ele.className += " " + extracls;
  12. }
  13. };
  14. export const removeClass = (
  15. ele: RefType<any>,
  16. cls: string,
  17. extracls?: string
  18. ): any => {
  19. if (hasClass(ele, cls)) {
  20. const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
  21. ele.className = ele.className.replace(reg, " ").trim();
  22. }
  23. if (extracls) {
  24. if (hasClass(ele, extracls)) {
  25. const regs = new RegExp("(\\s|^)" + extracls + "(\\s|$)");
  26. ele.className = ele.className.replace(regs, " ").trim();
  27. }
  28. }
  29. };
  30. export const toggleClass = (
  31. flag: boolean,
  32. clsName: string,
  33. target?: RefType<any>
  34. ): any => {
  35. const targetEl = target || document.body;
  36. let { className } = targetEl;
  37. className = className.replace(clsName, "");
  38. targetEl.className = flag ? `${className} ${clsName} ` : className;
  39. };