@elliemae/ds-overlay 3.16.0-next.2 → 3.16.0-next.3

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.
@@ -31,7 +31,7 @@ module.exports = __toCommonJS(DSOverlay_exports);
31
31
  var React = __toESM(require("react"));
32
32
  var import_jsx_runtime = require("react/jsx-runtime");
33
33
  var import_react = __toESM(require("react"));
34
- var import_ds_utilities = require("@elliemae/ds-utilities");
34
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
35
35
  var import_ds_classnames = require("@elliemae/ds-classnames");
36
36
  var import_ds_backdrop = __toESM(require("@elliemae/ds-backdrop"));
37
37
  var import_ds_portal = __toESM(require("@elliemae/ds-portal"));
@@ -124,15 +124,15 @@ DSOverlay.defaultProps = {
124
124
  onClickOutside: () => null
125
125
  };
126
126
  const DSOverlayPropTypes = {
127
- backDropZIndex: import_ds_utilities.PropTypes.number.description("backDropZIndex"),
128
- children: import_ds_utilities.PropTypes.element.description("children"),
129
- hasBackdrop: import_ds_utilities.PropTypes.bool.description("hasBackdrop"),
130
- isOpen: import_ds_utilities.PropTypes.bool.description("isOpen"),
131
- onClickOutside: import_ds_utilities.PropTypes.func.description("onClickOutside"),
132
- usePortal: import_ds_utilities.PropTypes.bool.description("usePortal")
127
+ backDropZIndex: import_ds_props_helpers.PropTypes.number.description("backDropZIndex"),
128
+ children: import_ds_props_helpers.PropTypes.element.description("children"),
129
+ hasBackdrop: import_ds_props_helpers.PropTypes.bool.description("hasBackdrop"),
130
+ isOpen: import_ds_props_helpers.PropTypes.bool.description("isOpen"),
131
+ onClickOutside: import_ds_props_helpers.PropTypes.func.description("onClickOutside"),
132
+ usePortal: import_ds_props_helpers.PropTypes.bool.description("usePortal")
133
133
  };
134
134
  DSOverlay.propTypes = DSOverlayPropTypes;
135
- const DSOverlayWithSchema = (0, import_ds_utilities.describe)(DSOverlay);
135
+ const DSOverlayWithSchema = (0, import_ds_props_helpers.describe)(DSOverlay);
136
136
  DSOverlayWithSchema.propTypes = DSOverlayPropTypes;
137
137
  var DSOverlay_default = DSOverlay;
138
138
  //# 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, 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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",
4
+ "sourcesContent": ["/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { PropTypes, describe } from '@elliemae/ds-props-helpers';\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, describe } from "@elliemae/ds-utilities";
4
+ import { PropTypes, describe } from "@elliemae/ds-props-helpers";
5
5
  import { aggregatedClasses } from "@elliemae/ds-classnames";
6
6
  import DSBackdrop from "@elliemae/ds-backdrop";
7
7
  import DSPortal from "@elliemae/ds-portal";
@@ -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, 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"],
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-props-helpers';\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
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.16.0-next.2",
3
+ "version": "3.16.0-next.3",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Overlay",
6
6
  "files": [
@@ -39,10 +39,11 @@
39
39
  "indent": 4
40
40
  },
41
41
  "dependencies": {
42
- "@elliemae/ds-backdrop": "3.16.0-next.2",
43
- "@elliemae/ds-classnames": "3.16.0-next.2",
44
- "@elliemae/ds-portal": "3.16.0-next.2",
45
- "@elliemae/ds-utilities": "3.16.0-next.2"
42
+ "@elliemae/ds-backdrop": "3.16.0-next.3",
43
+ "@elliemae/ds-classnames": "3.16.0-next.3",
44
+ "@elliemae/ds-portal": "3.16.0-next.3",
45
+ "@elliemae/ds-props-helpers": "3.16.0-next.3",
46
+ "@elliemae/ds-utilities": "3.16.0-next.3"
46
47
  },
47
48
  "peerDependencies": {
48
49
  "react": "^17.0.2",
@@ -59,7 +60,7 @@
59
60
  "eslint:fix": "eslint --ext='.js,.jsx,.test.js,.ts,.tsx' --fix --config='../../.eslintrc.js' src/",
60
61
  "dts": "node ../../scripts/dts.mjs",
61
62
  "build": "cross-env NODE_ENV=production node ../../scripts/build/build.mjs",
62
- "dev:build": "pnpm --filter {.}... build && pnpm --filter {.}... dts",
63
+ "dev:build": "pnpm --filter {.}... build",
63
64
  "dev:install": "pnpm --filter {.}... i --no-lockfile && pnpm run dev:build",
64
65
  "checkDeps": "npx -yes ../ds-codemods check-missing-packages --projectFolderPath=\"./\" --ignorePackagesGlobPattern=\"\" --ignoreFilesGlobPattern=\"**/test-ables/*,**/tests/*\""
65
66
  }