@semcore/modal 3.5.7 → 3.5.9

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/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [3.5.9] - 2023-03-16
6
+
7
+ ### Changed
8
+
9
+ - Version patch update due to children dependencies update (`@semcore/animation` [1.9.3 ~> 1.9.4], `@semcore/flex-box` [4.7.11 ~> 4.7.12], `@semcore/icon` [3.13.3 ~> 3.13.4], `@semcore/utils` [3.47.2 ~> 3.47.3]).
10
+
11
+ ## [3.5.8] - 2023-03-09
12
+
13
+ ### Fixed
14
+
15
+ - Fixed focus locking and returning.
16
+
5
17
  ## [3.5.7] - 2023-03-03
6
18
 
7
19
  ### Changed
package/lib/cjs/Modal.js CHANGED
@@ -11,8 +11,6 @@ exports["default"] = void 0;
11
11
 
12
12
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
13
 
14
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
-
16
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
15
 
18
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -29,8 +27,6 @@ var _core = _interopRequireWildcard(require("@semcore/core"));
29
27
 
30
28
  var _react = _interopRequireWildcard(require("react"));
31
29
 
32
- var _reactFocusLock = _interopRequireDefault(require("react-focus-lock"));
33
-
34
30
  var _animation = require("@semcore/animation");
35
31
 
36
32
  var _portal = _interopRequireWildcard(require("@semcore/portal"));
@@ -59,21 +55,23 @@ var _uniqueID = _interopRequireDefault(require("@semcore/utils/lib/uniqueID"));
59
55
 
60
56
  var _useCssVariable = require("@semcore/utils/lib/useCssVariable");
61
57
 
58
+ var _useFocusLock = require("@semcore/utils/lib/use/useFocusLock");
59
+
62
60
  /*__reshadow-styles__:"./style/modal.shadow.css"*/
63
61
  var style = (
64
62
  /*__reshadow_css_start__*/
65
63
  _core.sstyled.insert(
66
64
  /*__inner_css_start__*/
67
- ".___SWindow_e8w9q_gg_{position:relative;border-radius:var(--intergalactic-modal-rounded, 12px);background:var(--intergalactic-bg-primary-neutral, #ffffff);box-sizing:border-box;margin:auto;padding:var(--intergalactic-spacing-10x, 40px);box-shadow:var(--intergalactic-box-shadow-modal, 0px 3px 8px 0px rgba(25, 27, 35, 0.2))}.___SWindow_e8w9q_gg_:focus{outline:0}.___SOverlay_e8w9q_gg_{position:fixed;top:0;bottom:0;left:0;right:0;margin:0;display:flex;justify-content:center;align-items:center;padding:var(--intergalactic-spacing-10x, 40px);background:var(--intergalactic-overlay-primary, rgba(25, 27, 35, 0.7));overflow:auto;z-index:var(--intergalactic-z-index-modal, 600);-webkit-overflow-scrolling:touch}.___SOverlay_e8w9q_gg_ .___SOverlay_e8w9q_gg_{background:var(--intergalactic-overlay-secondary, rgba(25, 27, 35, 0.4))}.___SClose_e8w9q_gg_{display:inline-flex;position:absolute;right:0;top:0;padding:var(--intergalactic-spacing-3x, 12px);color:var(--intergalactic-icon-secondary-neutral, #a9abb6);cursor:pointer;z-index:1;border:0;background:0 0;outline:0}@media (hover:hover){.___SClose_e8w9q_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active, #8a8e9b)}}.___SClose_e8w9q_gg_.__keyboardFocused_e8w9q_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.3))}.___STitle_e8w9q_gg_{color:var(--intergalactic-text-primary, #191b23);font-size:var(--intergalactic-fs-500, 24px);line-height:var(--intergalactic-lh-500, 117%);font-weight:var(--intergalactic-semi-bold, 600);margin-bottom:var(--intergalactic-spacing-2x, 8px)}@media (max-width:767px){.___SWindow_e8w9q_gg_{min-width:60%}.___SOverlay_e8w9q_gg_{padding:var(--intergalactic-spacing-3x, 12px)}}"
65
+ ".___SWindow_i8myc_gg_{position:relative;border-radius:var(--intergalactic-modal-rounded, 12px);background:var(--intergalactic-bg-primary-neutral, #ffffff);box-sizing:border-box;margin:auto;padding:var(--intergalactic-spacing-10x, 40px);box-shadow:var(--intergalactic-box-shadow-modal, 0px 3px 8px 0px rgba(25, 27, 35, 0.2))}.___SWindow_i8myc_gg_:focus{outline:0}.___SOverlay_i8myc_gg_{position:fixed;top:0;bottom:0;left:0;right:0;margin:0;display:flex;justify-content:center;align-items:center;padding:var(--intergalactic-spacing-10x, 40px);background:var(--intergalactic-overlay-primary, rgba(25, 27, 35, 0.7));overflow:auto;z-index:var(--intergalactic-z-index-modal, 600);-webkit-overflow-scrolling:touch}.___SOverlay_i8myc_gg_ .___SOverlay_i8myc_gg_{background:var(--intergalactic-overlay-secondary, rgba(25, 27, 35, 0.4))}.___SClose_i8myc_gg_{display:inline-flex;position:absolute;right:0;top:0;padding:var(--intergalactic-spacing-3x, 12px);color:var(--intergalactic-icon-secondary-neutral, #a9abb6);cursor:pointer;z-index:1;border:0;background:0 0;outline:0}@media (hover:hover){.___SClose_i8myc_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active, #8a8e9b)}}.___SClose_i8myc_gg_.__keyboardFocused_i8myc_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.3))}.___STitle_i8myc_gg_{color:var(--intergalactic-text-primary, #191b23);font-size:var(--intergalactic-fs-500, 24px);line-height:var(--intergalactic-lh-500, 117%);font-weight:var(--intergalactic-semi-bold, 600);margin-bottom:var(--intergalactic-spacing-2x, 8px)}@media (max-width:767px){.___SWindow_i8myc_gg_{min-width:60%}.___SOverlay_i8myc_gg_{padding:var(--intergalactic-spacing-3x, 12px)}}"
68
66
  /*__inner_css_end__*/
69
- , "e8w9q_gg_")
67
+ , "i8myc_gg_")
70
68
  /*__reshadow_css_end__*/
71
69
  , {
72
- "__SWindow": "___SWindow_e8w9q_gg_",
73
- "__SOverlay": "___SOverlay_e8w9q_gg_",
74
- "__SClose": "___SClose_e8w9q_gg_",
75
- "_keyboardFocused": "__keyboardFocused_e8w9q_gg_",
76
- "__STitle": "___STitle_e8w9q_gg_"
70
+ "__SWindow": "___SWindow_i8myc_gg_",
71
+ "__SOverlay": "___SOverlay_i8myc_gg_",
72
+ "__SClose": "___SClose_i8myc_gg_",
73
+ "_keyboardFocused": "__keyboardFocused_i8myc_gg_",
74
+ "__STitle": "___STitle_i8myc_gg_"
77
75
  });
78
76
 
79
77
  var ModalRoot = /*#__PURE__*/function (_Component) {
@@ -201,18 +199,6 @@ var ModalRoot = /*#__PURE__*/function (_Component) {
201
199
  locale: 'en'
202
200
  });
203
201
 
204
- var FocusLockWrapper = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
205
- return /*#__PURE__*/_react["default"].createElement(_reactFocusLock["default"], (0, _extends2["default"])({
206
- ref: ref
207
- }, props, {
208
- lockProps: {
209
- style: {
210
- display: 'contents'
211
- }
212
- }
213
- }));
214
- });
215
-
216
202
  function Window(props) {
217
203
  var _ref2 = arguments[0],
218
204
  _ref6;
@@ -224,21 +210,18 @@ function Window(props) {
224
210
  closable = props.closable,
225
211
  duration = props.duration;
226
212
  var windowRef = (0, _react.useRef)(null);
213
+ (0, _useFocusLock.useFocusLock)(windowRef, true, 'auto', !visible);
227
214
  return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SWindow, _ref6.cn("SWindow", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
228
215
  "initialAnimation": true,
229
216
  "slideOrigin": "top",
230
217
  "visible": visible,
231
218
  "role": "dialog",
232
219
  "aria-modal": true,
233
- "duration": duration
234
- }, _ref2))), /*#__PURE__*/_react["default"].createElement(FocusLockWrapper, _ref6.cn("FocusLockWrapper", {
235
- "returnFocus": true,
236
- "autoFocus": true,
237
- "ref": windowRef,
238
- "tabIndex": -1
239
- }), /*#__PURE__*/_react["default"].createElement(_portal.PortalProvider, _ref6.cn("PortalProvider", {
220
+ "duration": duration,
221
+ "ref": windowRef
222
+ }, _ref2))), /*#__PURE__*/_react["default"].createElement(_portal.PortalProvider, _ref6.cn("PortalProvider", {
240
223
  "value": windowRef
241
- }), closable && /*#__PURE__*/_react["default"].createElement(Modal.Close, null), /*#__PURE__*/_react["default"].createElement(Children, _ref6.cn("Children", {})))));
224
+ }), closable && /*#__PURE__*/_react["default"].createElement(Modal.Close, null), /*#__PURE__*/_react["default"].createElement(Children, _ref6.cn("Children", {}))));
242
225
  }
243
226
 
244
227
  function Overlay(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["ModalRoot","hasTitle","e","key","stopPropagation","fire","asProps","duration","visible","animationsDisabled","onOutsideClick","handleOutsideClick","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","onClick","handleIconCloseClick","setTitle","setState","id","Children","disablePortal","advanceMode","isAdvanceMode","Modal","Overlay","displayName","Window","Component","style","i18nEnhance","localizedMessages","uniqueIDEnhancement","cssVariableEnhance","variable","fallback","map","Number","parseInt","prop","i18n","locale","FocusLockWrapper","React","forwardRef","props","ref","display","SWindow","Slide","styles","windowRef","useRef","sstyled","SOverlay","FadeInOut","overlayRef","usePreventScroll","Close","SClose","Box","hasChildren","children","enhance","keyboardFocusEnhance","Title","STitle","Text","useEffect","createComponent"],"sources":["../../src/Modal.jsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport { FadeInOut, Slide } from '@semcore/animation';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Portal, { PortalProvider } from '@semcore/portal';\nimport { Box } from '@semcore/flex-box';\nimport OutsideClick from '@semcore/outside-click';\nimport CloseIcon from '@semcore/icon/Close/l';\nimport fire from '@semcore/utils/lib/fire';\nimport usePreventScroll from '@semcore/utils/lib/use/usePreventScroll';\nimport { isAdvanceMode } from '@semcore/utils/lib/findComponent';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport style from './style/modal.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { cssVariableEnhance } from '@semcore/utils/lib/useCssVariable';\n\nclass ModalRoot extends Component {\n static displayName = 'Modal';\n static style = style;\n static enhance = [\n i18nEnhance(localizedMessages),\n uniqueIDEnhancement(),\n cssVariableEnhance({\n variable: '--intergalactic-duration-modal',\n fallback: '200',\n map: Number.parseInt,\n prop: 'duration',\n }),\n ];\n static defaultProps = {\n closable: true,\n i18n: localizedMessages,\n locale: 'en',\n };\n state = { hasTitle: false };\n\n handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n fire(this, 'onClose', 'onEscape', e);\n }\n };\n\n handleIconCloseClick = (e) => {\n fire(this, 'onClose', 'onCloseClick', e);\n };\n\n handleOutsideClick = (e) => {\n fire(this, 'onClose', 'onOutsideClick', e);\n };\n\n getOverlayProps() {\n const { duration, visible, animationsDisabled } = this.asProps;\n return {\n duration,\n visible,\n onOutsideClick: this.handleOutsideClick,\n animationsDisabled,\n };\n }\n\n getWindowProps() {\n const { visible, closable, getI18nText, uid, duration, animationsDisabled } = this.asProps;\n const { hasTitle } = this.state;\n return {\n visible,\n closable,\n onKeyDown: this.handleKeyDown,\n 'aria-label': hasTitle ? undefined : getI18nText('title'),\n 'aria-labelledby': hasTitle ? `igc-${uid}-title` : undefined,\n duration,\n animationsDisabled,\n };\n }\n\n getCloseProps() {\n const { getI18nText } = this.asProps;\n\n return {\n onClick: this.handleIconCloseClick,\n getI18nText,\n };\n }\n\n getTitleProps() {\n const { uid } = this.asProps;\n const setTitle = () => this.setState({ hasTitle: true });\n\n return {\n id: `igc-${uid}-title`,\n setTitle,\n };\n }\n\n render() {\n const { Children, disablePortal } = this.asProps;\n\n const advanceMode = isAdvanceMode(Children, [\n Modal.Overlay.displayName,\n Modal.Window.displayName,\n ]);\n\n return (\n <Portal disablePortal={disablePortal}>\n {advanceMode ? (\n <Children />\n ) : (\n <Modal.Overlay>\n <Root render={Modal.Window} />\n </Modal.Overlay>\n )}\n </Portal>\n );\n }\n}\n\nconst FocusLockWrapper = React.forwardRef(function (props, ref) {\n return <FocusLock ref={ref} {...props} lockProps={{ style: { display: 'contents' } }} />;\n});\n\nfunction Window(props) {\n const SWindow = Root;\n const { Children, styles, visible, closable, duration } = props;\n const windowRef = useRef(null);\n\n return sstyled(styles)(\n <SWindow\n render={Slide}\n initialAnimation={true}\n slideOrigin=\"top\"\n visible={visible}\n role=\"dialog\"\n aria-modal={true}\n duration={duration}\n >\n <FocusLockWrapper returnFocus={true} autoFocus={true} ref={windowRef} tabIndex={-1}>\n <PortalProvider value={windowRef}>\n {closable && <Modal.Close />}\n <Children />\n </PortalProvider>\n </FocusLockWrapper>\n </SWindow>,\n );\n}\n\nfunction Overlay(props) {\n const SOverlay = Root;\n const { Children, styles, onOutsideClick, visible } = props;\n const overlayRef = useRef(null);\n usePreventScroll(visible);\n\n return sstyled(styles)(\n <SOverlay render={FadeInOut} ref={overlayRef}>\n <OutsideClick root={overlayRef} onOutsideClick={onOutsideClick}>\n <Children />\n </OutsideClick>\n </SOverlay>,\n );\n}\n\nfunction Close(props) {\n const SClose = Root;\n const { Children, children: hasChildren, getI18nText } = props;\n return sstyled(props.styles)(\n <SClose render={Box} tag=\"button\" tabIndex={0} aria-label={getI18nText('close')}>\n {hasChildren ? <Children /> : <CloseIcon title={getI18nText('close')} />}\n </SClose>,\n );\n}\n\nClose.enhance = [keyboardFocusEnhance()];\n\nfunction Title(props) {\n const { setTitle, styles } = props;\n const STitle = Root;\n\n useEffect(() => setTitle());\n\n return sstyled(styles)(<STitle render={Text} tag=\"h2\" />);\n}\n\nconst Modal = createComponent(ModalRoot, {\n Window,\n Overlay,\n Close,\n Title,\n});\n\nexport default Modal;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAHA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;IAEMA,S;;;;;;;;;;;;;;;8FAkBI;MAAEC,QAAQ,EAAE;IAAZ,C;sGAEQ,UAACC,CAAD,EAAO;MACrB,IAAIA,CAAC,CAACC,GAAF,KAAU,QAAd,EAAwB;QACtBD,CAAC,CAACE,eAAF;QACA,IAAAC,gBAAA,kDAAW,SAAX,EAAsB,UAAtB,EAAkCH,CAAlC;MACD;IACF,C;6GAEsB,UAACA,CAAD,EAAO;MAC5B,IAAAG,gBAAA,kDAAW,SAAX,EAAsB,cAAtB,EAAsCH,CAAtC;IACD,C;2GAEoB,UAACA,CAAD,EAAO;MAC1B,IAAAG,gBAAA,kDAAW,SAAX,EAAsB,gBAAtB,EAAwCH,CAAxC;IACD,C;;;;;;WAED,2BAAkB;MAChB,oBAAkD,KAAKI,OAAvD;MAAA,IAAQC,QAAR,iBAAQA,QAAR;MAAA,IAAkBC,OAAlB,iBAAkBA,OAAlB;MAAA,IAA2BC,kBAA3B,iBAA2BA,kBAA3B;MACA,OAAO;QACLF,QAAQ,EAARA,QADK;QAELC,OAAO,EAAPA,OAFK;QAGLE,cAAc,EAAE,KAAKC,kBAHhB;QAILF,kBAAkB,EAAlBA;MAJK,CAAP;IAMD;;;WAED,0BAAiB;MACf,qBAA8E,KAAKH,OAAnF;MAAA,IAAQE,OAAR,kBAAQA,OAAR;MAAA,IAAiBI,QAAjB,kBAAiBA,QAAjB;MAAA,IAA2BC,WAA3B,kBAA2BA,WAA3B;MAAA,IAAwCC,GAAxC,kBAAwCA,GAAxC;MAAA,IAA6CP,QAA7C,kBAA6CA,QAA7C;MAAA,IAAuDE,kBAAvD,kBAAuDA,kBAAvD;MACA,IAAQR,QAAR,GAAqB,KAAKc,KAA1B,CAAQd,QAAR;MACA,OAAO;QACLO,OAAO,EAAPA,OADK;QAELI,QAAQ,EAARA,QAFK;QAGLI,SAAS,EAAE,KAAKC,aAHX;QAIL,cAAchB,QAAQ,GAAGiB,SAAH,GAAeL,WAAW,CAAC,OAAD,CAJ3C;QAKL,mBAAmBZ,QAAQ,iBAAUa,GAAV,cAAwBI,SAL9C;QAMLX,QAAQ,EAARA,QANK;QAOLE,kBAAkB,EAAlBA;MAPK,CAAP;IASD;;;WAED,yBAAgB;MACd,IAAQI,WAAR,GAAwB,KAAKP,OAA7B,CAAQO,WAAR;MAEA,OAAO;QACLM,OAAO,EAAE,KAAKC,oBADT;QAELP,WAAW,EAAXA;MAFK,CAAP;IAID;;;WAED,yBAAgB;MAAA;;MACd,IAAQC,GAAR,GAAgB,KAAKR,OAArB,CAAQQ,GAAR;;MACA,IAAMO,QAAQ,GAAG,SAAXA,QAAW;QAAA,OAAM,MAAI,CAACC,QAAL,CAAc;UAAErB,QAAQ,EAAE;QAAZ,CAAd,CAAN;MAAA,CAAjB;;MAEA,OAAO;QACLsB,EAAE,gBAAST,GAAT,WADG;QAELO,QAAQ,EAARA;MAFK,CAAP;IAID;;;WAED,kBAAS;MAAA;MACP,qBAAoC,KAAKf,OAAzC;MAAA,IAAQkB,QAAR,kBAAQA,QAAR;MAAA,IAAkBC,aAAlB,kBAAkBA,aAAlB;MAEA,IAAMC,WAAW,GAAG,IAAAC,4BAAA,EAAcH,QAAd,EAAwB,CAC1CI,KAAK,CAACC,OAAN,CAAcC,WAD4B,EAE1CF,KAAK,CAACG,MAAN,CAAaD,WAF6B,CAAxB,CAApB;MAKA,oBACE,gCAAC,kBAAD;QAAQ,aAAa,EAAEL;MAAvB,GACGC,WAAW,gBACV,gCAAC,QAAD,OADU,gBAGV,gCAAC,KAAD,CAAO,OAAP,qBACE,gCAAcE,KAAK,CAACG,MAApB,mCADF,CAJJ,CADF;IAWD;;;EAjGqBC,e;;iCAAlBhC,S,iBACiB,O;iCADjBA,S,WAEWiC,K;iCAFXjC,S,aAGa,CACf,IAAAkC,uBAAA,EAAYC,8CAAZ,CADe,EAEf,IAAAC,oBAAA,GAFe,EAGf,IAAAC,kCAAA,EAAmB;EACjBC,QAAQ,EAAE,gCADO;EAEjBC,QAAQ,EAAE,KAFO;EAGjBC,GAAG,EAAEC,MAAM,CAACC,QAHK;EAIjBC,IAAI,EAAE;AAJW,CAAnB,CAHe,C;iCAHb3C,S,kBAakB;EACpBY,QAAQ,EAAE,IADU;EAEpBgC,IAAI,EAAET,8CAFc;EAGpBU,MAAM,EAAE;AAHY,C;;AAuFxB,IAAMC,gBAAgB,gBAAGC,iBAAA,CAAMC,UAAN,CAAiB,UAAUC,KAAV,EAAiBC,GAAjB,EAAsB;EAC9D,oBAAO,gCAAC,0BAAD;IAAW,GAAG,EAAEA;EAAhB,GAAyBD,KAAzB;IAAgC,SAAS,EAAE;MAAEhB,KAAK,EAAE;QAAEkB,OAAO,EAAE;MAAX;IAAT;EAA3C,GAAP;AACD,CAFwB,CAAzB;;AAIA,SAASpB,MAAT,CAAgBkB,KAAhB,EAAuB;EAAA;EAAA;;EACrB,IAAMG,OAAO,GAMDC,gBANZ;EACA,IAAQ7B,QAAR,GAA0DyB,KAA1D,CAAQzB,QAAR;EAAA,IAAkB8B,MAAlB,GAA0DL,KAA1D,CAAkBK,MAAlB;EAAA,IAA0B9C,OAA1B,GAA0DyC,KAA1D,CAA0BzC,OAA1B;EAAA,IAAmCI,QAAnC,GAA0DqC,KAA1D,CAAmCrC,QAAnC;EAAA,IAA6CL,QAA7C,GAA0D0C,KAA1D,CAA6C1C,QAA7C;EACA,IAAMgD,SAAS,GAAG,IAAAC,aAAA,EAAO,IAAP,CAAlB;EAEA,eAAO,IAAAC,aAAA,EAAQH,MAAR,CAAP,eACE,gCAAC,OAAD;IAAA,oBAEoB,IAFpB;IAAA,eAGc,KAHd;IAAA,WAIW9C,OAJX;IAAA,QAKO,QALP;IAAA,cAMc,IANd;IAAA,YAOYD;EAPZ,0BASE,gCAAC,gBAAD;IAAA,eAA+B,IAA/B;IAAA,aAAgD,IAAhD;IAAA,OAA2DgD,SAA3D;IAAA,YAAgF,CAAC;EAAjF,iBACE,gCAAC,sBAAD;IAAA,SAAuBA;EAAvB,IACG3C,QAAQ,iBAAI,gCAAC,KAAD,CAAO,KAAP,OADf,eAEE,gCAAC,QAAD,2BAFF,CADF,CATF,CADF;AAkBD;;AAED,SAASiB,OAAT,CAAiBoB,KAAjB,EAAwB;EAAA;EAAA;;EACtB,IAAMS,QAAQ,GAMMC,oBANpB;EACA,IAAQnC,QAAR,GAAsDyB,KAAtD,CAAQzB,QAAR;EAAA,IAAkB8B,MAAlB,GAAsDL,KAAtD,CAAkBK,MAAlB;EAAA,IAA0B5C,cAA1B,GAAsDuC,KAAtD,CAA0BvC,cAA1B;EAAA,IAA0CF,OAA1C,GAAsDyC,KAAtD,CAA0CzC,OAA1C;EACA,IAAMoD,UAAU,GAAG,IAAAJ,aAAA,EAAO,IAAP,CAAnB;EACA,IAAAK,4BAAA,EAAiBrD,OAAjB;EAEA,eAAO,IAAAiD,aAAA,EAAQH,MAAR,CAAP,eACE,gCAAC,QAAD;IAAA,OAAkCM;EAAlC,0BACE,gCAAC,wBAAD;IAAA,QAAoBA,UAApB;IAAA,kBAAgDlD;EAAhD,iBACE,gCAAC,QAAD,2BADF,CADF,CADF;AAOD;;AAED,SAASoD,KAAT,CAAeb,KAAf,EAAsB;EAAA;EAAA;;EACpB,IAAMc,MAAM,GAGMC,YAHlB;EACA,IAAQxC,QAAR,GAAyDyB,KAAzD,CAAQzB,QAAR;EAAA,IAA4ByC,WAA5B,GAAyDhB,KAAzD,CAAkBiB,QAAlB;EAAA,IAAyCrD,WAAzC,GAAyDoC,KAAzD,CAAyCpC,WAAzC;EACA,eAAO,IAAA4C,aAAA,EAAQR,KAAK,CAACK,MAAd,CAAP,eACE,gCAAC,MAAD;IAAA,OAAyB,QAAzB;IAAA,YAA4C,CAA5C;IAAA,cAA2DzC,WAAW,CAAC,OAAD;EAAtE,aACGoD,WAAW,gBAAG,gCAAC,QAAD,2BAAH,gBAAkB,gCAAC,aAAD;IAAA,SAAkBpD,WAAW,CAAC,OAAD;EAA7B,GADhC,CADF;AAKD;;AAEDiD,KAAK,CAACK,OAAN,GAAgB,CAAC,IAAAC,gCAAA,GAAD,CAAhB;;AAEA,SAASC,KAAT,CAAepB,KAAf,EAAsB;EAAA;EAAA;;EACpB,IAAQ5B,QAAR,GAA6B4B,KAA7B,CAAQ5B,QAAR;EAAA,IAAkBiC,MAAlB,GAA6BL,KAA7B,CAAkBK,MAAlB;EACA,IAAMgB,MAAM,GAI2BC,gBAJvC;EAEA,IAAAC,gBAAA,EAAU;IAAA,OAAMnD,QAAQ,EAAd;EAAA,CAAV;EAEA,eAAO,IAAAoC,aAAA,EAAQH,MAAR,CAAP,eAAuB,gCAAC,MAAD;IAAA,OAA0B;EAA1B,YAAvB;AACD;;AAED,IAAM1B,KAAK,GAAG,IAAA6C,gBAAA,EAAgBzE,SAAhB,EAA2B;EACvC+B,MAAM,EAANA,MADuC;EAEvCF,OAAO,EAAPA,OAFuC;EAGvCiC,KAAK,EAALA,KAHuC;EAIvCO,KAAK,EAALA;AAJuC,CAA3B,CAAd;eAOezC,K"}
1
+ {"version":3,"file":"Modal.js","names":["ModalRoot","hasTitle","e","key","stopPropagation","fire","asProps","duration","visible","animationsDisabled","onOutsideClick","handleOutsideClick","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","onClick","handleIconCloseClick","setTitle","setState","id","Children","disablePortal","advanceMode","isAdvanceMode","Modal","Overlay","displayName","Window","Component","style","i18nEnhance","localizedMessages","uniqueIDEnhancement","cssVariableEnhance","variable","fallback","map","Number","parseInt","prop","i18n","locale","props","SWindow","Slide","styles","windowRef","useRef","useFocusLock","sstyled","SOverlay","FadeInOut","overlayRef","usePreventScroll","Close","SClose","Box","hasChildren","children","enhance","keyboardFocusEnhance","Title","STitle","Text","useEffect","createComponent"],"sources":["../../src/Modal.jsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\nimport { FadeInOut, Slide } from '@semcore/animation';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Portal, { PortalProvider } from '@semcore/portal';\nimport { Box } from '@semcore/flex-box';\nimport OutsideClick from '@semcore/outside-click';\nimport CloseIcon from '@semcore/icon/Close/l';\nimport fire from '@semcore/utils/lib/fire';\nimport usePreventScroll from '@semcore/utils/lib/use/usePreventScroll';\nimport { isAdvanceMode } from '@semcore/utils/lib/findComponent';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport style from './style/modal.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { cssVariableEnhance } from '@semcore/utils/lib/useCssVariable';\nimport { useFocusLock } from '@semcore/utils/lib/use/useFocusLock';\n\nclass ModalRoot extends Component {\n static displayName = 'Modal';\n static style = style;\n static enhance = [\n i18nEnhance(localizedMessages),\n uniqueIDEnhancement(),\n cssVariableEnhance({\n variable: '--intergalactic-duration-modal',\n fallback: '200',\n map: Number.parseInt,\n prop: 'duration',\n }),\n ];\n static defaultProps = {\n closable: true,\n i18n: localizedMessages,\n locale: 'en',\n };\n state = { hasTitle: false };\n\n handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n fire(this, 'onClose', 'onEscape', e);\n }\n };\n\n handleIconCloseClick = (e) => {\n fire(this, 'onClose', 'onCloseClick', e);\n };\n\n handleOutsideClick = (e) => {\n fire(this, 'onClose', 'onOutsideClick', e);\n };\n\n getOverlayProps() {\n const { duration, visible, animationsDisabled } = this.asProps;\n return {\n duration,\n visible,\n onOutsideClick: this.handleOutsideClick,\n animationsDisabled,\n };\n }\n\n getWindowProps() {\n const { visible, closable, getI18nText, uid, duration, animationsDisabled } = this.asProps;\n const { hasTitle } = this.state;\n return {\n visible,\n closable,\n onKeyDown: this.handleKeyDown,\n 'aria-label': hasTitle ? undefined : getI18nText('title'),\n 'aria-labelledby': hasTitle ? `igc-${uid}-title` : undefined,\n duration,\n animationsDisabled,\n };\n }\n\n getCloseProps() {\n const { getI18nText } = this.asProps;\n\n return {\n onClick: this.handleIconCloseClick,\n getI18nText,\n };\n }\n\n getTitleProps() {\n const { uid } = this.asProps;\n const setTitle = () => this.setState({ hasTitle: true });\n\n return {\n id: `igc-${uid}-title`,\n setTitle,\n };\n }\n\n render() {\n const { Children, disablePortal } = this.asProps;\n\n const advanceMode = isAdvanceMode(Children, [\n Modal.Overlay.displayName,\n Modal.Window.displayName,\n ]);\n\n return (\n <Portal disablePortal={disablePortal}>\n {advanceMode ? (\n <Children />\n ) : (\n <Modal.Overlay>\n <Root render={Modal.Window} />\n </Modal.Overlay>\n )}\n </Portal>\n );\n }\n}\n\nfunction Window(props) {\n const SWindow = Root;\n const { Children, styles, visible, closable, duration } = props;\n const windowRef = useRef(null);\n\n useFocusLock(windowRef, true, 'auto', !visible);\n\n return sstyled(styles)(\n <SWindow\n render={Slide}\n initialAnimation={true}\n slideOrigin=\"top\"\n visible={visible}\n role=\"dialog\"\n aria-modal={true}\n duration={duration}\n ref={windowRef}\n >\n <PortalProvider value={windowRef}>\n {closable && <Modal.Close />}\n <Children />\n </PortalProvider>\n </SWindow>,\n );\n}\n\nfunction Overlay(props) {\n const SOverlay = Root;\n const { Children, styles, onOutsideClick, visible } = props;\n const overlayRef = useRef(null);\n usePreventScroll(visible);\n\n return sstyled(styles)(\n <SOverlay render={FadeInOut} ref={overlayRef}>\n <OutsideClick root={overlayRef} onOutsideClick={onOutsideClick}>\n <Children />\n </OutsideClick>\n </SOverlay>,\n );\n}\n\nfunction Close(props) {\n const SClose = Root;\n const { Children, children: hasChildren, getI18nText } = props;\n return sstyled(props.styles)(\n <SClose render={Box} tag=\"button\" tabIndex={0} aria-label={getI18nText('close')}>\n {hasChildren ? <Children /> : <CloseIcon title={getI18nText('close')} />}\n </SClose>,\n );\n}\n\nClose.enhance = [keyboardFocusEnhance()];\n\nfunction Title(props) {\n const { setTitle, styles } = props;\n const STitle = Root;\n\n useEffect(() => setTitle());\n\n return sstyled(styles)(<STitle render={Text} tag=\"h2\" />);\n}\n\nconst Modal = createComponent(ModalRoot, {\n Window,\n Overlay,\n Close,\n Title,\n});\n\nexport default Modal;\n"],"mappings":"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"}
package/lib/es6/Modal.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import _extends from "@babel/runtime/helpers/extends";
3
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
3
  import _createClass from "@babel/runtime/helpers/createClass";
5
4
  import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
@@ -13,7 +12,6 @@ import { assignProps as _assignProps3 } from "@semcore/core";
13
12
  import { assignProps as _assignProps2 } from "@semcore/core";
14
13
  import { assignProps as _assignProps } from "@semcore/core";
15
14
  import React, { useRef, useEffect } from 'react';
16
- import FocusLock from 'react-focus-lock';
17
15
  import { FadeInOut, Slide } from '@semcore/animation';
18
16
  import createComponent, { Component, sstyled, Root } from '@semcore/core';
19
17
  import Portal, { PortalProvider } from '@semcore/portal';
@@ -30,22 +28,23 @@ var style = (
30
28
  /*__reshadow_css_start__*/
31
29
  _sstyled.insert(
32
30
  /*__inner_css_start__*/
33
- ".___SWindow_e8w9q_gg_{position:relative;border-radius:var(--intergalactic-modal-rounded, 12px);background:var(--intergalactic-bg-primary-neutral, #ffffff);box-sizing:border-box;margin:auto;padding:var(--intergalactic-spacing-10x, 40px);box-shadow:var(--intergalactic-box-shadow-modal, 0px 3px 8px 0px rgba(25, 27, 35, 0.2))}.___SWindow_e8w9q_gg_:focus{outline:0}.___SOverlay_e8w9q_gg_{position:fixed;top:0;bottom:0;left:0;right:0;margin:0;display:flex;justify-content:center;align-items:center;padding:var(--intergalactic-spacing-10x, 40px);background:var(--intergalactic-overlay-primary, rgba(25, 27, 35, 0.7));overflow:auto;z-index:var(--intergalactic-z-index-modal, 600);-webkit-overflow-scrolling:touch}.___SOverlay_e8w9q_gg_ .___SOverlay_e8w9q_gg_{background:var(--intergalactic-overlay-secondary, rgba(25, 27, 35, 0.4))}.___SClose_e8w9q_gg_{display:inline-flex;position:absolute;right:0;top:0;padding:var(--intergalactic-spacing-3x, 12px);color:var(--intergalactic-icon-secondary-neutral, #a9abb6);cursor:pointer;z-index:1;border:0;background:0 0;outline:0}@media (hover:hover){.___SClose_e8w9q_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active, #8a8e9b)}}.___SClose_e8w9q_gg_.__keyboardFocused_e8w9q_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.3))}.___STitle_e8w9q_gg_{color:var(--intergalactic-text-primary, #191b23);font-size:var(--intergalactic-fs-500, 24px);line-height:var(--intergalactic-lh-500, 117%);font-weight:var(--intergalactic-semi-bold, 600);margin-bottom:var(--intergalactic-spacing-2x, 8px)}@media (max-width:767px){.___SWindow_e8w9q_gg_{min-width:60%}.___SOverlay_e8w9q_gg_{padding:var(--intergalactic-spacing-3x, 12px)}}"
31
+ ".___SWindow_i8myc_gg_{position:relative;border-radius:var(--intergalactic-modal-rounded, 12px);background:var(--intergalactic-bg-primary-neutral, #ffffff);box-sizing:border-box;margin:auto;padding:var(--intergalactic-spacing-10x, 40px);box-shadow:var(--intergalactic-box-shadow-modal, 0px 3px 8px 0px rgba(25, 27, 35, 0.2))}.___SWindow_i8myc_gg_:focus{outline:0}.___SOverlay_i8myc_gg_{position:fixed;top:0;bottom:0;left:0;right:0;margin:0;display:flex;justify-content:center;align-items:center;padding:var(--intergalactic-spacing-10x, 40px);background:var(--intergalactic-overlay-primary, rgba(25, 27, 35, 0.7));overflow:auto;z-index:var(--intergalactic-z-index-modal, 600);-webkit-overflow-scrolling:touch}.___SOverlay_i8myc_gg_ .___SOverlay_i8myc_gg_{background:var(--intergalactic-overlay-secondary, rgba(25, 27, 35, 0.4))}.___SClose_i8myc_gg_{display:inline-flex;position:absolute;right:0;top:0;padding:var(--intergalactic-spacing-3x, 12px);color:var(--intergalactic-icon-secondary-neutral, #a9abb6);cursor:pointer;z-index:1;border:0;background:0 0;outline:0}@media (hover:hover){.___SClose_i8myc_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active, #8a8e9b)}}.___SClose_i8myc_gg_.__keyboardFocused_i8myc_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.3))}.___STitle_i8myc_gg_{color:var(--intergalactic-text-primary, #191b23);font-size:var(--intergalactic-fs-500, 24px);line-height:var(--intergalactic-lh-500, 117%);font-weight:var(--intergalactic-semi-bold, 600);margin-bottom:var(--intergalactic-spacing-2x, 8px)}@media (max-width:767px){.___SWindow_i8myc_gg_{min-width:60%}.___SOverlay_i8myc_gg_{padding:var(--intergalactic-spacing-3x, 12px)}}"
34
32
  /*__inner_css_end__*/
35
- , "e8w9q_gg_")
33
+ , "i8myc_gg_")
36
34
  /*__reshadow_css_end__*/
37
35
  , {
38
- "__SWindow": "___SWindow_e8w9q_gg_",
39
- "__SOverlay": "___SOverlay_e8w9q_gg_",
40
- "__SClose": "___SClose_e8w9q_gg_",
41
- "_keyboardFocused": "__keyboardFocused_e8w9q_gg_",
42
- "__STitle": "___STitle_e8w9q_gg_"
36
+ "__SWindow": "___SWindow_i8myc_gg_",
37
+ "__SOverlay": "___SOverlay_i8myc_gg_",
38
+ "__SClose": "___SClose_i8myc_gg_",
39
+ "_keyboardFocused": "__keyboardFocused_i8myc_gg_",
40
+ "__STitle": "___STitle_i8myc_gg_"
43
41
  });
44
42
  import { localizedMessages } from './translations/__intergalactic-dynamic-locales';
45
43
  import i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';
46
44
  import { Text } from '@semcore/typography';
47
45
  import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
48
46
  import { cssVariableEnhance } from '@semcore/utils/lib/useCssVariable';
47
+ import { useFocusLock } from '@semcore/utils/lib/use/useFocusLock';
49
48
 
50
49
  var ModalRoot = /*#__PURE__*/function (_Component) {
51
50
  _inherits(ModalRoot, _Component);
@@ -181,18 +180,6 @@ _defineProperty(ModalRoot, "defaultProps", {
181
180
  locale: 'en'
182
181
  });
183
182
 
184
- var FocusLockWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {
185
- return /*#__PURE__*/React.createElement(FocusLock, _extends({
186
- ref: ref
187
- }, props, {
188
- lockProps: {
189
- style: {
190
- display: 'contents'
191
- }
192
- }
193
- }));
194
- });
195
-
196
183
  function Window(props) {
197
184
  var _ref2 = arguments[0],
198
185
  _ref6;
@@ -204,21 +191,18 @@ function Window(props) {
204
191
  closable = props.closable,
205
192
  duration = props.duration;
206
193
  var windowRef = useRef(null);
194
+ useFocusLock(windowRef, true, 'auto', !visible);
207
195
  return _ref6 = sstyled(styles), /*#__PURE__*/React.createElement(SWindow, _ref6.cn("SWindow", _objectSpread({}, _assignProps2({
208
196
  "initialAnimation": true,
209
197
  "slideOrigin": "top",
210
198
  "visible": visible,
211
199
  "role": "dialog",
212
200
  "aria-modal": true,
213
- "duration": duration
214
- }, _ref2))), /*#__PURE__*/React.createElement(FocusLockWrapper, _ref6.cn("FocusLockWrapper", {
215
- "returnFocus": true,
216
- "autoFocus": true,
217
- "ref": windowRef,
218
- "tabIndex": -1
219
- }), /*#__PURE__*/React.createElement(PortalProvider, _ref6.cn("PortalProvider", {
201
+ "duration": duration,
202
+ "ref": windowRef
203
+ }, _ref2))), /*#__PURE__*/React.createElement(PortalProvider, _ref6.cn("PortalProvider", {
220
204
  "value": windowRef
221
- }), closable && /*#__PURE__*/React.createElement(Modal.Close, null), /*#__PURE__*/React.createElement(Children, _ref6.cn("Children", {})))));
205
+ }), closable && /*#__PURE__*/React.createElement(Modal.Close, null), /*#__PURE__*/React.createElement(Children, _ref6.cn("Children", {}))));
222
206
  }
223
207
 
224
208
  function Overlay(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["React","useRef","useEffect","FocusLock","FadeInOut","Slide","createComponent","Component","sstyled","Root","Portal","PortalProvider","Box","OutsideClick","CloseIcon","fire","usePreventScroll","isAdvanceMode","keyboardFocusEnhance","localizedMessages","i18nEnhance","Text","uniqueIDEnhancement","cssVariableEnhance","ModalRoot","hasTitle","e","key","stopPropagation","asProps","duration","visible","animationsDisabled","onOutsideClick","handleOutsideClick","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","onClick","handleIconCloseClick","setTitle","setState","id","Children","disablePortal","advanceMode","Modal","Overlay","displayName","Window","style","variable","fallback","map","Number","parseInt","prop","i18n","locale","FocusLockWrapper","forwardRef","props","ref","display","SWindow","styles","windowRef","SOverlay","overlayRef","Close","SClose","hasChildren","children","enhance","Title","STitle"],"sources":["../../src/Modal.jsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport { FadeInOut, Slide } from '@semcore/animation';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Portal, { PortalProvider } from '@semcore/portal';\nimport { Box } from '@semcore/flex-box';\nimport OutsideClick from '@semcore/outside-click';\nimport CloseIcon from '@semcore/icon/Close/l';\nimport fire from '@semcore/utils/lib/fire';\nimport usePreventScroll from '@semcore/utils/lib/use/usePreventScroll';\nimport { isAdvanceMode } from '@semcore/utils/lib/findComponent';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport style from './style/modal.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { cssVariableEnhance } from '@semcore/utils/lib/useCssVariable';\n\nclass ModalRoot extends Component {\n static displayName = 'Modal';\n static style = style;\n static enhance = [\n i18nEnhance(localizedMessages),\n uniqueIDEnhancement(),\n cssVariableEnhance({\n variable: '--intergalactic-duration-modal',\n fallback: '200',\n map: Number.parseInt,\n prop: 'duration',\n }),\n ];\n static defaultProps = {\n closable: true,\n i18n: localizedMessages,\n locale: 'en',\n };\n state = { hasTitle: false };\n\n handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n fire(this, 'onClose', 'onEscape', e);\n }\n };\n\n handleIconCloseClick = (e) => {\n fire(this, 'onClose', 'onCloseClick', e);\n };\n\n handleOutsideClick = (e) => {\n fire(this, 'onClose', 'onOutsideClick', e);\n };\n\n getOverlayProps() {\n const { duration, visible, animationsDisabled } = this.asProps;\n return {\n duration,\n visible,\n onOutsideClick: this.handleOutsideClick,\n animationsDisabled,\n };\n }\n\n getWindowProps() {\n const { visible, closable, getI18nText, uid, duration, animationsDisabled } = this.asProps;\n const { hasTitle } = this.state;\n return {\n visible,\n closable,\n onKeyDown: this.handleKeyDown,\n 'aria-label': hasTitle ? undefined : getI18nText('title'),\n 'aria-labelledby': hasTitle ? `igc-${uid}-title` : undefined,\n duration,\n animationsDisabled,\n };\n }\n\n getCloseProps() {\n const { getI18nText } = this.asProps;\n\n return {\n onClick: this.handleIconCloseClick,\n getI18nText,\n };\n }\n\n getTitleProps() {\n const { uid } = this.asProps;\n const setTitle = () => this.setState({ hasTitle: true });\n\n return {\n id: `igc-${uid}-title`,\n setTitle,\n };\n }\n\n render() {\n const { Children, disablePortal } = this.asProps;\n\n const advanceMode = isAdvanceMode(Children, [\n Modal.Overlay.displayName,\n Modal.Window.displayName,\n ]);\n\n return (\n <Portal disablePortal={disablePortal}>\n {advanceMode ? (\n <Children />\n ) : (\n <Modal.Overlay>\n <Root render={Modal.Window} />\n </Modal.Overlay>\n )}\n </Portal>\n );\n }\n}\n\nconst FocusLockWrapper = React.forwardRef(function (props, ref) {\n return <FocusLock ref={ref} {...props} lockProps={{ style: { display: 'contents' } }} />;\n});\n\nfunction Window(props) {\n const SWindow = Root;\n const { Children, styles, visible, closable, duration } = props;\n const windowRef = useRef(null);\n\n return sstyled(styles)(\n <SWindow\n render={Slide}\n initialAnimation={true}\n slideOrigin=\"top\"\n visible={visible}\n role=\"dialog\"\n aria-modal={true}\n duration={duration}\n >\n <FocusLockWrapper returnFocus={true} autoFocus={true} ref={windowRef} tabIndex={-1}>\n <PortalProvider value={windowRef}>\n {closable && <Modal.Close />}\n <Children />\n </PortalProvider>\n </FocusLockWrapper>\n </SWindow>,\n );\n}\n\nfunction Overlay(props) {\n const SOverlay = Root;\n const { Children, styles, onOutsideClick, visible } = props;\n const overlayRef = useRef(null);\n usePreventScroll(visible);\n\n return sstyled(styles)(\n <SOverlay render={FadeInOut} ref={overlayRef}>\n <OutsideClick root={overlayRef} onOutsideClick={onOutsideClick}>\n <Children />\n </OutsideClick>\n </SOverlay>,\n );\n}\n\nfunction Close(props) {\n const SClose = Root;\n const { Children, children: hasChildren, getI18nText } = props;\n return sstyled(props.styles)(\n <SClose render={Box} tag=\"button\" tabIndex={0} aria-label={getI18nText('close')}>\n {hasChildren ? <Children /> : <CloseIcon title={getI18nText('close')} />}\n </SClose>,\n );\n}\n\nClose.enhance = [keyboardFocusEnhance()];\n\nfunction Title(props) {\n const { setTitle, styles } = props;\n const STitle = Root;\n\n useEffect(() => setTitle());\n\n return sstyled(styles)(<STitle render={Text} tag=\"h2\" />);\n}\n\nconst Modal = createComponent(ModalRoot, {\n Window,\n Overlay,\n Close,\n Title,\n});\n\nexport default Modal;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","names":["React","useRef","useEffect","FadeInOut","Slide","createComponent","Component","sstyled","Root","Portal","PortalProvider","Box","OutsideClick","CloseIcon","fire","usePreventScroll","isAdvanceMode","keyboardFocusEnhance","localizedMessages","i18nEnhance","Text","uniqueIDEnhancement","cssVariableEnhance","useFocusLock","ModalRoot","hasTitle","e","key","stopPropagation","asProps","duration","visible","animationsDisabled","onOutsideClick","handleOutsideClick","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","onClick","handleIconCloseClick","setTitle","setState","id","Children","disablePortal","advanceMode","Modal","Overlay","displayName","Window","style","variable","fallback","map","Number","parseInt","prop","i18n","locale","props","SWindow","styles","windowRef","SOverlay","overlayRef","Close","SClose","hasChildren","children","enhance","Title","STitle"],"sources":["../../src/Modal.jsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\nimport { FadeInOut, Slide } from '@semcore/animation';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Portal, { PortalProvider } from '@semcore/portal';\nimport { Box } from '@semcore/flex-box';\nimport OutsideClick from '@semcore/outside-click';\nimport CloseIcon from '@semcore/icon/Close/l';\nimport fire from '@semcore/utils/lib/fire';\nimport usePreventScroll from '@semcore/utils/lib/use/usePreventScroll';\nimport { isAdvanceMode } from '@semcore/utils/lib/findComponent';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport style from './style/modal.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { cssVariableEnhance } from '@semcore/utils/lib/useCssVariable';\nimport { useFocusLock } from '@semcore/utils/lib/use/useFocusLock';\n\nclass ModalRoot extends Component {\n static displayName = 'Modal';\n static style = style;\n static enhance = [\n i18nEnhance(localizedMessages),\n uniqueIDEnhancement(),\n cssVariableEnhance({\n variable: '--intergalactic-duration-modal',\n fallback: '200',\n map: Number.parseInt,\n prop: 'duration',\n }),\n ];\n static defaultProps = {\n closable: true,\n i18n: localizedMessages,\n locale: 'en',\n };\n state = { hasTitle: false };\n\n handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n fire(this, 'onClose', 'onEscape', e);\n }\n };\n\n handleIconCloseClick = (e) => {\n fire(this, 'onClose', 'onCloseClick', e);\n };\n\n handleOutsideClick = (e) => {\n fire(this, 'onClose', 'onOutsideClick', e);\n };\n\n getOverlayProps() {\n const { duration, visible, animationsDisabled } = this.asProps;\n return {\n duration,\n visible,\n onOutsideClick: this.handleOutsideClick,\n animationsDisabled,\n };\n }\n\n getWindowProps() {\n const { visible, closable, getI18nText, uid, duration, animationsDisabled } = this.asProps;\n const { hasTitle } = this.state;\n return {\n visible,\n closable,\n onKeyDown: this.handleKeyDown,\n 'aria-label': hasTitle ? undefined : getI18nText('title'),\n 'aria-labelledby': hasTitle ? `igc-${uid}-title` : undefined,\n duration,\n animationsDisabled,\n };\n }\n\n getCloseProps() {\n const { getI18nText } = this.asProps;\n\n return {\n onClick: this.handleIconCloseClick,\n getI18nText,\n };\n }\n\n getTitleProps() {\n const { uid } = this.asProps;\n const setTitle = () => this.setState({ hasTitle: true });\n\n return {\n id: `igc-${uid}-title`,\n setTitle,\n };\n }\n\n render() {\n const { Children, disablePortal } = this.asProps;\n\n const advanceMode = isAdvanceMode(Children, [\n Modal.Overlay.displayName,\n Modal.Window.displayName,\n ]);\n\n return (\n <Portal disablePortal={disablePortal}>\n {advanceMode ? (\n <Children />\n ) : (\n <Modal.Overlay>\n <Root render={Modal.Window} />\n </Modal.Overlay>\n )}\n </Portal>\n );\n }\n}\n\nfunction Window(props) {\n const SWindow = Root;\n const { Children, styles, visible, closable, duration } = props;\n const windowRef = useRef(null);\n\n useFocusLock(windowRef, true, 'auto', !visible);\n\n return sstyled(styles)(\n <SWindow\n render={Slide}\n initialAnimation={true}\n slideOrigin=\"top\"\n visible={visible}\n role=\"dialog\"\n aria-modal={true}\n duration={duration}\n ref={windowRef}\n >\n <PortalProvider value={windowRef}>\n {closable && <Modal.Close />}\n <Children />\n </PortalProvider>\n </SWindow>,\n );\n}\n\nfunction Overlay(props) {\n const SOverlay = Root;\n const { Children, styles, onOutsideClick, visible } = props;\n const overlayRef = useRef(null);\n usePreventScroll(visible);\n\n return sstyled(styles)(\n <SOverlay render={FadeInOut} ref={overlayRef}>\n <OutsideClick root={overlayRef} onOutsideClick={onOutsideClick}>\n <Children />\n </OutsideClick>\n </SOverlay>,\n );\n}\n\nfunction Close(props) {\n const SClose = Root;\n const { Children, children: hasChildren, getI18nText } = props;\n return sstyled(props.styles)(\n <SClose render={Box} tag=\"button\" tabIndex={0} aria-label={getI18nText('close')}>\n {hasChildren ? <Children /> : <CloseIcon title={getI18nText('close')} />}\n </SClose>,\n );\n}\n\nClose.enhance = [keyboardFocusEnhance()];\n\nfunction Title(props) {\n const { setTitle, styles } = props;\n const STitle = Root;\n\n useEffect(() => setTitle());\n\n return sstyled(styles)(<STitle render={Text} tag=\"h2\" />);\n}\n\nconst Modal = createComponent(ModalRoot, {\n Window,\n Overlay,\n Close,\n Title,\n});\n\nexport default Modal;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/modal",
3
3
  "description": "Semrush Modal Component",
4
- "version": "3.5.7",
4
+ "version": "3.5.9",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -15,8 +15,7 @@
15
15
  "@semcore/outside-click": "^2",
16
16
  "@semcore/portal": "^2",
17
17
  "@semcore/typography": "^4",
18
- "@semcore/utils": "^3.31.2",
19
- "react-focus-lock": "2.9.1"
18
+ "@semcore/utils": "^3.31.2"
20
19
  },
21
20
  "peerDependencies": {
22
21
  "@semcore/core": "^1.11",