@os-design/core 1.0.271 → 1.0.273
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/dist/DatePicker/index.d.ts.map +1 -1
- package/dist/DatePicker/index.js +10 -4
- package/dist/Drawer/index.d.ts.map +1 -1
- package/dist/Drawer/index.js +18 -3
- package/dist/Modal/index.d.ts.map +1 -1
- package/dist/Modal/index.js +16 -5
- package/package.json +3 -3
- package/src/DatePicker/index.tsx +10 -3
- package/src/Drawer/index.tsx +24 -4
- package/src/Modal/index.tsx +21 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/DatePicker/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/DatePicker/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOlD,OAAO,KAON,MAAM,OAAO,CAAC;AAiBf,KAAK,WAAW,GAAG,IAAI,CACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,CAC9C,CAAC;AACF,UAAU,mBAAmB,CAAC,CAAC,CAAE,SAAQ,WAAW,EAAE,QAAQ;IAC5D;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAClD;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AACD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB,CAAC,IAAI,CAAC;IACxE;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AACD,MAAM,WAAW,oBACf,SAAQ,mBAAmB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC;;;OAGG;IACH,KAAK,EAAE,IAAI,CAAC;CACb;AACD,MAAM,MAAM,eAAe,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AAsC7E;;GAEG;AACH,QAAA,MAAM,UAAU,wFA4Xf,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
package/dist/DatePicker/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import styled from '@emotion/styled';
|
|
2
|
-
import { defaultLocale, getAccessibilityDateLabel, useFormattedValue } from '@os-design/date-picker-utils';
|
|
2
|
+
import { defaultLocale, getAccessibilityDateLabel, useFormattedValue, isSameDay } from '@os-design/date-picker-utils';
|
|
3
3
|
import { Down, Up } from '@os-design/icons';
|
|
4
4
|
import { useIsMinWidth } from '@os-design/media';
|
|
5
5
|
import { ThemeOverrider } from '@os-design/theming';
|
|
@@ -175,9 +175,15 @@ const DatePicker = /*#__PURE__*/forwardRef(({
|
|
|
175
175
|
const tabOnInputComplete = useCallback(e => {
|
|
176
176
|
if (e.target.selectionStart < 5) return;
|
|
177
177
|
secondTimePickerRef.current?.focus();
|
|
178
|
-
setForwardedValue(([from]) => {
|
|
179
|
-
const nextTo = new Date(
|
|
180
|
-
|
|
178
|
+
setForwardedValue(([from, to]) => {
|
|
179
|
+
const nextTo = new Date(to.getTime());
|
|
180
|
+
if (isSameDay(from, to)) {
|
|
181
|
+
nextTo.setHours(from.getHours() + 1);
|
|
182
|
+
nextTo.setMinutes(from.getMinutes());
|
|
183
|
+
} else {
|
|
184
|
+
nextTo.setHours(from.getHours());
|
|
185
|
+
nextTo.setMinutes(from.getMinutes());
|
|
186
|
+
}
|
|
181
187
|
return [from, nextTo];
|
|
182
188
|
});
|
|
183
189
|
}, [setForwardedValue]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Drawer/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,mBAAmB,CAAC;AAG3B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Drawer/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAsD,MAAM,OAAO,CAAC;AAI3E,KAAK,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,WAAW,WAAY,SAAQ,WAAW,EAAE,QAAQ;IACxD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAmGD,eAAO,MAAM,cAAc,cAF0B,IAEa,CAAC;AAEnE;;GAEG;AACH,QAAA,MAAM,MAAM,oFAuFX,CAAC;AAIF,eAAe,MAAM,CAAC"}
|
package/dist/Drawer/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import Portal from '@os-design/portal';
|
|
|
4
4
|
import { enableScrollingStyles, resetFocusStyles, sizeStyles } from '@os-design/styles';
|
|
5
5
|
import { clr, useTheme } from '@os-design/theming';
|
|
6
6
|
import { omitEmotionProps, useBodyScroll, useClosable } from '@os-design/utils';
|
|
7
|
-
import React, { forwardRef, useCallback, useContext } from 'react';
|
|
7
|
+
import React, { forwardRef, useCallback, useContext, useRef } from 'react';
|
|
8
8
|
import FocusLock from 'react-focus-lock';
|
|
9
9
|
import { ModalMask } from '../Modal/index.js';
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -93,8 +93,21 @@ const Drawer = /*#__PURE__*/forwardRef(({
|
|
|
93
93
|
} = useTheme();
|
|
94
94
|
const mounted = useClosable(visible, theme.transitionDelay);
|
|
95
95
|
useBodyScroll(!visible);
|
|
96
|
+
const closeRef = useRef(false);
|
|
96
97
|
const pointerDownHandler = useCallback(e => {
|
|
97
98
|
e.stopPropagation();
|
|
99
|
+
closeRef.current = true;
|
|
100
|
+
}, []);
|
|
101
|
+
const pointerUpHandler = useCallback(e => {
|
|
102
|
+
e.stopPropagation();
|
|
103
|
+
if (closeRef.current) {
|
|
104
|
+
closeRef.current = false;
|
|
105
|
+
onClose();
|
|
106
|
+
}
|
|
107
|
+
}, [onClose]);
|
|
108
|
+
const stopPointerHandler = useCallback(e => {
|
|
109
|
+
e.stopPropagation();
|
|
110
|
+
closeRef.current = false;
|
|
98
111
|
onPointerDown(e);
|
|
99
112
|
}, [onPointerDown]);
|
|
100
113
|
const keyDownHandler = useCallback(e => {
|
|
@@ -108,7 +121,8 @@ const Drawer = /*#__PURE__*/forwardRef(({
|
|
|
108
121
|
children: [/*#__PURE__*/_jsx(DrawerMask, {
|
|
109
122
|
visible: visible
|
|
110
123
|
}), /*#__PURE__*/_jsx(Container, {
|
|
111
|
-
onPointerDown:
|
|
124
|
+
onPointerDown: pointerDownHandler,
|
|
125
|
+
onPointerUp: pointerUpHandler,
|
|
112
126
|
children: /*#__PURE__*/_jsx(FocusLock, {
|
|
113
127
|
autoFocus: false,
|
|
114
128
|
children: /*#__PURE__*/_jsx(CloseDrawerContext.Provider, {
|
|
@@ -120,7 +134,8 @@ const Drawer = /*#__PURE__*/forwardRef(({
|
|
|
120
134
|
size: size,
|
|
121
135
|
tabIndex: -1,
|
|
122
136
|
onKeyDown: keyDownHandler,
|
|
123
|
-
onPointerDown:
|
|
137
|
+
onPointerDown: stopPointerHandler,
|
|
138
|
+
onPointerUp: stopPointerHandler,
|
|
124
139
|
role: "dialog",
|
|
125
140
|
"aria-modal": true,
|
|
126
141
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Modal/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAQN,MAAM,OAAO,CAAC;AAGf,OAAsB,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE3E,KAAK,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,WAAW,UAAW,SAAQ,WAAW,EAAE,QAAQ;IACvD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;CACnB;AA2BD,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C,eAAO,MAAM,SAAS;;SAiFW,MAAO,WAEhC;iGAzEP,CAAC;AAsJF,eAAO,MAAM,aAAa,cAF0B,IAEY,CAAC;AAEjE;;GAEG;AACH,QAAA,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Modal/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAQN,MAAM,OAAO,CAAC;AAGf,OAAsB,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE3E,KAAK,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,WAAW,UAAW,SAAQ,WAAW,EAAE,QAAQ;IACvD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;CACnB;AA2BD,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C,eAAO,MAAM,SAAS;;SAiFW,MAAO,WAEhC;iGAzEP,CAAC;AAsJF,eAAO,MAAM,aAAa,cAF0B,IAEY,CAAC;AAEjE;;GAEG;AACH,QAAA,MAAM,KAAK,mFAwJV,CAAC;AAIF,eAAe,KAAK,CAAC"}
|
package/dist/Modal/index.js
CHANGED
|
@@ -188,11 +188,20 @@ const Modal = /*#__PURE__*/forwardRef(({
|
|
|
188
188
|
useBodyScroll(!visible);
|
|
189
189
|
const titleId = useMemo(() => `modal-title-${Math.random().toString(36).slice(2, 11)}`, []);
|
|
190
190
|
const bodyId = useMemo(() => id || `modal-body-${Math.random().toString(36).slice(2, 11)}`, [id]);
|
|
191
|
-
const
|
|
191
|
+
const closeRef = useRef(false);
|
|
192
|
+
const pointerDownHandler = useCallback(e => {
|
|
192
193
|
e.stopPropagation();
|
|
193
|
-
|
|
194
|
+
closeRef.current = true;
|
|
195
|
+
}, []);
|
|
196
|
+
const pointerUpHandler = useCallback(e => {
|
|
197
|
+
e.stopPropagation();
|
|
198
|
+
if (closeRef.current) {
|
|
199
|
+
closeRef.current = false;
|
|
200
|
+
onClose();
|
|
201
|
+
}
|
|
194
202
|
}, [onClose]);
|
|
195
|
-
const
|
|
203
|
+
const stopPointerHandler = useCallback(e => {
|
|
204
|
+
closeRef.current = false;
|
|
196
205
|
e.stopPropagation();
|
|
197
206
|
onPointerDown(e);
|
|
198
207
|
}, [onPointerDown]);
|
|
@@ -208,7 +217,8 @@ const Modal = /*#__PURE__*/forwardRef(({
|
|
|
208
217
|
children: [/*#__PURE__*/_jsx(ModalMask, {
|
|
209
218
|
visible: visible
|
|
210
219
|
}), /*#__PURE__*/_jsx(Container, {
|
|
211
|
-
onPointerDown:
|
|
220
|
+
onPointerDown: pointerDownHandler,
|
|
221
|
+
onPointerUp: pointerUpHandler,
|
|
212
222
|
children: /*#__PURE__*/_jsx(FocusLock, {
|
|
213
223
|
autoFocus: false,
|
|
214
224
|
children: /*#__PURE__*/_jsx(CloseModalContext.Provider, {
|
|
@@ -218,7 +228,8 @@ const Modal = /*#__PURE__*/forwardRef(({
|
|
|
218
228
|
size: size,
|
|
219
229
|
tabIndex: -1,
|
|
220
230
|
onKeyDown: contentKeyDownHandler,
|
|
221
|
-
onPointerDown:
|
|
231
|
+
onPointerDown: stopPointerHandler,
|
|
232
|
+
onPointerUp: stopPointerHandler,
|
|
222
233
|
role: "dialog",
|
|
223
234
|
"aria-modal": true,
|
|
224
235
|
"aria-labelledby": ariaLabelledBy,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@os-design/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.273",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design.git",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@os-design/date-picker-utils": "^1.0.
|
|
32
|
+
"@os-design/date-picker-utils": "^1.0.33",
|
|
33
33
|
"@os-design/icons": "^1.0.68",
|
|
34
34
|
"@os-design/input-number-utils": "^1.0.38",
|
|
35
35
|
"@os-design/input-password-utils": "^1.0.3",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"react": "18",
|
|
59
59
|
"react-dom": "18"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "6fc788389f38666fc7b71fb8ffed6171a70c8e50"
|
|
62
62
|
}
|
package/src/DatePicker/index.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
defaultLocale,
|
|
5
5
|
getAccessibilityDateLabel,
|
|
6
6
|
useFormattedValue,
|
|
7
|
+
isSameDay,
|
|
7
8
|
} from '@os-design/date-picker-utils';
|
|
8
9
|
import { Down, Up } from '@os-design/icons';
|
|
9
10
|
import { useIsMinWidth } from '@os-design/media';
|
|
@@ -379,9 +380,15 @@ const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(
|
|
|
379
380
|
(e) => {
|
|
380
381
|
if (e.target.selectionStart < 5) return;
|
|
381
382
|
secondTimePickerRef.current?.focus();
|
|
382
|
-
setForwardedValue(([from]) => {
|
|
383
|
-
const nextTo = new Date(
|
|
384
|
-
|
|
383
|
+
setForwardedValue(([from, to]) => {
|
|
384
|
+
const nextTo = new Date(to.getTime());
|
|
385
|
+
if (isSameDay(from, to)) {
|
|
386
|
+
nextTo.setHours(from.getHours() + 1);
|
|
387
|
+
nextTo.setMinutes(from.getMinutes());
|
|
388
|
+
} else {
|
|
389
|
+
nextTo.setHours(from.getHours());
|
|
390
|
+
nextTo.setMinutes(from.getMinutes());
|
|
391
|
+
}
|
|
385
392
|
return [from, nextTo];
|
|
386
393
|
});
|
|
387
394
|
},
|
package/src/Drawer/index.tsx
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from '@os-design/styles';
|
|
10
10
|
import { clr, useTheme } from '@os-design/theming';
|
|
11
11
|
import { omitEmotionProps, useBodyScroll, useClosable } from '@os-design/utils';
|
|
12
|
-
import React, { forwardRef, useCallback, useContext } from 'react';
|
|
12
|
+
import React, { forwardRef, useCallback, useContext, useRef } from 'react';
|
|
13
13
|
import FocusLock from 'react-focus-lock';
|
|
14
14
|
import { ModalMask } from '../Modal/index.js';
|
|
15
15
|
|
|
@@ -159,9 +159,25 @@ const Drawer = forwardRef<HTMLDivElement, DrawerProps>(
|
|
|
159
159
|
|
|
160
160
|
useBodyScroll(!visible);
|
|
161
161
|
|
|
162
|
-
const
|
|
162
|
+
const closeRef = useRef(false);
|
|
163
|
+
const pointerDownHandler = useCallback((e) => {
|
|
164
|
+
e.stopPropagation();
|
|
165
|
+
closeRef.current = true;
|
|
166
|
+
}, []);
|
|
167
|
+
const pointerUpHandler = useCallback(
|
|
163
168
|
(e) => {
|
|
164
169
|
e.stopPropagation();
|
|
170
|
+
if (closeRef.current) {
|
|
171
|
+
closeRef.current = false;
|
|
172
|
+
onClose();
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
[onClose]
|
|
176
|
+
);
|
|
177
|
+
const stopPointerHandler = useCallback(
|
|
178
|
+
(e) => {
|
|
179
|
+
e.stopPropagation();
|
|
180
|
+
closeRef.current = false;
|
|
165
181
|
onPointerDown(e);
|
|
166
182
|
},
|
|
167
183
|
[onPointerDown]
|
|
@@ -182,7 +198,10 @@ const Drawer = forwardRef<HTMLDivElement, DrawerProps>(
|
|
|
182
198
|
return (
|
|
183
199
|
<Portal>
|
|
184
200
|
<DrawerMask visible={visible} />
|
|
185
|
-
<Container
|
|
201
|
+
<Container
|
|
202
|
+
onPointerDown={pointerDownHandler}
|
|
203
|
+
onPointerUp={pointerUpHandler}
|
|
204
|
+
>
|
|
186
205
|
{/* @ts-expect-error FocusLock has problems with types */}
|
|
187
206
|
<FocusLock autoFocus={false}>
|
|
188
207
|
<CloseDrawerContext.Provider value={onClose}>
|
|
@@ -193,7 +212,8 @@ const Drawer = forwardRef<HTMLDivElement, DrawerProps>(
|
|
|
193
212
|
size={size}
|
|
194
213
|
tabIndex={-1}
|
|
195
214
|
onKeyDown={keyDownHandler}
|
|
196
|
-
onPointerDown={
|
|
215
|
+
onPointerDown={stopPointerHandler}
|
|
216
|
+
onPointerUp={stopPointerHandler}
|
|
197
217
|
role='dialog'
|
|
198
218
|
aria-modal
|
|
199
219
|
{...rest}
|
package/src/Modal/index.tsx
CHANGED
|
@@ -314,16 +314,27 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
|
|
|
314
314
|
[id]
|
|
315
315
|
);
|
|
316
316
|
|
|
317
|
-
const
|
|
317
|
+
const closeRef = useRef(false);
|
|
318
|
+
const pointerDownHandler = useCallback(
|
|
318
319
|
(e: PointerEvent<HTMLDivElement>) => {
|
|
319
320
|
e.stopPropagation();
|
|
320
|
-
|
|
321
|
+
closeRef.current = true;
|
|
322
|
+
},
|
|
323
|
+
[]
|
|
324
|
+
);
|
|
325
|
+
const pointerUpHandler = useCallback(
|
|
326
|
+
(e: PointerEvent<HTMLDivElement>) => {
|
|
327
|
+
e.stopPropagation();
|
|
328
|
+
if (closeRef.current) {
|
|
329
|
+
closeRef.current = false;
|
|
330
|
+
onClose();
|
|
331
|
+
}
|
|
321
332
|
},
|
|
322
333
|
[onClose]
|
|
323
334
|
);
|
|
324
|
-
|
|
325
|
-
const contentPointerDownHandler = useCallback(
|
|
335
|
+
const stopPointerHandler = useCallback(
|
|
326
336
|
(e: PointerEvent<HTMLDivElement>) => {
|
|
337
|
+
closeRef.current = false;
|
|
327
338
|
e.stopPropagation();
|
|
328
339
|
onPointerDown(e);
|
|
329
340
|
},
|
|
@@ -350,7 +361,10 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
|
|
|
350
361
|
return (
|
|
351
362
|
<Portal>
|
|
352
363
|
<ModalMask visible={visible} />
|
|
353
|
-
<Container
|
|
364
|
+
<Container
|
|
365
|
+
onPointerDown={pointerDownHandler}
|
|
366
|
+
onPointerUp={pointerUpHandler}
|
|
367
|
+
>
|
|
354
368
|
{/* @ts-expect-error FocusLock has problems with types */}
|
|
355
369
|
<FocusLock autoFocus={false}>
|
|
356
370
|
<CloseModalContext.Provider value={onClose}>
|
|
@@ -359,7 +373,8 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
|
|
|
359
373
|
size={size}
|
|
360
374
|
tabIndex={-1}
|
|
361
375
|
onKeyDown={contentKeyDownHandler}
|
|
362
|
-
onPointerDown={
|
|
376
|
+
onPointerDown={stopPointerHandler}
|
|
377
|
+
onPointerUp={stopPointerHandler}
|
|
363
378
|
role='dialog'
|
|
364
379
|
aria-modal
|
|
365
380
|
aria-labelledby={ariaLabelledBy}
|