@semcore/modal 3.5.18 → 3.6.0
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 +8 -2
- package/lib/cjs/Modal.js +13 -10
- package/lib/cjs/Modal.js.map +1 -1
- package/lib/cjs/index.d.js.map +1 -1
- package/lib/es6/Modal.js +13 -10
- package/lib/es6/Modal.js.map +1 -1
- package/lib/es6/index.d.js.map +1 -1
- package/lib/types/index.d.ts +6 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
|
5
|
-
## [3.
|
|
5
|
+
## [3.6.0] - 2023-04-24
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added `disablePreventScroll` prop.
|
|
10
|
+
|
|
11
|
+
## [3.5.18] - 2023-04-17
|
|
6
12
|
|
|
7
13
|
### Changed
|
|
8
14
|
|
|
9
|
-
- Version patch update due to children dependencies update (`@semcore/animation` [1.10.1 ~> 1.10.2], `@semcore/flex-box` [4.7.18 ~> 4.7.19], `@semcore/icon` [3.14.6 ~> 3.14.7], `@semcore/utils` [3.50.0 ~> 3.50.
|
|
15
|
+
- Version patch update due to children dependencies update (`@semcore/animation` [1.10.1 ~> 1.10.2], `@semcore/flex-box` [4.7.18 ~> 4.7.19], `@semcore/icon` [3.14.6 ~> 3.14.7], `@semcore/utils` [3.50.0 ~> 3.50.3]).
|
|
10
16
|
|
|
11
17
|
## [3.5.17] - 2023-04-03
|
|
12
18
|
|
package/lib/cjs/Modal.js
CHANGED
|
@@ -32,12 +32,12 @@ var _useCssVariable = require("@semcore/utils/lib/useCssVariable");
|
|
|
32
32
|
var _useFocusLock = require("@semcore/utils/lib/use/useFocusLock");
|
|
33
33
|
var _ThemeProvider = require("@semcore/utils/lib/ThemeProvider");
|
|
34
34
|
/*__reshadow-styles__:"./style/modal.shadow.css"*/
|
|
35
|
-
var style = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".
|
|
36
|
-
"__SWindow": "
|
|
37
|
-
"__SOverlay": "
|
|
38
|
-
"__SClose": "
|
|
39
|
-
"_keyboardFocused": "
|
|
40
|
-
"__STitle": "
|
|
35
|
+
var style = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SWindow_1mexq_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_1mexq_gg_:focus{outline:0}.___SOverlay_1mexq_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_1mexq_gg_ .___SOverlay_1mexq_gg_{background:var(--intergalactic-overlay-secondary, rgba(25, 27, 35, 0.4))}.___SClose_1mexq_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_1mexq_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active, #8a8e9b)}}.___SClose_1mexq_gg_.__keyboardFocused_1mexq_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.3))}.___STitle_1mexq_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_1mexq_gg_{min-width:60%}.___SOverlay_1mexq_gg_{padding:var(--intergalactic-spacing-3x, 12px)}}" /*__inner_css_end__*/, "1mexq_gg_") /*__reshadow_css_end__*/, {
|
|
36
|
+
"__SWindow": "___SWindow_1mexq_gg_",
|
|
37
|
+
"__SOverlay": "___SOverlay_1mexq_gg_",
|
|
38
|
+
"__SClose": "___SClose_1mexq_gg_",
|
|
39
|
+
"_keyboardFocused": "__keyboardFocused_1mexq_gg_",
|
|
40
|
+
"__STitle": "___STitle_1mexq_gg_"
|
|
41
41
|
});
|
|
42
42
|
var ModalRoot = /*#__PURE__*/function (_Component) {
|
|
43
43
|
(0, _inherits2["default"])(ModalRoot, _Component);
|
|
@@ -72,12 +72,14 @@ var ModalRoot = /*#__PURE__*/function (_Component) {
|
|
|
72
72
|
var _this$asProps = this.asProps,
|
|
73
73
|
duration = _this$asProps.duration,
|
|
74
74
|
visible = _this$asProps.visible,
|
|
75
|
-
animationsDisabled = _this$asProps.animationsDisabled
|
|
75
|
+
animationsDisabled = _this$asProps.animationsDisabled,
|
|
76
|
+
disablePreventScroll = _this$asProps.disablePreventScroll;
|
|
76
77
|
return {
|
|
77
78
|
duration: duration,
|
|
78
79
|
visible: visible,
|
|
79
80
|
onOutsideClick: this.handleOutsideClick,
|
|
80
|
-
animationsDisabled: animationsDisabled
|
|
81
|
+
animationsDisabled: animationsDisabled,
|
|
82
|
+
disablePreventScroll: disablePreventScroll
|
|
81
83
|
};
|
|
82
84
|
}
|
|
83
85
|
}, {
|
|
@@ -151,7 +153,8 @@ var ModalRoot = /*#__PURE__*/function (_Component) {
|
|
|
151
153
|
(0, _defineProperty2["default"])(ModalRoot, "defaultProps", {
|
|
152
154
|
closable: true,
|
|
153
155
|
i18n: _intergalacticDynamicLocales.localizedMessages,
|
|
154
|
-
locale: 'en'
|
|
156
|
+
locale: 'en',
|
|
157
|
+
disablePreventScroll: false
|
|
155
158
|
});
|
|
156
159
|
function Window(props) {
|
|
157
160
|
var _ref2 = arguments[0],
|
|
@@ -185,7 +188,7 @@ function Overlay(props) {
|
|
|
185
188
|
onOutsideClick = props.onOutsideClick,
|
|
186
189
|
visible = props.visible;
|
|
187
190
|
var overlayRef = (0, _react.useRef)(null);
|
|
188
|
-
(0, _usePreventScroll["default"])(visible);
|
|
191
|
+
(0, _usePreventScroll["default"])(visible, props.disablePreventScroll);
|
|
189
192
|
(0, _ThemeProvider.useContextTheme)(overlayRef, visible);
|
|
190
193
|
return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SOverlay, _ref7.cn("SOverlay", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
|
|
191
194
|
"ref": overlayRef
|
package/lib/cjs/Modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","names":["_core","_interopRequireWildcard","require","_react","_animation","_portal","_flexBox","_outsideClick","_interopRequireDefault","_l","_fire","_usePreventScroll","_findComponent","_keyboardFocusEnhance","_intergalacticDynamicLocales","_i18nEnhance","_typography","_uniqueID","_useCssVariable","_useFocusLock","_ThemeProvider","style","sstyled","insert","ModalRoot","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","hasTitle","e","key","stopPropagation","fire","_createClass2","value","getOverlayProps","_this$asProps","asProps","duration","visible","animationsDisabled","onOutsideClick","handleOutsideClick","getWindowProps","_this$asProps2","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","getCloseProps","onClick","handleIconCloseClick","getTitleProps","_this2","setTitle","setState","id","render","_ref","_this$asProps3","Children","disablePortal","advanceMode","isAdvanceMode","Modal","Overlay","displayName","Window","createElement","assignProps","Component","i18nEnhance","localizedMessages","uniqueIDEnhancement","cssVariableEnhance","variable","fallback","map","Number","parseInt","prop","i18n","locale","props","_ref2","arguments[0]","_ref6","SWindow","Slide","styles","windowRef","useRef","useFocusLock","cn","_objectSpread2","PortalProvider","Close","_ref3","_ref7","SOverlay","FadeInOut","overlayRef","usePreventScroll","useContextTheme","_ref4","_ref8","SClose","Box","hasChildren","children","enhance","keyboardFocusEnhance","Title","_ref5","_ref9","STitle","Text","useEffect","createComponent","_default","exports"],"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';\nimport { useContextTheme } from '@semcore/utils/lib/ThemeProvider';\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 useContextTheme(overlayRef, 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":["_core","_interopRequireWildcard","require","_react","_animation","_portal","_flexBox","_outsideClick","_interopRequireDefault","_l","_fire","_usePreventScroll","_findComponent","_keyboardFocusEnhance","_intergalacticDynamicLocales","_i18nEnhance","_typography","_uniqueID","_useCssVariable","_useFocusLock","_ThemeProvider","style","sstyled","insert","ModalRoot","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","hasTitle","e","key","stopPropagation","fire","_createClass2","value","getOverlayProps","_this$asProps","asProps","duration","visible","animationsDisabled","disablePreventScroll","onOutsideClick","handleOutsideClick","getWindowProps","_this$asProps2","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","getCloseProps","onClick","handleIconCloseClick","getTitleProps","_this2","setTitle","setState","id","render","_ref","_this$asProps3","Children","disablePortal","advanceMode","isAdvanceMode","Modal","Overlay","displayName","Window","createElement","assignProps","Component","i18nEnhance","localizedMessages","uniqueIDEnhancement","cssVariableEnhance","variable","fallback","map","Number","parseInt","prop","i18n","locale","props","_ref2","arguments[0]","_ref6","SWindow","Slide","styles","windowRef","useRef","useFocusLock","cn","_objectSpread2","PortalProvider","Close","_ref3","_ref7","SOverlay","FadeInOut","overlayRef","usePreventScroll","useContextTheme","_ref4","_ref8","SClose","Box","hasChildren","children","enhance","keyboardFocusEnhance","Title","_ref5","_ref9","STitle","Text","useEffect","createComponent","_default","exports"],"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';\nimport { useContextTheme } from '@semcore/utils/lib/ThemeProvider';\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 disablePreventScroll: false,\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, disablePreventScroll } = this.asProps;\n return {\n duration,\n visible,\n onOutsideClick: this.handleOutsideClick,\n animationsDisabled,\n disablePreventScroll,\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, props.disablePreventScroll);\n useContextTheme(overlayRef, 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/cjs/index.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React, { ComponentProps } from 'react';\nimport { IFadeInOutProps, ISlideProps } from '@semcore/animation';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IPortalProps } from '@semcore/portal';\nimport { Box, IBoxProps } from '@semcore/flex-box';\nimport { ITextProps } from '@semcore/typography';\n\nexport interface IModalProps extends IPortalProps, IBoxProps, IFadeInOutProps {\n /** Duration of animation, ms\n * @default 200\n */\n duration?: number;\n /** This property is responsible for the visibility of the modal window */\n visible?: boolean;\n /** Function called when the component is hidden */\n onClose?: (\n trigger: 'onOutsideClick' | 'onCloseClick' | 'onEscape',\n e?: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n /** Displaying the close button(x) in the upper-right corner of the modal dialog\n * @default true\n * */\n closable?: boolean;\n locale?: string;\n}\n\nexport interface IWindowProps extends IBoxProps, ISlideProps {}\n\nexport interface IModalContext {\n getOverlayProps: PropGetterFn;\n getWindowProps: PropGetterFn;\n getCloseProps: PropGetterFn;\n}\n\ndeclare const Modal: (<T>(props: CProps<IModalProps & T, IModalContext>) => ReturnEl) & {\n Window: <T>(props: CProps<IWindowProps> & T) => ReturnEl;\n Overlay: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Close: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Title: <T>(props: ITextProps & T) => ReturnEl;\n};\n\nexport default Modal;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React, { ComponentProps } from 'react';\nimport { IFadeInOutProps, ISlideProps } from '@semcore/animation';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IPortalProps } from '@semcore/portal';\nimport { Box, IBoxProps } from '@semcore/flex-box';\nimport { ITextProps } from '@semcore/typography';\n\nexport interface IModalProps extends IPortalProps, IBoxProps, IFadeInOutProps {\n /** Duration of animation, ms\n * @default 200\n */\n duration?: number;\n /** This property is responsible for the visibility of the modal window */\n visible?: boolean;\n /** Function called when the component is hidden */\n onClose?: (\n trigger: 'onOutsideClick' | 'onCloseClick' | 'onEscape',\n e?: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n /** Displaying the close button(x) in the upper-right corner of the modal dialog\n * @default true\n * */\n closable?: boolean;\n /**\n * Setting `true` disables mechanism that hides document body scrollbar when Modal is visible\n * @default false\n */\n disablePreventScroll?: boolean;\n\n locale?: string;\n}\n\nexport interface IWindowProps extends IBoxProps, ISlideProps {}\n\nexport interface IModalContext {\n getOverlayProps: PropGetterFn;\n getWindowProps: PropGetterFn;\n getCloseProps: PropGetterFn;\n}\n\ndeclare const Modal: (<T>(props: CProps<IModalProps & T, IModalContext>) => ReturnEl) & {\n Window: <T>(props: CProps<IWindowProps> & T) => ReturnEl;\n Overlay: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Close: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Title: <T>(props: ITextProps & T) => ReturnEl;\n};\n\nexport default Modal;\n"],"mappings":""}
|
package/lib/es6/Modal.js
CHANGED
|
@@ -23,12 +23,12 @@ import usePreventScroll from '@semcore/utils/lib/use/usePreventScroll';
|
|
|
23
23
|
import { isAdvanceMode } from '@semcore/utils/lib/findComponent';
|
|
24
24
|
import keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';
|
|
25
25
|
/*__reshadow-styles__:"./style/modal.shadow.css"*/
|
|
26
|
-
var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".
|
|
27
|
-
"__SWindow": "
|
|
28
|
-
"__SOverlay": "
|
|
29
|
-
"__SClose": "
|
|
30
|
-
"_keyboardFocused": "
|
|
31
|
-
"__STitle": "
|
|
26
|
+
var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SWindow_1mexq_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_1mexq_gg_:focus{outline:0}.___SOverlay_1mexq_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_1mexq_gg_ .___SOverlay_1mexq_gg_{background:var(--intergalactic-overlay-secondary, rgba(25, 27, 35, 0.4))}.___SClose_1mexq_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_1mexq_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active, #8a8e9b)}}.___SClose_1mexq_gg_.__keyboardFocused_1mexq_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.3))}.___STitle_1mexq_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_1mexq_gg_{min-width:60%}.___SOverlay_1mexq_gg_{padding:var(--intergalactic-spacing-3x, 12px)}}" /*__inner_css_end__*/, "1mexq_gg_") /*__reshadow_css_end__*/, {
|
|
27
|
+
"__SWindow": "___SWindow_1mexq_gg_",
|
|
28
|
+
"__SOverlay": "___SOverlay_1mexq_gg_",
|
|
29
|
+
"__SClose": "___SClose_1mexq_gg_",
|
|
30
|
+
"_keyboardFocused": "__keyboardFocused_1mexq_gg_",
|
|
31
|
+
"__STitle": "___STitle_1mexq_gg_"
|
|
32
32
|
});
|
|
33
33
|
import { localizedMessages } from './translations/__intergalactic-dynamic-locales';
|
|
34
34
|
import i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';
|
|
@@ -70,12 +70,14 @@ var ModalRoot = /*#__PURE__*/function (_Component) {
|
|
|
70
70
|
var _this$asProps = this.asProps,
|
|
71
71
|
duration = _this$asProps.duration,
|
|
72
72
|
visible = _this$asProps.visible,
|
|
73
|
-
animationsDisabled = _this$asProps.animationsDisabled
|
|
73
|
+
animationsDisabled = _this$asProps.animationsDisabled,
|
|
74
|
+
disablePreventScroll = _this$asProps.disablePreventScroll;
|
|
74
75
|
return {
|
|
75
76
|
duration: duration,
|
|
76
77
|
visible: visible,
|
|
77
78
|
onOutsideClick: this.handleOutsideClick,
|
|
78
|
-
animationsDisabled: animationsDisabled
|
|
79
|
+
animationsDisabled: animationsDisabled,
|
|
80
|
+
disablePreventScroll: disablePreventScroll
|
|
79
81
|
};
|
|
80
82
|
}
|
|
81
83
|
}, {
|
|
@@ -149,7 +151,8 @@ _defineProperty(ModalRoot, "enhance", [i18nEnhance(localizedMessages), uniqueIDE
|
|
|
149
151
|
_defineProperty(ModalRoot, "defaultProps", {
|
|
150
152
|
closable: true,
|
|
151
153
|
i18n: localizedMessages,
|
|
152
|
-
locale: 'en'
|
|
154
|
+
locale: 'en',
|
|
155
|
+
disablePreventScroll: false
|
|
153
156
|
});
|
|
154
157
|
function Window(props) {
|
|
155
158
|
var _ref2 = arguments[0],
|
|
@@ -183,7 +186,7 @@ function Overlay(props) {
|
|
|
183
186
|
onOutsideClick = props.onOutsideClick,
|
|
184
187
|
visible = props.visible;
|
|
185
188
|
var overlayRef = useRef(null);
|
|
186
|
-
usePreventScroll(visible);
|
|
189
|
+
usePreventScroll(visible, props.disablePreventScroll);
|
|
187
190
|
useContextTheme(overlayRef, visible);
|
|
188
191
|
return _ref7 = sstyled(styles), /*#__PURE__*/React.createElement(SOverlay, _ref7.cn("SOverlay", _objectSpread({}, _assignProps3({
|
|
189
192
|
"ref": overlayRef
|
package/lib/es6/Modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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","style","_sstyled","insert","localizedMessages","i18nEnhance","Text","uniqueIDEnhancement","cssVariableEnhance","useFocusLock","useContextTheme","ModalRoot","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty","_assertThisInitialized","hasTitle","e","key","stopPropagation","_createClass","value","getOverlayProps","_this$asProps","asProps","duration","visible","animationsDisabled","onOutsideClick","handleOutsideClick","getWindowProps","_this$asProps2","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","getCloseProps","onClick","handleIconCloseClick","getTitleProps","_this2","setTitle","setState","id","render","_ref","_this$asProps3","Children","disablePortal","advanceMode","Modal","Overlay","displayName","Window","createElement","_assignProps","variable","fallback","map","Number","parseInt","prop","i18n","locale","props","_ref2","arguments[0]","_ref6","SWindow","styles","windowRef","cn","_objectSpread","_assignProps2","Close","_ref3","_ref7","SOverlay","overlayRef","_assignProps3","_ref4","_ref8","SClose","hasChildren","children","_assignProps4","enhance","Title","_ref5","_ref9","STitle","_assignProps5"],"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';\nimport { useContextTheme } from '@semcore/utils/lib/ThemeProvider';\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 useContextTheme(overlayRef, 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","style","_sstyled","insert","localizedMessages","i18nEnhance","Text","uniqueIDEnhancement","cssVariableEnhance","useFocusLock","useContextTheme","ModalRoot","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty","_assertThisInitialized","hasTitle","e","key","stopPropagation","_createClass","value","getOverlayProps","_this$asProps","asProps","duration","visible","animationsDisabled","disablePreventScroll","onOutsideClick","handleOutsideClick","getWindowProps","_this$asProps2","closable","getI18nText","uid","state","onKeyDown","handleKeyDown","undefined","getCloseProps","onClick","handleIconCloseClick","getTitleProps","_this2","setTitle","setState","id","render","_ref","_this$asProps3","Children","disablePortal","advanceMode","Modal","Overlay","displayName","Window","createElement","_assignProps","variable","fallback","map","Number","parseInt","prop","i18n","locale","props","_ref2","arguments[0]","_ref6","SWindow","styles","windowRef","cn","_objectSpread","_assignProps2","Close","_ref3","_ref7","SOverlay","overlayRef","_assignProps3","_ref4","_ref8","SClose","hasChildren","children","_assignProps4","enhance","Title","_ref5","_ref9","STitle","_assignProps5"],"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';\nimport { useContextTheme } from '@semcore/utils/lib/ThemeProvider';\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 disablePreventScroll: false,\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, disablePreventScroll } = this.asProps;\n return {\n duration,\n visible,\n onOutsideClick: this.handleOutsideClick,\n animationsDisabled,\n disablePreventScroll,\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, props.disablePreventScroll);\n useContextTheme(overlayRef, 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/index.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React, { ComponentProps } from 'react';\nimport { IFadeInOutProps, ISlideProps } from '@semcore/animation';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IPortalProps } from '@semcore/portal';\nimport { Box, IBoxProps } from '@semcore/flex-box';\nimport { ITextProps } from '@semcore/typography';\n\nexport interface IModalProps extends IPortalProps, IBoxProps, IFadeInOutProps {\n /** Duration of animation, ms\n * @default 200\n */\n duration?: number;\n /** This property is responsible for the visibility of the modal window */\n visible?: boolean;\n /** Function called when the component is hidden */\n onClose?: (\n trigger: 'onOutsideClick' | 'onCloseClick' | 'onEscape',\n e?: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n /** Displaying the close button(x) in the upper-right corner of the modal dialog\n * @default true\n * */\n closable?: boolean;\n locale?: string;\n}\n\nexport interface IWindowProps extends IBoxProps, ISlideProps {}\n\nexport interface IModalContext {\n getOverlayProps: PropGetterFn;\n getWindowProps: PropGetterFn;\n getCloseProps: PropGetterFn;\n}\n\ndeclare const Modal: (<T>(props: CProps<IModalProps & T, IModalContext>) => ReturnEl) & {\n Window: <T>(props: CProps<IWindowProps> & T) => ReturnEl;\n Overlay: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Close: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Title: <T>(props: ITextProps & T) => ReturnEl;\n};\n\nexport default Modal;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React, { ComponentProps } from 'react';\nimport { IFadeInOutProps, ISlideProps } from '@semcore/animation';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IPortalProps } from '@semcore/portal';\nimport { Box, IBoxProps } from '@semcore/flex-box';\nimport { ITextProps } from '@semcore/typography';\n\nexport interface IModalProps extends IPortalProps, IBoxProps, IFadeInOutProps {\n /** Duration of animation, ms\n * @default 200\n */\n duration?: number;\n /** This property is responsible for the visibility of the modal window */\n visible?: boolean;\n /** Function called when the component is hidden */\n onClose?: (\n trigger: 'onOutsideClick' | 'onCloseClick' | 'onEscape',\n e?: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n /** Displaying the close button(x) in the upper-right corner of the modal dialog\n * @default true\n * */\n closable?: boolean;\n /**\n * Setting `true` disables mechanism that hides document body scrollbar when Modal is visible\n * @default false\n */\n disablePreventScroll?: boolean;\n\n locale?: string;\n}\n\nexport interface IWindowProps extends IBoxProps, ISlideProps {}\n\nexport interface IModalContext {\n getOverlayProps: PropGetterFn;\n getWindowProps: PropGetterFn;\n getCloseProps: PropGetterFn;\n}\n\ndeclare const Modal: (<T>(props: CProps<IModalProps & T, IModalContext>) => ReturnEl) & {\n Window: <T>(props: CProps<IWindowProps> & T) => ReturnEl;\n Overlay: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Close: <T>(props: ComponentProps<typeof Box> & T) => ReturnEl;\n Title: <T>(props: ITextProps & T) => ReturnEl;\n};\n\nexport default Modal;\n"],"mappings":""}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -21,6 +21,12 @@ export interface IModalProps extends IPortalProps, IBoxProps, IFadeInOutProps {
|
|
|
21
21
|
* @default true
|
|
22
22
|
* */
|
|
23
23
|
closable?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Setting `true` disables mechanism that hides document body scrollbar when Modal is visible
|
|
26
|
+
* @default false
|
|
27
|
+
*/
|
|
28
|
+
disablePreventScroll?: boolean;
|
|
29
|
+
|
|
24
30
|
locale?: string;
|
|
25
31
|
}
|
|
26
32
|
|