kelt-ui-kit-react 1.7.9 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kelt-ui-kit-react",
3
3
  "type": "module",
4
- "version": "1.7.9",
4
+ "version": "1.8.1",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -62,7 +62,7 @@ export const Sidebar = ({
62
62
  }, [onClose]);
63
63
 
64
64
  const handleClickOutside = useCallback(
65
- (event: MouseEvent) => {
65
+ (event: MouseEvent | TouchEvent) => {
66
66
  if (!closeOnClickOutside) return;
67
67
  if (
68
68
  sidebarRef.current &&
@@ -96,15 +96,28 @@ export const Sidebar = ({
96
96
  [isOpen, toggleSidebar],
97
97
  );
98
98
 
99
+ const handleOverlayTouchEnd = useCallback(
100
+ (event: React.TouchEvent) => {
101
+ event.preventDefault();
102
+ toggleSidebar();
103
+ },
104
+ [toggleSidebar],
105
+ );
106
+
99
107
  useEffect(() => {
100
108
  if (isOpen) {
101
109
  document.addEventListener("mousedown", handleClickOutside);
110
+ document.addEventListener("touchstart", handleClickOutside, {
111
+ passive: true,
112
+ });
102
113
  } else {
103
114
  document.removeEventListener("mousedown", handleClickOutside);
115
+ document.removeEventListener("touchstart", handleClickOutside);
104
116
  }
105
117
 
106
118
  return () => {
107
119
  document.removeEventListener("mousedown", handleClickOutside);
120
+ document.removeEventListener("touchstart", handleClickOutside);
108
121
  };
109
122
  }, [isOpen, handleClickOutside]);
110
123
 
@@ -114,7 +127,13 @@ export const Sidebar = ({
114
127
 
115
128
  return ReactDOM.createPortal(
116
129
  <>
117
- {isOpen && displayOverlay && <div className="overlay"></div>}
130
+ {isOpen && displayOverlay && (
131
+ <div
132
+ className="overlay"
133
+ onClick={toggleSidebar}
134
+ onTouchEnd={handleOverlayTouchEnd}
135
+ ></div>
136
+ )}
118
137
  <div
119
138
  ref={sidebarRef}
120
139
  style={width ? { width: width } : {}}
@@ -1,3 +1,12 @@
1
+ .overlay {
2
+ touch-action: none;
3
+ }
4
+
5
+ .toggle-btn {
6
+ -webkit-tap-highlight-color: transparent;
7
+ touch-action: manipulation;
8
+ }
9
+
1
10
  .sidebar {
2
11
  width: 200px;
3
12
  height: 100vh;
@@ -10,6 +19,8 @@
10
19
  transform: translateX(0);
11
20
  z-index: 2;
12
21
 
22
+
23
+
13
24
  &:not(.full) {
14
25
  inset: 0;
15
26
  }
@@ -84,4 +95,4 @@
84
95
  width: 40vw;
85
96
  }
86
97
  }
87
- }
98
+ }