tyrell-react 1.0.0-TC49 → 1.0.0-TC51
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/components/TyModal.d.ts +16 -2
- package/dist/components/TyModal.d.ts.map +1 -1
- package/dist/components/TyModal.js +11 -2
- package/dist/components/TyModal.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/components/TyModal.tsx +30 -3
- package/src/version.ts +1 -1
|
@@ -17,10 +17,24 @@ export interface TyModalProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
17
17
|
open?: boolean;
|
|
18
18
|
/** Show backdrop behind modal (default: true) */
|
|
19
19
|
backdrop?: boolean;
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use `preventOutsideClick` — string-boolean attrs are being
|
|
22
|
+
* phased out. Still works; prevent-* wins when both are set.
|
|
23
|
+
*/
|
|
21
24
|
closeOnOutsideClick?: boolean;
|
|
22
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use `preventEscape` — string-boolean attrs are being phased
|
|
27
|
+
* out. Still works; prevent-* wins when both are set.
|
|
28
|
+
*/
|
|
23
29
|
closeOnEscape?: boolean;
|
|
30
|
+
/** Backdrop clicks no longer close the modal (also hides the built-in ✕) */
|
|
31
|
+
preventOutsideClick?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* ESC no longer closes the modal (keydown is consumed, so the browser's
|
|
34
|
+
* double-ESC anti-trap never fires). A fully guarded modal must render its
|
|
35
|
+
* own close control — WCAG 2.1.2.
|
|
36
|
+
*/
|
|
37
|
+
preventEscape?: boolean;
|
|
24
38
|
/**
|
|
25
39
|
* Accessible name — sets aria-label on the internal <dialog>. The dialog
|
|
26
40
|
* gets role="dialog" for free, but nothing names it unless you set this.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TyModal.d.ts","sourceRoot":"","sources":["../../src/components/TyModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAKtE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC;CAC5E;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACrE,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB
|
|
1
|
+
{"version":3,"file":"TyModal.d.ts","sourceRoot":"","sources":["../../src/components/TyModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAKtE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC;CAC5E;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACrE,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2BAA2B;IAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IAC3D;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,wBAAwB,CAAC,KAAK,IAAI,CAAC;IAEvE,oBAAoB;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;;;OAIG;IACH,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,OAAO,iFAyInB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useImperativeHandle } from 'react';
|
|
|
2
2
|
import { hostProps } from '../utils/host-props';
|
|
3
3
|
import { useBooleanProperty, coerceBool } from '../utils/use-boolean-prop';
|
|
4
4
|
import { needsPropertyBridge } from '../utils/react-version';
|
|
5
|
-
export const TyModal = React.forwardRef(({ open, backdrop, closeOnOutsideClick, closeOnEscape, label, onOpen, onClose, onBeforeClose, children, ...props }, ref) => {
|
|
5
|
+
export const TyModal = React.forwardRef(({ open, backdrop, closeOnOutsideClick, closeOnEscape, preventOutsideClick, preventEscape, label, onOpen, onClose, onBeforeClose, children, ...props }, ref) => {
|
|
6
6
|
const elementRef = useRef(null);
|
|
7
7
|
useImperativeHandle(ref, () => ({
|
|
8
8
|
show: () => {
|
|
@@ -88,7 +88,9 @@ export const TyModal = React.forwardRef(({ open, backdrop, closeOnOutsideClick,
|
|
|
88
88
|
setIf('backdrop', backdrop);
|
|
89
89
|
setIf('closeOnOutsideClick', closeOnOutsideClick);
|
|
90
90
|
setIf('closeOnEscape', closeOnEscape);
|
|
91
|
-
|
|
91
|
+
setIf('preventOutsideClick', preventOutsideClick);
|
|
92
|
+
setIf('preventEscape', preventEscape);
|
|
93
|
+
}, [backdrop, closeOnOutsideClick, closeOnEscape, preventOutsideClick, preventEscape]);
|
|
92
94
|
const webComponentProps = {
|
|
93
95
|
...hostProps(props),
|
|
94
96
|
ref: elementRef,
|
|
@@ -106,6 +108,13 @@ export const TyModal = React.forwardRef(({ open, backdrop, closeOnOutsideClick,
|
|
|
106
108
|
if (closeOnEscape !== undefined && !coerceBool(closeOnEscape)) {
|
|
107
109
|
webComponentProps['close-on-escape'] = 'false';
|
|
108
110
|
}
|
|
111
|
+
// Presence booleans: render the bare attribute only when true
|
|
112
|
+
if (preventOutsideClick !== undefined && coerceBool(preventOutsideClick)) {
|
|
113
|
+
webComponentProps['prevent-outside-click'] = '';
|
|
114
|
+
}
|
|
115
|
+
if (preventEscape !== undefined && coerceBool(preventEscape)) {
|
|
116
|
+
webComponentProps['prevent-escape'] = '';
|
|
117
|
+
}
|
|
109
118
|
if (label)
|
|
110
119
|
webComponentProps.label = label;
|
|
111
120
|
return React.createElement('ty-modal', webComponentProps, children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TyModal.js","sourceRoot":"","sources":["../../src/components/TyModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"TyModal.js","sourceRoot":"","sources":["../../src/components/TyModal.tsx"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
// Generated from package.json by scripts/generate-version.js
|
|
3
3
|
// Run 'npm run generate:version' to regenerate.
|
|
4
4
|
/** Current version of tyrell-react. Synced with package.json on build. */
|
|
5
|
-
export const VERSION = '1.0.0-
|
|
5
|
+
export const VERSION = '1.0.0-TC51';
|
|
6
6
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -25,12 +25,28 @@ export interface TyModalProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
25
25
|
/** Show backdrop behind modal (default: true) */
|
|
26
26
|
backdrop?: boolean;
|
|
27
27
|
|
|
28
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Use `preventOutsideClick` — string-boolean attrs are being
|
|
30
|
+
* phased out. Still works; prevent-* wins when both are set.
|
|
31
|
+
*/
|
|
29
32
|
closeOnOutsideClick?: boolean;
|
|
30
33
|
|
|
31
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated Use `preventEscape` — string-boolean attrs are being phased
|
|
36
|
+
* out. Still works; prevent-* wins when both are set.
|
|
37
|
+
*/
|
|
32
38
|
closeOnEscape?: boolean;
|
|
33
39
|
|
|
40
|
+
/** Backdrop clicks no longer close the modal (also hides the built-in ✕) */
|
|
41
|
+
preventOutsideClick?: boolean;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* ESC no longer closes the modal (keydown is consumed, so the browser's
|
|
45
|
+
* double-ESC anti-trap never fires). A fully guarded modal must render its
|
|
46
|
+
* own close control — WCAG 2.1.2.
|
|
47
|
+
*/
|
|
48
|
+
preventEscape?: boolean;
|
|
49
|
+
|
|
34
50
|
/**
|
|
35
51
|
* Accessible name — sets aria-label on the internal <dialog>. The dialog
|
|
36
52
|
* gets role="dialog" for free, but nothing names it unless you set this.
|
|
@@ -67,6 +83,8 @@ export const TyModal = React.forwardRef<TyModalRef, TyModalProps>(
|
|
|
67
83
|
backdrop,
|
|
68
84
|
closeOnOutsideClick,
|
|
69
85
|
closeOnEscape,
|
|
86
|
+
preventOutsideClick,
|
|
87
|
+
preventEscape,
|
|
70
88
|
label,
|
|
71
89
|
onOpen,
|
|
72
90
|
onClose,
|
|
@@ -159,7 +177,9 @@ export const TyModal = React.forwardRef<TyModalRef, TyModalProps>(
|
|
|
159
177
|
setIf('backdrop', backdrop);
|
|
160
178
|
setIf('closeOnOutsideClick', closeOnOutsideClick);
|
|
161
179
|
setIf('closeOnEscape', closeOnEscape);
|
|
162
|
-
|
|
180
|
+
setIf('preventOutsideClick', preventOutsideClick);
|
|
181
|
+
setIf('preventEscape', preventEscape);
|
|
182
|
+
}, [backdrop, closeOnOutsideClick, closeOnEscape, preventOutsideClick, preventEscape]);
|
|
163
183
|
|
|
164
184
|
const webComponentProps: Record<string, any> = {
|
|
165
185
|
...hostProps(props),
|
|
@@ -179,6 +199,13 @@ export const TyModal = React.forwardRef<TyModalRef, TyModalProps>(
|
|
|
179
199
|
if (closeOnEscape !== undefined && !coerceBool(closeOnEscape)) {
|
|
180
200
|
webComponentProps['close-on-escape'] = 'false';
|
|
181
201
|
}
|
|
202
|
+
// Presence booleans: render the bare attribute only when true
|
|
203
|
+
if (preventOutsideClick !== undefined && coerceBool(preventOutsideClick)) {
|
|
204
|
+
webComponentProps['prevent-outside-click'] = '';
|
|
205
|
+
}
|
|
206
|
+
if (preventEscape !== undefined && coerceBool(preventEscape)) {
|
|
207
|
+
webComponentProps['prevent-escape'] = '';
|
|
208
|
+
}
|
|
182
209
|
if (label) webComponentProps.label = label;
|
|
183
210
|
|
|
184
211
|
return React.createElement(
|
package/src/version.ts
CHANGED