@os-design/core 1.0.272 → 1.0.274

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.
@@ -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,KAA8C,MAAM,OAAO,CAAC;AAInE,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,oFAmEX,CAAC;AAIF,eAAe,MAAM,CAAC"}
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,oFAwFX,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -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,9 @@ const Drawer = /*#__PURE__*/forwardRef(({
108
121
  children: [/*#__PURE__*/_jsx(DrawerMask, {
109
122
  visible: visible
110
123
  }), /*#__PURE__*/_jsx(Container, {
111
- onPointerDown: onClose,
124
+ onPointerDown: pointerDownHandler,
125
+ onPointerUp: pointerUpHandler,
126
+ onClick: e => e.stopPropagation(),
112
127
  children: /*#__PURE__*/_jsx(FocusLock, {
113
128
  autoFocus: false,
114
129
  children: /*#__PURE__*/_jsx(CloseDrawerContext.Provider, {
@@ -120,7 +135,8 @@ const Drawer = /*#__PURE__*/forwardRef(({
120
135
  size: size,
121
136
  tabIndex: -1,
122
137
  onKeyDown: keyDownHandler,
123
- onPointerDown: pointerDownHandler,
138
+ onPointerDown: stopPointerHandler,
139
+ onPointerUp: stopPointerHandler,
124
140
  role: "dialog",
125
141
  "aria-modal": true,
126
142
  ...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,mFAyIV,CAAC;AAIF,eAAe,KAAK,CAAC"}
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,mFAyJV,CAAC;AAIF,eAAe,KAAK,CAAC"}
@@ -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 containerPointerDownHandler = useCallback(e => {
191
+ const closeRef = useRef(false);
192
+ const pointerDownHandler = useCallback(e => {
192
193
  e.stopPropagation();
193
- onClose();
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 contentPointerDownHandler = useCallback(e => {
203
+ const stopPointerHandler = useCallback(e => {
204
+ closeRef.current = false;
196
205
  e.stopPropagation();
197
206
  onPointerDown(e);
198
207
  }, [onPointerDown]);
@@ -208,7 +217,9 @@ const Modal = /*#__PURE__*/forwardRef(({
208
217
  children: [/*#__PURE__*/_jsx(ModalMask, {
209
218
  visible: visible
210
219
  }), /*#__PURE__*/_jsx(Container, {
211
- onPointerDown: containerPointerDownHandler,
220
+ onPointerDown: pointerDownHandler,
221
+ onPointerUp: pointerUpHandler,
222
+ onClick: e => e.stopPropagation(),
212
223
  children: /*#__PURE__*/_jsx(FocusLock, {
213
224
  autoFocus: false,
214
225
  children: /*#__PURE__*/_jsx(CloseModalContext.Provider, {
@@ -218,7 +229,8 @@ const Modal = /*#__PURE__*/forwardRef(({
218
229
  size: size,
219
230
  tabIndex: -1,
220
231
  onKeyDown: contentKeyDownHandler,
221
- onPointerDown: contentPointerDownHandler,
232
+ onPointerDown: stopPointerHandler,
233
+ onPointerUp: stopPointerHandler,
222
234
  role: "dialog",
223
235
  "aria-modal": true,
224
236
  "aria-labelledby": ariaLabelledBy,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@os-design/core",
3
- "version": "1.0.272",
3
+ "version": "1.0.274",
4
4
  "license": "UNLICENSED",
5
5
  "repository": "git@gitlab.com:os-team/libs/os-design.git",
6
6
  "type": "module",
@@ -58,5 +58,5 @@
58
58
  "react": "18",
59
59
  "react-dom": "18"
60
60
  },
61
- "gitHead": "76fcd7ad4defc5b75f17760fefd87d5cd2ba9799"
61
+ "gitHead": "2670f1f372534a39413706dd9af40e6cf0a49b1e"
62
62
  }
@@ -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 pointerDownHandler = useCallback(
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,11 @@ const Drawer = forwardRef<HTMLDivElement, DrawerProps>(
182
198
  return (
183
199
  <Portal>
184
200
  <DrawerMask visible={visible} />
185
- <Container onPointerDown={onClose}>
201
+ <Container
202
+ onPointerDown={pointerDownHandler}
203
+ onPointerUp={pointerUpHandler}
204
+ onClick={(e) => e.stopPropagation()}
205
+ >
186
206
  {/* @ts-expect-error FocusLock has problems with types */}
187
207
  <FocusLock autoFocus={false}>
188
208
  <CloseDrawerContext.Provider value={onClose}>
@@ -193,7 +213,8 @@ const Drawer = forwardRef<HTMLDivElement, DrawerProps>(
193
213
  size={size}
194
214
  tabIndex={-1}
195
215
  onKeyDown={keyDownHandler}
196
- onPointerDown={pointerDownHandler}
216
+ onPointerDown={stopPointerHandler}
217
+ onPointerUp={stopPointerHandler}
197
218
  role='dialog'
198
219
  aria-modal
199
220
  {...rest}
@@ -314,16 +314,27 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
314
314
  [id]
315
315
  );
316
316
 
317
- const containerPointerDownHandler = useCallback(
317
+ const closeRef = useRef(false);
318
+ const pointerDownHandler = useCallback(
318
319
  (e: PointerEvent<HTMLDivElement>) => {
319
320
  e.stopPropagation();
320
- onClose();
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,11 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
350
361
  return (
351
362
  <Portal>
352
363
  <ModalMask visible={visible} />
353
- <Container onPointerDown={containerPointerDownHandler}>
364
+ <Container
365
+ onPointerDown={pointerDownHandler}
366
+ onPointerUp={pointerUpHandler}
367
+ onClick={(e) => e.stopPropagation()}
368
+ >
354
369
  {/* @ts-expect-error FocusLock has problems with types */}
355
370
  <FocusLock autoFocus={false}>
356
371
  <CloseModalContext.Provider value={onClose}>
@@ -359,7 +374,8 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
359
374
  size={size}
360
375
  tabIndex={-1}
361
376
  onKeyDown={contentKeyDownHandler}
362
- onPointerDown={contentPointerDownHandler}
377
+ onPointerDown={stopPointerHandler}
378
+ onPointerUp={stopPointerHandler}
363
379
  role='dialog'
364
380
  aria-modal
365
381
  aria-labelledby={ariaLabelledBy}