@elliemae/ds-overlay 3.0.0-next.2 → 3.0.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/DSOverlay.js +134 -0
- package/dist/cjs/DSOverlay.js.map +7 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/esm/DSOverlay.js +105 -0
- package/dist/esm/DSOverlay.js.map +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +7 -0
- package/package.json +29 -20
- package/cjs/DSOverlay.js +0 -143
- package/cjs/index.js +0 -10
- package/esm/DSOverlay.js +0 -131
- package/esm/index.js +0 -1
- package/types/DSOverlay.d.ts +0 -21
- package/types/index.d.ts +0 -2
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
16
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (module2, isNodeMode) => {
|
|
21
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
24
|
+
return (module2, temp) => {
|
|
25
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
|
+
};
|
|
27
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
+
var DSOverlay_exports = {};
|
|
29
|
+
__export(DSOverlay_exports, {
|
|
30
|
+
DSOverlay: () => DSOverlay,
|
|
31
|
+
default: () => DSOverlay_default
|
|
32
|
+
});
|
|
33
|
+
var React = __toESM(require("react"));
|
|
34
|
+
var import_react = __toESM(require("react"));
|
|
35
|
+
var import_prop_types = __toESM(require("prop-types"));
|
|
36
|
+
var import_ds_classnames = require("@elliemae/ds-classnames");
|
|
37
|
+
var import_ds_backdrop = __toESM(require("@elliemae/ds-backdrop"));
|
|
38
|
+
var import_ds_portal = __toESM(require("@elliemae/ds-portal"));
|
|
39
|
+
const blockName = "overlay";
|
|
40
|
+
const events = ["mousedown", "touchstart"];
|
|
41
|
+
const OverlayContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, null, ({ usePortal, isOpen }) => ({
|
|
42
|
+
inline: !usePortal,
|
|
43
|
+
opened: isOpen
|
|
44
|
+
}));
|
|
45
|
+
const _DSOverlay = class extends import_react.Component {
|
|
46
|
+
constructor(props) {
|
|
47
|
+
super(props);
|
|
48
|
+
this.overlayRef = import_react.default.createRef();
|
|
49
|
+
this.handleDocumentClick = this.handleDocumentClick.bind(this);
|
|
50
|
+
}
|
|
51
|
+
componentDidUpdate(prevProps) {
|
|
52
|
+
const { isOpen } = this.props;
|
|
53
|
+
if (isOpen !== prevProps.isOpen) {
|
|
54
|
+
if (isOpen) {
|
|
55
|
+
this.openOverlay();
|
|
56
|
+
} else {
|
|
57
|
+
this.closeOverlay();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
addClickOutsideListeners() {
|
|
62
|
+
events.forEach((event) => {
|
|
63
|
+
document.addEventListener(event, this.handleDocumentClick);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
removeClickOutsideListeners() {
|
|
67
|
+
events.forEach((event) => {
|
|
68
|
+
document.removeEventListener(event, this.handleDocumentClick);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
handleDocumentClick(e) {
|
|
72
|
+
const { onClickOutside, isOpen } = this.props;
|
|
73
|
+
const { overlayStack } = _DSOverlay;
|
|
74
|
+
const overlayIndex = overlayStack.indexOf(this);
|
|
75
|
+
const hasClickedOverlay = overlayStack.slice(overlayIndex).some(({ overlayRef }) => {
|
|
76
|
+
const elem = overlayRef.current;
|
|
77
|
+
return elem && elem.contains(e.target) && !elem.isSameNode(e.target);
|
|
78
|
+
});
|
|
79
|
+
if (isOpen && !hasClickedOverlay) {
|
|
80
|
+
onClickOutside(e);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
openOverlay() {
|
|
84
|
+
this.addClickOutsideListeners();
|
|
85
|
+
_DSOverlay.overlayStack.push(this);
|
|
86
|
+
}
|
|
87
|
+
closeOverlay() {
|
|
88
|
+
const { overlayStack } = _DSOverlay;
|
|
89
|
+
const overlayIndex = overlayStack.indexOf(this);
|
|
90
|
+
this.removeClickOutsideListeners();
|
|
91
|
+
overlayStack.splice(overlayIndex, 1);
|
|
92
|
+
}
|
|
93
|
+
render() {
|
|
94
|
+
const {
|
|
95
|
+
usePortal,
|
|
96
|
+
isOpen,
|
|
97
|
+
hasBackdrop,
|
|
98
|
+
children,
|
|
99
|
+
backDropZIndex
|
|
100
|
+
} = this.props;
|
|
101
|
+
if (!isOpen)
|
|
102
|
+
return null;
|
|
103
|
+
const overlay = /* @__PURE__ */ import_react.default.createElement(OverlayContainer, {
|
|
104
|
+
classProps: { usePortal, isOpen },
|
|
105
|
+
innerRef: this.overlayRef
|
|
106
|
+
}, hasBackdrop && /* @__PURE__ */ import_react.default.createElement(import_ds_backdrop.default, {
|
|
107
|
+
zIndex: backDropZIndex
|
|
108
|
+
}), children);
|
|
109
|
+
if (usePortal) {
|
|
110
|
+
return /* @__PURE__ */ import_react.default.createElement(import_ds_portal.default, null, overlay);
|
|
111
|
+
}
|
|
112
|
+
return overlay;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
let DSOverlay = _DSOverlay;
|
|
116
|
+
DSOverlay.overlayStack = [];
|
|
117
|
+
DSOverlay.defaultProps = {
|
|
118
|
+
isOpen: false,
|
|
119
|
+
usePortal: true,
|
|
120
|
+
hasBackdrop: false,
|
|
121
|
+
backDropZIndex: 2,
|
|
122
|
+
onClickOutside: () => null
|
|
123
|
+
};
|
|
124
|
+
DSOverlay.propTypes = {
|
|
125
|
+
backDropZIndex: import_prop_types.default.number,
|
|
126
|
+
children: import_prop_types.default.element,
|
|
127
|
+
hasBackdrop: import_prop_types.default.bool,
|
|
128
|
+
isOpen: import_prop_types.default.bool,
|
|
129
|
+
onClickOutside: import_prop_types.default.func,
|
|
130
|
+
usePortal: import_prop_types.default.bool
|
|
131
|
+
};
|
|
132
|
+
var DSOverlay_default = DSOverlay;
|
|
133
|
+
module.exports = __toCommonJS(DSOverlay_exports);
|
|
134
|
+
//# sourceMappingURL=DSOverlay.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 'prop-types';\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')(\n blockName,\n null,\n ({ usePortal, isOpen }) => ({\n inline: !usePortal,\n opened: isOpen,\n }),\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 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\n .slice(overlayIndex)\n .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 {\n usePortal,\n isOpen,\n hasBackdrop,\n children,\n backDropZIndex,\n } = this.props;\n\n if (!isOpen) return null;\n\n const overlay = (\n <OverlayContainer\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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAAiC;AACjC,wBAAsB;AACtB,2BAAkC;AAClC,yBAAuB;AACvB,uBAAqB;AAErB,MAAM,YAAY;AAElB,MAAM,SAAS,CAAC,aAAa;AAE7B,MAAM,mBAAmB,4CAAkB,OACzC,WACA,MACA,CAAC,EAAE,WAAW,aAAc;AAAA,EAC1B,QAAQ,CAAC;AAAA,EACT,QAAQ;AAAA;AAIZ,iCAAwB,uBAAU;AAAA,EAUhC,YAAY,OAAO;AACjB,UAAM;AACN,SAAK,aAAa,qBAAM;AAExB,SAAK,sBAAsB,KAAK,oBAAoB,KAAK;AAAA;AAAA,EAG3D,mBAAmB,WAAW;AAC5B,UAAM,EAAE,WAAW,KAAK;AACxB,QAAI,WAAW,UAAU,QAAQ;AAC/B,UAAI,QAAQ;AACV,aAAK;AAAA,aACA;AACL,aAAK;AAAA;AAAA;AAAA;AAAA,EAKX,2BAA2B;AACzB,WAAO,QAAQ,CAAC,UAAU;AACxB,eAAS,iBAAiB,OAAO,KAAK;AAAA;AAAA;AAAA,EAI1C,8BAA8B;AAC5B,WAAO,QAAQ,CAAC,UAAU;AACxB,eAAS,oBAAoB,OAAO,KAAK;AAAA;AAAA;AAAA,EAI7C,oBAAoB,GAAG;AACrB,UAAM,EAAE,gBAAgB,WAAW,KAAK;AACxC,UAAM,EAAE,iBAAiB;AACzB,UAAM,eAAe,aAAa,QAAQ;AAC1C,UAAM,oBAAoB,aACvB,MAAM,cACN,KAAK,CAAC,EAAE,iBAAiB;AACxB,YAAM,OAAO,WAAW;AACxB,aAAO,QAAQ,KAAK,SAAS,EAAE,WAAW,CAAC,KAAK,WAAW,EAAE;AAAA;AAGjE,QAAI,UAAU,CAAC,mBAAmB;AAChC,qBAAe;AAAA;AAAA;AAAA,EAInB,cAAc;AACZ,SAAK;AACL,eAAU,aAAa,KAAK;AAAA;AAAA,EAG9B,eAAe;AACb,UAAM,EAAE,iBAAiB;AACzB,UAAM,eAAe,aAAa,QAAQ;AAC1C,SAAK;AACL,iBAAa,OAAO,cAAc;AAAA;AAAA,EAGpC,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,KAAK;AAET,QAAI,CAAC;AAAQ,aAAO;AAEpB,UAAM,UACJ,mDAAC,kBAAD;AAAA,MACE,YAAY,EAAE,WAAW;AAAA,MACzB,UAAU,KAAK;AAAA,OAEd,eAAe,mDAAC,4BAAD;AAAA,MAAY,QAAQ;AAAA,QACnC;AAIL,QAAI,WAAW;AACb,aAAO,mDAAC,0BAAD,MAAW;AAAA;AAGpB,WAAO;AAAA;AAAA;AA7FX;AACS,AADT,UACS,eAAe;AAEf,AAHT,UAGS,eAAe;AAAA,EACpB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,gBAAgB,MAAM;AAAA;AAyF1B,UAAU,YAAY;AAAA,EACpB,gBAAgB,0BAAU;AAAA,EAC1B,UAAU,0BAAU;AAAA,EACpB,aAAa,0BAAU;AAAA,EACvB,QAAQ,0BAAU;AAAA,EAClB,gBAAgB,0BAAU;AAAA,EAC1B,WAAW,0BAAU;AAAA;AAIvB,IAAO,oBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
16
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (module2, isNodeMode) => {
|
|
21
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
24
|
+
return (module2, temp) => {
|
|
25
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
|
+
};
|
|
27
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
+
var src_exports = {};
|
|
29
|
+
__export(src_exports, {
|
|
30
|
+
default: () => import_DSOverlay.default
|
|
31
|
+
});
|
|
32
|
+
var React = __toESM(require("react"));
|
|
33
|
+
__reExport(src_exports, require("./DSOverlay"));
|
|
34
|
+
var import_DSOverlay = __toESM(require("./DSOverlay"));
|
|
35
|
+
module.exports = __toCommonJS(src_exports);
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["export * from './DSOverlay';\nexport { default } from './DSOverlay';\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,wBAAc;AACd,uBAAwB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import React2, { Component } from "react";
|
|
3
|
+
import PropTypes from "prop-types";
|
|
4
|
+
import { aggregatedClasses } from "@elliemae/ds-classnames";
|
|
5
|
+
import DSBackdrop from "@elliemae/ds-backdrop";
|
|
6
|
+
import DSPortal from "@elliemae/ds-portal";
|
|
7
|
+
const blockName = "overlay";
|
|
8
|
+
const events = ["mousedown", "touchstart"];
|
|
9
|
+
const OverlayContainer = aggregatedClasses("div")(blockName, null, ({ usePortal, isOpen }) => ({
|
|
10
|
+
inline: !usePortal,
|
|
11
|
+
opened: isOpen
|
|
12
|
+
}));
|
|
13
|
+
const _DSOverlay = class extends Component {
|
|
14
|
+
constructor(props) {
|
|
15
|
+
super(props);
|
|
16
|
+
this.overlayRef = React2.createRef();
|
|
17
|
+
this.handleDocumentClick = this.handleDocumentClick.bind(this);
|
|
18
|
+
}
|
|
19
|
+
componentDidUpdate(prevProps) {
|
|
20
|
+
const { isOpen } = this.props;
|
|
21
|
+
if (isOpen !== prevProps.isOpen) {
|
|
22
|
+
if (isOpen) {
|
|
23
|
+
this.openOverlay();
|
|
24
|
+
} else {
|
|
25
|
+
this.closeOverlay();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
addClickOutsideListeners() {
|
|
30
|
+
events.forEach((event) => {
|
|
31
|
+
document.addEventListener(event, this.handleDocumentClick);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
removeClickOutsideListeners() {
|
|
35
|
+
events.forEach((event) => {
|
|
36
|
+
document.removeEventListener(event, this.handleDocumentClick);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
handleDocumentClick(e) {
|
|
40
|
+
const { onClickOutside, isOpen } = this.props;
|
|
41
|
+
const { overlayStack } = _DSOverlay;
|
|
42
|
+
const overlayIndex = overlayStack.indexOf(this);
|
|
43
|
+
const hasClickedOverlay = overlayStack.slice(overlayIndex).some(({ overlayRef }) => {
|
|
44
|
+
const elem = overlayRef.current;
|
|
45
|
+
return elem && elem.contains(e.target) && !elem.isSameNode(e.target);
|
|
46
|
+
});
|
|
47
|
+
if (isOpen && !hasClickedOverlay) {
|
|
48
|
+
onClickOutside(e);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
openOverlay() {
|
|
52
|
+
this.addClickOutsideListeners();
|
|
53
|
+
_DSOverlay.overlayStack.push(this);
|
|
54
|
+
}
|
|
55
|
+
closeOverlay() {
|
|
56
|
+
const { overlayStack } = _DSOverlay;
|
|
57
|
+
const overlayIndex = overlayStack.indexOf(this);
|
|
58
|
+
this.removeClickOutsideListeners();
|
|
59
|
+
overlayStack.splice(overlayIndex, 1);
|
|
60
|
+
}
|
|
61
|
+
render() {
|
|
62
|
+
const {
|
|
63
|
+
usePortal,
|
|
64
|
+
isOpen,
|
|
65
|
+
hasBackdrop,
|
|
66
|
+
children,
|
|
67
|
+
backDropZIndex
|
|
68
|
+
} = this.props;
|
|
69
|
+
if (!isOpen)
|
|
70
|
+
return null;
|
|
71
|
+
const overlay = /* @__PURE__ */ React2.createElement(OverlayContainer, {
|
|
72
|
+
classProps: { usePortal, isOpen },
|
|
73
|
+
innerRef: this.overlayRef
|
|
74
|
+
}, hasBackdrop && /* @__PURE__ */ React2.createElement(DSBackdrop, {
|
|
75
|
+
zIndex: backDropZIndex
|
|
76
|
+
}), children);
|
|
77
|
+
if (usePortal) {
|
|
78
|
+
return /* @__PURE__ */ React2.createElement(DSPortal, null, overlay);
|
|
79
|
+
}
|
|
80
|
+
return overlay;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
let DSOverlay = _DSOverlay;
|
|
84
|
+
DSOverlay.overlayStack = [];
|
|
85
|
+
DSOverlay.defaultProps = {
|
|
86
|
+
isOpen: false,
|
|
87
|
+
usePortal: true,
|
|
88
|
+
hasBackdrop: false,
|
|
89
|
+
backDropZIndex: 2,
|
|
90
|
+
onClickOutside: () => null
|
|
91
|
+
};
|
|
92
|
+
DSOverlay.propTypes = {
|
|
93
|
+
backDropZIndex: PropTypes.number,
|
|
94
|
+
children: PropTypes.element,
|
|
95
|
+
hasBackdrop: PropTypes.bool,
|
|
96
|
+
isOpen: PropTypes.bool,
|
|
97
|
+
onClickOutside: PropTypes.func,
|
|
98
|
+
usePortal: PropTypes.bool
|
|
99
|
+
};
|
|
100
|
+
var DSOverlay_default = DSOverlay;
|
|
101
|
+
export {
|
|
102
|
+
DSOverlay,
|
|
103
|
+
DSOverlay_default as default
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=DSOverlay.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 'prop-types';\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')(\n blockName,\n null,\n ({ usePortal, isOpen }) => ({\n inline: !usePortal,\n opened: isOpen,\n }),\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 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\n .slice(overlayIndex)\n .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 {\n usePortal,\n isOpen,\n hasBackdrop,\n children,\n backDropZIndex,\n } = this.props;\n\n if (!isOpen) return null;\n\n const overlay = (\n <OverlayContainer\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": "AAAA;ACCA;AACA;AACA;AACA;AACA;AAEA,MAAM,YAAY;AAElB,MAAM,SAAS,CAAC,aAAa;AAE7B,MAAM,mBAAmB,kBAAkB,OACzC,WACA,MACA,CAAC,EAAE,WAAW,aAAc;AAAA,EAC1B,QAAQ,CAAC;AAAA,EACT,QAAQ;AAAA;AAIZ,iCAAwB,UAAU;AAAA,EAUhC,YAAY,OAAO;AACjB,UAAM;AACN,SAAK,aAAa,OAAM;AAExB,SAAK,sBAAsB,KAAK,oBAAoB,KAAK;AAAA;AAAA,EAG3D,mBAAmB,WAAW;AAC5B,UAAM,EAAE,WAAW,KAAK;AACxB,QAAI,WAAW,UAAU,QAAQ;AAC/B,UAAI,QAAQ;AACV,aAAK;AAAA,aACA;AACL,aAAK;AAAA;AAAA;AAAA;AAAA,EAKX,2BAA2B;AACzB,WAAO,QAAQ,CAAC,UAAU;AACxB,eAAS,iBAAiB,OAAO,KAAK;AAAA;AAAA;AAAA,EAI1C,8BAA8B;AAC5B,WAAO,QAAQ,CAAC,UAAU;AACxB,eAAS,oBAAoB,OAAO,KAAK;AAAA;AAAA;AAAA,EAI7C,oBAAoB,GAAG;AACrB,UAAM,EAAE,gBAAgB,WAAW,KAAK;AACxC,UAAM,EAAE,iBAAiB;AACzB,UAAM,eAAe,aAAa,QAAQ;AAC1C,UAAM,oBAAoB,aACvB,MAAM,cACN,KAAK,CAAC,EAAE,iBAAiB;AACxB,YAAM,OAAO,WAAW;AACxB,aAAO,QAAQ,KAAK,SAAS,EAAE,WAAW,CAAC,KAAK,WAAW,EAAE;AAAA;AAGjE,QAAI,UAAU,CAAC,mBAAmB;AAChC,qBAAe;AAAA;AAAA;AAAA,EAInB,cAAc;AACZ,SAAK;AACL,eAAU,aAAa,KAAK;AAAA;AAAA,EAG9B,eAAe;AACb,UAAM,EAAE,iBAAiB;AACzB,UAAM,eAAe,aAAa,QAAQ;AAC1C,SAAK;AACL,iBAAa,OAAO,cAAc;AAAA;AAAA,EAGpC,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,KAAK;AAET,QAAI,CAAC;AAAQ,aAAO;AAEpB,UAAM,UACJ,qCAAC,kBAAD;AAAA,MACE,YAAY,EAAE,WAAW;AAAA,MACzB,UAAU,KAAK;AAAA,OAEd,eAAe,qCAAC,YAAD;AAAA,MAAY,QAAQ;AAAA,QACnC;AAIL,QAAI,WAAW;AACb,aAAO,qCAAC,UAAD,MAAW;AAAA;AAGpB,WAAO;AAAA;AAAA;AA7FX;AACS,AADT,UACS,eAAe;AAEf,AAHT,UAGS,eAAe;AAAA,EACpB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,gBAAgB,MAAM;AAAA;AAyF1B,UAAU,YAAY;AAAA,EACpB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,QAAQ,UAAU;AAAA,EAClB,gBAAgB,UAAU;AAAA,EAC1B,WAAW,UAAU;AAAA;AAIvB,IAAO,oBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './DSOverlay';\nexport { default } from './DSOverlay';\n"],
|
|
5
|
+
"mappings": "AAAA;ACAA;AACA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-overlay",
|
|
3
|
-
"version": "3.0.0-next.
|
|
3
|
+
"version": "3.0.0-next.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - Overlay",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"module": "./dist/esm/index.js",
|
|
10
|
+
"main": "./dist/cjs/index.js",
|
|
11
|
+
"types": "./dist/types/index.d.ts",
|
|
9
12
|
"exports": {
|
|
10
13
|
".": {
|
|
11
|
-
"import": "./esm/index.js",
|
|
12
|
-
"require": "./cjs/index.js"
|
|
14
|
+
"import": "./dist/esm/index.js",
|
|
15
|
+
"require": "./dist/cjs/index.js"
|
|
13
16
|
},
|
|
14
17
|
"./DSOverlay": {
|
|
15
|
-
"import": "./esm/DSOverlay.js",
|
|
16
|
-
"require": "./cjs/DSOverlay.js"
|
|
18
|
+
"import": "./dist/esm/DSOverlay.js",
|
|
19
|
+
"require": "./dist/cjs/DSOverlay.js"
|
|
17
20
|
}
|
|
18
21
|
},
|
|
19
22
|
"sideEffects": [
|
|
@@ -25,20 +28,20 @@
|
|
|
25
28
|
"url": "https://git.elliemae.io/platform-ui/dimsum.git"
|
|
26
29
|
},
|
|
27
30
|
"engines": {
|
|
28
|
-
"
|
|
29
|
-
"node": ">=
|
|
31
|
+
"pnpm": ">=6",
|
|
32
|
+
"node": ">=16"
|
|
30
33
|
},
|
|
31
34
|
"author": "ICE MT",
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
35
|
+
"jestSonar": {
|
|
36
|
+
"sonar56x": true,
|
|
37
|
+
"reportPath": "reports",
|
|
38
|
+
"reportFile": "tests.xml",
|
|
39
|
+
"indent": 4
|
|
37
40
|
},
|
|
38
41
|
"dependencies": {
|
|
39
|
-
"@elliemae/ds-backdrop": "3.0.0-next.
|
|
40
|
-
"@elliemae/ds-classnames": "3.0.0-next.
|
|
41
|
-
"@elliemae/ds-portal": "3.0.0-next.
|
|
42
|
+
"@elliemae/ds-backdrop": "3.0.0-next.6",
|
|
43
|
+
"@elliemae/ds-classnames": "3.0.0-next.6",
|
|
44
|
+
"@elliemae/ds-portal": "3.0.0-next.6",
|
|
42
45
|
"prop-types": "~15.7.2"
|
|
43
46
|
},
|
|
44
47
|
"peerDependencies": {
|
|
@@ -47,7 +50,13 @@
|
|
|
47
50
|
},
|
|
48
51
|
"publishConfig": {
|
|
49
52
|
"access": "public",
|
|
50
|
-
"
|
|
51
|
-
|
|
53
|
+
"typeSafety": false
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"dev": "cross-env NODE_ENV=development node ../../scripts/build/build.mjs --watch",
|
|
57
|
+
"test": "node ../../scripts/testing/test.mjs",
|
|
58
|
+
"lint": "node ../../scripts/lint.mjs",
|
|
59
|
+
"dts": "node ../../scripts/dts.mjs",
|
|
60
|
+
"build": "cross-env NODE_ENV=production node ../../scripts/build/build.mjs"
|
|
52
61
|
}
|
|
53
62
|
}
|
package/cjs/DSOverlay.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/esnext.async-iterator.some.js');
|
|
7
|
-
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
|
-
require('core-js/modules/esnext.iterator.some.js');
|
|
9
|
-
var React = require('react');
|
|
10
|
-
var dsClassnames = require('@elliemae/ds-classnames');
|
|
11
|
-
var DSBackdrop = require('@elliemae/ds-backdrop');
|
|
12
|
-
var DSPortal = require('@elliemae/ds-portal');
|
|
13
|
-
|
|
14
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
|
-
|
|
16
|
-
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
17
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
18
|
-
var DSBackdrop__default = /*#__PURE__*/_interopDefaultLegacy(DSBackdrop);
|
|
19
|
-
var DSPortal__default = /*#__PURE__*/_interopDefaultLegacy(DSPortal);
|
|
20
|
-
|
|
21
|
-
const blockName = 'overlay';
|
|
22
|
-
const events = ['mousedown', 'touchstart'];
|
|
23
|
-
const OverlayContainer = dsClassnames.aggregatedClasses('div')(blockName, null, _ref => {
|
|
24
|
-
let {
|
|
25
|
-
usePortal,
|
|
26
|
-
isOpen
|
|
27
|
-
} = _ref;
|
|
28
|
-
return {
|
|
29
|
-
inline: !usePortal,
|
|
30
|
-
opened: isOpen
|
|
31
|
-
};
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
class DSOverlay extends React.Component {
|
|
35
|
-
constructor(props) {
|
|
36
|
-
super(props);
|
|
37
|
-
this.overlayRef = /*#__PURE__*/React__default["default"].createRef();
|
|
38
|
-
this.handleDocumentClick = this.handleDocumentClick.bind(this);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
componentDidUpdate(prevProps) {
|
|
42
|
-
const {
|
|
43
|
-
isOpen
|
|
44
|
-
} = this.props;
|
|
45
|
-
|
|
46
|
-
if (isOpen !== prevProps.isOpen) {
|
|
47
|
-
if (isOpen) {
|
|
48
|
-
this.openOverlay();
|
|
49
|
-
} else {
|
|
50
|
-
this.closeOverlay();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
addClickOutsideListeners() {
|
|
56
|
-
events.forEach(event => {
|
|
57
|
-
document.addEventListener(event, this.handleDocumentClick);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
removeClickOutsideListeners() {
|
|
62
|
-
events.forEach(event => {
|
|
63
|
-
document.removeEventListener(event, this.handleDocumentClick);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
handleDocumentClick(e) {
|
|
68
|
-
const {
|
|
69
|
-
onClickOutside,
|
|
70
|
-
isOpen
|
|
71
|
-
} = this.props;
|
|
72
|
-
const {
|
|
73
|
-
overlayStack
|
|
74
|
-
} = DSOverlay;
|
|
75
|
-
const overlayIndex = overlayStack.indexOf(this);
|
|
76
|
-
const hasClickedOverlay = overlayStack.slice(overlayIndex).some(_ref2 => {
|
|
77
|
-
let {
|
|
78
|
-
overlayRef
|
|
79
|
-
} = _ref2;
|
|
80
|
-
const elem = overlayRef.current;
|
|
81
|
-
return elem && elem.contains(e.target) && !elem.isSameNode(e.target);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
if (isOpen && !hasClickedOverlay) {
|
|
85
|
-
onClickOutside(e); // giving opportunity for callers to operate on the event.
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
openOverlay() {
|
|
90
|
-
this.addClickOutsideListeners();
|
|
91
|
-
DSOverlay.overlayStack.push(this);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
closeOverlay() {
|
|
95
|
-
const {
|
|
96
|
-
overlayStack
|
|
97
|
-
} = DSOverlay;
|
|
98
|
-
const overlayIndex = overlayStack.indexOf(this);
|
|
99
|
-
this.removeClickOutsideListeners();
|
|
100
|
-
overlayStack.splice(overlayIndex, 1);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
render() {
|
|
104
|
-
const {
|
|
105
|
-
usePortal,
|
|
106
|
-
isOpen,
|
|
107
|
-
hasBackdrop,
|
|
108
|
-
children,
|
|
109
|
-
backDropZIndex
|
|
110
|
-
} = this.props;
|
|
111
|
-
if (!isOpen) return null;
|
|
112
|
-
|
|
113
|
-
const overlay = /*#__PURE__*/_jsx__default["default"](OverlayContainer, {
|
|
114
|
-
classProps: {
|
|
115
|
-
usePortal,
|
|
116
|
-
isOpen
|
|
117
|
-
},
|
|
118
|
-
innerRef: this.overlayRef
|
|
119
|
-
}, void 0, hasBackdrop && /*#__PURE__*/_jsx__default["default"](DSBackdrop__default["default"], {
|
|
120
|
-
zIndex: backDropZIndex
|
|
121
|
-
}), children);
|
|
122
|
-
|
|
123
|
-
if (usePortal) {
|
|
124
|
-
return /*#__PURE__*/_jsx__default["default"](DSPortal__default["default"], {}, void 0, overlay);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return overlay;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
DSOverlay.overlayStack = [];
|
|
133
|
-
DSOverlay.defaultProps = {
|
|
134
|
-
isOpen: false,
|
|
135
|
-
usePortal: true,
|
|
136
|
-
hasBackdrop: false,
|
|
137
|
-
backDropZIndex: 2,
|
|
138
|
-
// https://jira.elliemae.io/browse/PUI-1712
|
|
139
|
-
onClickOutside: () => null
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
exports.DSOverlay = DSOverlay;
|
|
143
|
-
exports["default"] = DSOverlay;
|
package/cjs/index.js
DELETED
package/esm/DSOverlay.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
|
-
import 'core-js/modules/esnext.async-iterator.some.js';
|
|
3
|
-
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
4
|
-
import 'core-js/modules/esnext.iterator.some.js';
|
|
5
|
-
import React, { Component } from 'react';
|
|
6
|
-
import { aggregatedClasses } from '@elliemae/ds-classnames';
|
|
7
|
-
import DSBackdrop from '@elliemae/ds-backdrop';
|
|
8
|
-
import DSPortal from '@elliemae/ds-portal';
|
|
9
|
-
|
|
10
|
-
const blockName = 'overlay';
|
|
11
|
-
const events = ['mousedown', 'touchstart'];
|
|
12
|
-
const OverlayContainer = aggregatedClasses('div')(blockName, null, _ref => {
|
|
13
|
-
let {
|
|
14
|
-
usePortal,
|
|
15
|
-
isOpen
|
|
16
|
-
} = _ref;
|
|
17
|
-
return {
|
|
18
|
-
inline: !usePortal,
|
|
19
|
-
opened: isOpen
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
class DSOverlay extends Component {
|
|
24
|
-
constructor(props) {
|
|
25
|
-
super(props);
|
|
26
|
-
this.overlayRef = /*#__PURE__*/React.createRef();
|
|
27
|
-
this.handleDocumentClick = this.handleDocumentClick.bind(this);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
componentDidUpdate(prevProps) {
|
|
31
|
-
const {
|
|
32
|
-
isOpen
|
|
33
|
-
} = this.props;
|
|
34
|
-
|
|
35
|
-
if (isOpen !== prevProps.isOpen) {
|
|
36
|
-
if (isOpen) {
|
|
37
|
-
this.openOverlay();
|
|
38
|
-
} else {
|
|
39
|
-
this.closeOverlay();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
addClickOutsideListeners() {
|
|
45
|
-
events.forEach(event => {
|
|
46
|
-
document.addEventListener(event, this.handleDocumentClick);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
removeClickOutsideListeners() {
|
|
51
|
-
events.forEach(event => {
|
|
52
|
-
document.removeEventListener(event, this.handleDocumentClick);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
handleDocumentClick(e) {
|
|
57
|
-
const {
|
|
58
|
-
onClickOutside,
|
|
59
|
-
isOpen
|
|
60
|
-
} = this.props;
|
|
61
|
-
const {
|
|
62
|
-
overlayStack
|
|
63
|
-
} = DSOverlay;
|
|
64
|
-
const overlayIndex = overlayStack.indexOf(this);
|
|
65
|
-
const hasClickedOverlay = overlayStack.slice(overlayIndex).some(_ref2 => {
|
|
66
|
-
let {
|
|
67
|
-
overlayRef
|
|
68
|
-
} = _ref2;
|
|
69
|
-
const elem = overlayRef.current;
|
|
70
|
-
return elem && elem.contains(e.target) && !elem.isSameNode(e.target);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
if (isOpen && !hasClickedOverlay) {
|
|
74
|
-
onClickOutside(e); // giving opportunity for callers to operate on the event.
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
openOverlay() {
|
|
79
|
-
this.addClickOutsideListeners();
|
|
80
|
-
DSOverlay.overlayStack.push(this);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
closeOverlay() {
|
|
84
|
-
const {
|
|
85
|
-
overlayStack
|
|
86
|
-
} = DSOverlay;
|
|
87
|
-
const overlayIndex = overlayStack.indexOf(this);
|
|
88
|
-
this.removeClickOutsideListeners();
|
|
89
|
-
overlayStack.splice(overlayIndex, 1);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
render() {
|
|
93
|
-
const {
|
|
94
|
-
usePortal,
|
|
95
|
-
isOpen,
|
|
96
|
-
hasBackdrop,
|
|
97
|
-
children,
|
|
98
|
-
backDropZIndex
|
|
99
|
-
} = this.props;
|
|
100
|
-
if (!isOpen) return null;
|
|
101
|
-
|
|
102
|
-
const overlay = /*#__PURE__*/_jsx(OverlayContainer, {
|
|
103
|
-
classProps: {
|
|
104
|
-
usePortal,
|
|
105
|
-
isOpen
|
|
106
|
-
},
|
|
107
|
-
innerRef: this.overlayRef
|
|
108
|
-
}, void 0, hasBackdrop && /*#__PURE__*/_jsx(DSBackdrop, {
|
|
109
|
-
zIndex: backDropZIndex
|
|
110
|
-
}), children);
|
|
111
|
-
|
|
112
|
-
if (usePortal) {
|
|
113
|
-
return /*#__PURE__*/_jsx(DSPortal, {}, void 0, overlay);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return overlay;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
DSOverlay.overlayStack = [];
|
|
122
|
-
DSOverlay.defaultProps = {
|
|
123
|
-
isOpen: false,
|
|
124
|
-
usePortal: true,
|
|
125
|
-
hasBackdrop: false,
|
|
126
|
-
backDropZIndex: 2,
|
|
127
|
-
// https://jira.elliemae.io/browse/PUI-1712
|
|
128
|
-
onClickOutside: () => null
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
export { DSOverlay, DSOverlay as default };
|
package/esm/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { DSOverlay, DSOverlay as default } from './DSOverlay.js';
|
package/types/DSOverlay.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Component } from 'react';
|
|
2
|
-
declare class DSOverlay extends Component {
|
|
3
|
-
static overlayStack: never[];
|
|
4
|
-
static defaultProps: {
|
|
5
|
-
isOpen: boolean;
|
|
6
|
-
usePortal: boolean;
|
|
7
|
-
hasBackdrop: boolean;
|
|
8
|
-
backDropZIndex: number;
|
|
9
|
-
onClickOutside: () => null;
|
|
10
|
-
};
|
|
11
|
-
constructor(props: any);
|
|
12
|
-
componentDidUpdate(prevProps: any): void;
|
|
13
|
-
addClickOutsideListeners(): void;
|
|
14
|
-
removeClickOutsideListeners(): void;
|
|
15
|
-
handleDocumentClick(e: any): void;
|
|
16
|
-
openOverlay(): void;
|
|
17
|
-
closeOverlay(): void;
|
|
18
|
-
render(): JSX.Element | null;
|
|
19
|
-
}
|
|
20
|
-
export { DSOverlay };
|
|
21
|
-
export default DSOverlay;
|
package/types/index.d.ts
DELETED