@elliemae/ds-overlay 3.8.0-rc.4 → 3.9.0-next.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.
@@ -124,13 +124,16 @@ DSOverlay.defaultProps = {
124
124
  backDropZIndex: 2,
125
125
  onClickOutside: () => null
126
126
  };
127
- DSOverlay.propTypes = {
128
- backDropZIndex: import_ds_utilities.PropTypes.number,
129
- children: import_ds_utilities.PropTypes.element,
130
- hasBackdrop: import_ds_utilities.PropTypes.bool,
131
- isOpen: import_ds_utilities.PropTypes.bool,
132
- onClickOutside: import_ds_utilities.PropTypes.func,
133
- usePortal: import_ds_utilities.PropTypes.bool
127
+ const DSOverlayPropTypes = {
128
+ backDropZIndex: import_ds_utilities.PropTypes.number.description("backDropZIndex"),
129
+ children: import_ds_utilities.PropTypes.element.description("children"),
130
+ hasBackdrop: import_ds_utilities.PropTypes.bool.description("hasBackdrop"),
131
+ isOpen: import_ds_utilities.PropTypes.bool.description("isOpen"),
132
+ onClickOutside: import_ds_utilities.PropTypes.func.description("onClickOutside"),
133
+ usePortal: import_ds_utilities.PropTypes.bool.description("usePortal")
134
134
  };
135
+ DSOverlay.propTypes = DSOverlayPropTypes;
136
+ const DSOverlayWithSchema = (0, import_ds_utilities.describe)(DSOverlay);
137
+ DSOverlayWithSchema.propTypes = DSOverlayPropTypes;
135
138
  var DSOverlay_default = DSOverlay;
136
139
  //# sourceMappingURL=DSOverlay.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/DSOverlay.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { PropTypes } from '@elliemae/ds-utilities';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport DSBackdrop from '@elliemae/ds-backdrop';\nimport DSPortal from '@elliemae/ds-portal';\n\nconst blockName = 'overlay';\n\nconst events = ['mousedown', 'touchstart'];\n\nconst OverlayContainer = aggregatedClasses('div')(blockName, null, ({ usePortal, isOpen }) => ({\n inline: !usePortal,\n opened: isOpen,\n}));\n\nclass DSOverlay extends Component {\n static overlayStack = [];\n\n static defaultProps = {\n isOpen: false,\n usePortal: true,\n hasBackdrop: false,\n backDropZIndex: 2, // https://jira.elliemae.io/browse/PUI-1712\n onClickOutside: () => null,\n };\n\n constructor(props) {\n super(props);\n this.overlayRef = React.createRef();\n\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const { isOpen } = this.props;\n if (isOpen !== prevProps.isOpen) {\n if (isOpen) {\n this.openOverlay();\n } else {\n this.closeOverlay();\n }\n }\n }\n\n addClickOutsideListeners() {\n events.forEach((event) => {\n document.addEventListener(event, this.handleDocumentClick);\n });\n }\n\n removeClickOutsideListeners() {\n events.forEach((event) => {\n document.removeEventListener(event, this.handleDocumentClick);\n });\n }\n\n handleDocumentClick(e) {\n const { onClickOutside, isOpen } = this.props;\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n const hasClickedOverlay = overlayStack.slice(overlayIndex).some(({ overlayRef }) => {\n const elem = overlayRef.current;\n return elem && elem.contains(e.target) && !elem.isSameNode(e.target);\n });\n\n if (isOpen && !hasClickedOverlay) {\n onClickOutside(e); // giving opportunity for callers to operate on the event.\n }\n }\n\n openOverlay() {\n this.addClickOutsideListeners();\n DSOverlay.overlayStack.push(this);\n }\n\n closeOverlay() {\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n this.removeClickOutsideListeners();\n overlayStack.splice(overlayIndex, 1);\n }\n\n render() {\n const { usePortal, isOpen, hasBackdrop, children, backDropZIndex, style = {} } = this.props;\n\n if (!isOpen) return null;\n\n const overlay = (\n <OverlayContainer\n style={{\n zIndex: 3000,\n ...style,\n }}\n classProps={{ usePortal, isOpen }}\n innerRef={this.overlayRef}\n >\n {hasBackdrop && <DSBackdrop zIndex={backDropZIndex} />}\n {children}\n </OverlayContainer>\n );\n\n if (usePortal) {\n return <DSPortal>{overlay}</DSPortal>;\n }\n\n return overlay;\n }\n}\n\nDSOverlay.propTypes = {\n backDropZIndex: PropTypes.number,\n children: PropTypes.element,\n hasBackdrop: PropTypes.bool,\n isOpen: PropTypes.bool,\n onClickOutside: PropTypes.func,\n usePortal: PropTypes.bool,\n};\n\nexport { DSOverlay };\nexport default DSOverlay;\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { PropTypes, describe } from '@elliemae/ds-utilities';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport DSBackdrop from '@elliemae/ds-backdrop';\nimport DSPortal from '@elliemae/ds-portal';\n\nconst blockName = 'overlay';\n\nconst events = ['mousedown', 'touchstart'];\n\nconst OverlayContainer = aggregatedClasses('div')(blockName, null, ({ usePortal, isOpen }) => ({\n inline: !usePortal,\n opened: isOpen,\n}));\n\nclass DSOverlay extends Component {\n static overlayStack = [];\n\n static defaultProps = {\n isOpen: false,\n usePortal: true,\n hasBackdrop: false,\n backDropZIndex: 2, // https://jira.elliemae.io/browse/PUI-1712\n onClickOutside: () => null,\n };\n\n constructor(props) {\n super(props);\n this.overlayRef = React.createRef();\n\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const { isOpen } = this.props;\n if (isOpen !== prevProps.isOpen) {\n if (isOpen) {\n this.openOverlay();\n } else {\n this.closeOverlay();\n }\n }\n }\n\n addClickOutsideListeners() {\n events.forEach((event) => {\n document.addEventListener(event, this.handleDocumentClick);\n });\n }\n\n removeClickOutsideListeners() {\n events.forEach((event) => {\n document.removeEventListener(event, this.handleDocumentClick);\n });\n }\n\n handleDocumentClick(e) {\n const { onClickOutside, isOpen } = this.props;\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n const hasClickedOverlay = overlayStack.slice(overlayIndex).some(({ overlayRef }) => {\n const elem = overlayRef.current;\n return elem && elem.contains(e.target) && !elem.isSameNode(e.target);\n });\n\n if (isOpen && !hasClickedOverlay) {\n onClickOutside(e); // giving opportunity for callers to operate on the event.\n }\n }\n\n openOverlay() {\n this.addClickOutsideListeners();\n DSOverlay.overlayStack.push(this);\n }\n\n closeOverlay() {\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n this.removeClickOutsideListeners();\n overlayStack.splice(overlayIndex, 1);\n }\n\n render() {\n const { usePortal, isOpen, hasBackdrop, children, backDropZIndex, style = {} } = this.props;\n\n if (!isOpen) return null;\n\n const overlay = (\n <OverlayContainer\n style={{\n zIndex: 3000,\n ...style,\n }}\n classProps={{ usePortal, isOpen }}\n innerRef={this.overlayRef}\n >\n {hasBackdrop && <DSBackdrop zIndex={backDropZIndex} />}\n {children}\n </OverlayContainer>\n );\n\n if (usePortal) {\n return <DSPortal>{overlay}</DSPortal>;\n }\n\n return overlay;\n }\n}\n\nconst DSOverlayPropTypes = {\n backDropZIndex: PropTypes.number.description('backDropZIndex'),\n children: PropTypes.element.description('children'),\n hasBackdrop: PropTypes.bool.description('hasBackdrop'),\n isOpen: PropTypes.bool.description('isOpen'),\n onClickOutside: PropTypes.func.description('onClickOutside'),\n usePortal: PropTypes.bool.description('usePortal'),\n};\n\nDSOverlay.propTypes = DSOverlayPropTypes;\n\nconst DSOverlayWithSchema = describe(DSOverlay);\nDSOverlayWithSchema.propTypes = DSOverlayPropTypes;\n\nexport { DSOverlay };\nexport default DSOverlay;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": ["React", "DSBackdrop", "DSPortal"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import React2, { Component } from "react";
4
- import { PropTypes } from "@elliemae/ds-utilities";
4
+ import { PropTypes, describe } from "@elliemae/ds-utilities";
5
5
  import { aggregatedClasses } from "@elliemae/ds-classnames";
6
6
  import DSBackdrop from "@elliemae/ds-backdrop";
7
7
  import DSPortal from "@elliemae/ds-portal";
@@ -94,14 +94,17 @@ DSOverlay.defaultProps = {
94
94
  backDropZIndex: 2,
95
95
  onClickOutside: () => null
96
96
  };
97
- DSOverlay.propTypes = {
98
- backDropZIndex: PropTypes.number,
99
- children: PropTypes.element,
100
- hasBackdrop: PropTypes.bool,
101
- isOpen: PropTypes.bool,
102
- onClickOutside: PropTypes.func,
103
- usePortal: PropTypes.bool
97
+ const DSOverlayPropTypes = {
98
+ backDropZIndex: PropTypes.number.description("backDropZIndex"),
99
+ children: PropTypes.element.description("children"),
100
+ hasBackdrop: PropTypes.bool.description("hasBackdrop"),
101
+ isOpen: PropTypes.bool.description("isOpen"),
102
+ onClickOutside: PropTypes.func.description("onClickOutside"),
103
+ usePortal: PropTypes.bool.description("usePortal")
104
104
  };
105
+ DSOverlay.propTypes = DSOverlayPropTypes;
106
+ const DSOverlayWithSchema = describe(DSOverlay);
107
+ DSOverlayWithSchema.propTypes = DSOverlayPropTypes;
105
108
  var DSOverlay_default = DSOverlay;
106
109
  export {
107
110
  DSOverlay,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/DSOverlay.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { PropTypes } from '@elliemae/ds-utilities';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport DSBackdrop from '@elliemae/ds-backdrop';\nimport DSPortal from '@elliemae/ds-portal';\n\nconst blockName = 'overlay';\n\nconst events = ['mousedown', 'touchstart'];\n\nconst OverlayContainer = aggregatedClasses('div')(blockName, null, ({ usePortal, isOpen }) => ({\n inline: !usePortal,\n opened: isOpen,\n}));\n\nclass DSOverlay extends Component {\n static overlayStack = [];\n\n static defaultProps = {\n isOpen: false,\n usePortal: true,\n hasBackdrop: false,\n backDropZIndex: 2, // https://jira.elliemae.io/browse/PUI-1712\n onClickOutside: () => null,\n };\n\n constructor(props) {\n super(props);\n this.overlayRef = React.createRef();\n\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const { isOpen } = this.props;\n if (isOpen !== prevProps.isOpen) {\n if (isOpen) {\n this.openOverlay();\n } else {\n this.closeOverlay();\n }\n }\n }\n\n addClickOutsideListeners() {\n events.forEach((event) => {\n document.addEventListener(event, this.handleDocumentClick);\n });\n }\n\n removeClickOutsideListeners() {\n events.forEach((event) => {\n document.removeEventListener(event, this.handleDocumentClick);\n });\n }\n\n handleDocumentClick(e) {\n const { onClickOutside, isOpen } = this.props;\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n const hasClickedOverlay = overlayStack.slice(overlayIndex).some(({ overlayRef }) => {\n const elem = overlayRef.current;\n return elem && elem.contains(e.target) && !elem.isSameNode(e.target);\n });\n\n if (isOpen && !hasClickedOverlay) {\n onClickOutside(e); // giving opportunity for callers to operate on the event.\n }\n }\n\n openOverlay() {\n this.addClickOutsideListeners();\n DSOverlay.overlayStack.push(this);\n }\n\n closeOverlay() {\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n this.removeClickOutsideListeners();\n overlayStack.splice(overlayIndex, 1);\n }\n\n render() {\n const { usePortal, isOpen, hasBackdrop, children, backDropZIndex, style = {} } = this.props;\n\n if (!isOpen) return null;\n\n const overlay = (\n <OverlayContainer\n style={{\n zIndex: 3000,\n ...style,\n }}\n classProps={{ usePortal, isOpen }}\n innerRef={this.overlayRef}\n >\n {hasBackdrop && <DSBackdrop zIndex={backDropZIndex} />}\n {children}\n </OverlayContainer>\n );\n\n if (usePortal) {\n return <DSPortal>{overlay}</DSPortal>;\n }\n\n return overlay;\n }\n}\n\nDSOverlay.propTypes = {\n backDropZIndex: PropTypes.number,\n children: PropTypes.element,\n hasBackdrop: PropTypes.bool,\n isOpen: PropTypes.bool,\n onClickOutside: PropTypes.func,\n usePortal: PropTypes.bool,\n};\n\nexport { DSOverlay };\nexport default DSOverlay;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { PropTypes, describe } from '@elliemae/ds-utilities';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport DSBackdrop from '@elliemae/ds-backdrop';\nimport DSPortal from '@elliemae/ds-portal';\n\nconst blockName = 'overlay';\n\nconst events = ['mousedown', 'touchstart'];\n\nconst OverlayContainer = aggregatedClasses('div')(blockName, null, ({ usePortal, isOpen }) => ({\n inline: !usePortal,\n opened: isOpen,\n}));\n\nclass DSOverlay extends Component {\n static overlayStack = [];\n\n static defaultProps = {\n isOpen: false,\n usePortal: true,\n hasBackdrop: false,\n backDropZIndex: 2, // https://jira.elliemae.io/browse/PUI-1712\n onClickOutside: () => null,\n };\n\n constructor(props) {\n super(props);\n this.overlayRef = React.createRef();\n\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const { isOpen } = this.props;\n if (isOpen !== prevProps.isOpen) {\n if (isOpen) {\n this.openOverlay();\n } else {\n this.closeOverlay();\n }\n }\n }\n\n addClickOutsideListeners() {\n events.forEach((event) => {\n document.addEventListener(event, this.handleDocumentClick);\n });\n }\n\n removeClickOutsideListeners() {\n events.forEach((event) => {\n document.removeEventListener(event, this.handleDocumentClick);\n });\n }\n\n handleDocumentClick(e) {\n const { onClickOutside, isOpen } = this.props;\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n const hasClickedOverlay = overlayStack.slice(overlayIndex).some(({ overlayRef }) => {\n const elem = overlayRef.current;\n return elem && elem.contains(e.target) && !elem.isSameNode(e.target);\n });\n\n if (isOpen && !hasClickedOverlay) {\n onClickOutside(e); // giving opportunity for callers to operate on the event.\n }\n }\n\n openOverlay() {\n this.addClickOutsideListeners();\n DSOverlay.overlayStack.push(this);\n }\n\n closeOverlay() {\n const { overlayStack } = DSOverlay;\n const overlayIndex = overlayStack.indexOf(this);\n this.removeClickOutsideListeners();\n overlayStack.splice(overlayIndex, 1);\n }\n\n render() {\n const { usePortal, isOpen, hasBackdrop, children, backDropZIndex, style = {} } = this.props;\n\n if (!isOpen) return null;\n\n const overlay = (\n <OverlayContainer\n style={{\n zIndex: 3000,\n ...style,\n }}\n classProps={{ usePortal, isOpen }}\n innerRef={this.overlayRef}\n >\n {hasBackdrop && <DSBackdrop zIndex={backDropZIndex} />}\n {children}\n </OverlayContainer>\n );\n\n if (usePortal) {\n return <DSPortal>{overlay}</DSPortal>;\n }\n\n return overlay;\n }\n}\n\nconst DSOverlayPropTypes = {\n backDropZIndex: PropTypes.number.description('backDropZIndex'),\n children: PropTypes.element.description('children'),\n hasBackdrop: PropTypes.bool.description('hasBackdrop'),\n isOpen: PropTypes.bool.description('isOpen'),\n onClickOutside: PropTypes.func.description('onClickOutside'),\n usePortal: PropTypes.bool.description('usePortal'),\n};\n\nDSOverlay.propTypes = DSOverlayPropTypes;\n\nconst DSOverlayWithSchema = describe(DSOverlay);\nDSOverlayWithSchema.propTypes = DSOverlayPropTypes;\n\nexport { DSOverlay };\nexport default DSOverlay;\n"],
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-overlay",
3
- "version": "3.8.0-rc.4",
3
+ "version": "3.9.0-next.0",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Overlay",
6
6
  "files": [
@@ -39,10 +39,10 @@
39
39
  "indent": 4
40
40
  },
41
41
  "dependencies": {
42
- "@elliemae/ds-backdrop": "3.8.0-rc.4",
43
- "@elliemae/ds-classnames": "3.8.0-rc.4",
44
- "@elliemae/ds-portal": "3.8.0-rc.4",
45
- "@elliemae/ds-utilities": "3.8.0-rc.4"
42
+ "@elliemae/ds-backdrop": "3.9.0-next.0",
43
+ "@elliemae/ds-classnames": "3.9.0-next.0",
44
+ "@elliemae/ds-portal": "3.9.0-next.0",
45
+ "@elliemae/ds-utilities": "3.9.0-next.0"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "react": "^17.0.2",