@4i/modal-manager 1.0.0 → 1.0.1
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/lib/components/modal-provider.js +170 -0
- package/lib/index.js +31 -0
- package/lib/utils/config/modal-actions.js +22 -0
- package/lib/utils/config/modal-list.js +22 -0
- package/lib/utils/service/Manager.js +25 -0
- package/lib/utils/service/ModalManager.js +62 -0
- package/package.json +10 -4
- package/src/components/modal-provider.d.ts +7 -0
- package/src/components/modal-provider.js +126 -0
- package/src/components/modal-provider.tsx +24 -16
- package/src/index.d.ts +6 -0
- package/src/index.js +16 -0
- package/src/utils/config/modal-actions.d.ts +6 -0
- package/src/utils/config/modal-actions.js +20 -0
- package/src/utils/config/modal-list.d.ts +6 -0
- package/src/utils/config/modal-list.js +20 -0
- package/src/utils/config/modal-list.ts +3 -3
- package/src/utils/service/Manager.d.ts +13 -0
- package/src/utils/service/Manager.js +22 -0
- package/src/utils/service/Manager.ts +2 -0
- package/src/utils/service/ModalManager.d.ts +11 -0
- package/src/utils/service/ModalManager.js +47 -0
- package/src/utils/service/ModalManager.ts +1 -1
- package/tsconfig.json +16 -0
- package/.babelrc +0 -3
@@ -0,0 +1,170 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var __assign = void 0 && (void 0).__assign || function () {
|
4
|
+
__assign = Object.assign || function (t) {
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
6
|
+
s = arguments[i];
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
14
|
+
if (k2 === undefined) k2 = k;
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
17
|
+
desc = {
|
18
|
+
enumerable: true,
|
19
|
+
get: function get() {
|
20
|
+
return m[k];
|
21
|
+
}
|
22
|
+
};
|
23
|
+
}
|
24
|
+
Object.defineProperty(o, k2, desc);
|
25
|
+
} : function (o, m, k, k2) {
|
26
|
+
if (k2 === undefined) k2 = k;
|
27
|
+
o[k2] = m[k];
|
28
|
+
});
|
29
|
+
var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function (o, v) {
|
30
|
+
Object.defineProperty(o, "default", {
|
31
|
+
enumerable: true,
|
32
|
+
value: v
|
33
|
+
});
|
34
|
+
} : function (o, v) {
|
35
|
+
o["default"] = v;
|
36
|
+
});
|
37
|
+
var __importStar = void 0 && (void 0).__importStar || function (mod) {
|
38
|
+
if (mod && mod.__esModule) return mod;
|
39
|
+
var result = {};
|
40
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
41
|
+
__setModuleDefault(result, mod);
|
42
|
+
return result;
|
43
|
+
};
|
44
|
+
var __spreadArray = void 0 && (void 0).__spreadArray || function (to, from, pack) {
|
45
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
46
|
+
if (ar || !(i in from)) {
|
47
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
48
|
+
ar[i] = from[i];
|
49
|
+
}
|
50
|
+
}
|
51
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
52
|
+
};
|
53
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
54
|
+
return mod && mod.__esModule ? mod : {
|
55
|
+
"default": mod
|
56
|
+
};
|
57
|
+
};
|
58
|
+
Object.defineProperty(exports, "__esModule", {
|
59
|
+
value: true
|
60
|
+
});
|
61
|
+
var react_1 = __importStar(require("react"));
|
62
|
+
var ModalManager_1 = __importDefault(require("../utils/service/ModalManager"));
|
63
|
+
require("./backdrop.css");
|
64
|
+
var ModalManager_2 = __importDefault(require("../utils/service/ModalManager"));
|
65
|
+
var modal_list_1 = __importDefault(require("../utils/config/modal-list"));
|
66
|
+
var ModalProvider = function ModalProvider(_a) {
|
67
|
+
var CustomComponent = _a.CustomComponent;
|
68
|
+
var _b = (0, react_1.useState)([]),
|
69
|
+
data = _b[0],
|
70
|
+
setData = _b[1];
|
71
|
+
var _c = (0, react_1.useState)([]),
|
72
|
+
names = _c[0],
|
73
|
+
setNames = _c[1];
|
74
|
+
var modalRef = (0, react_1.useRef)([]);
|
75
|
+
(0, react_1.useEffect)(function () {
|
76
|
+
var handleOpenModal = function handleOpenModal(name, data) {
|
77
|
+
setData(function (prev) {
|
78
|
+
return __spreadArray(__spreadArray([], prev, true), [data], false);
|
79
|
+
});
|
80
|
+
setNames(function (prev) {
|
81
|
+
return __spreadArray(__spreadArray([], prev, true), [name], false);
|
82
|
+
});
|
83
|
+
};
|
84
|
+
var handleClose = function handleClose(position) {
|
85
|
+
if (position === "all") {
|
86
|
+
setData([]);
|
87
|
+
setNames([]);
|
88
|
+
return;
|
89
|
+
}
|
90
|
+
if (position === -1) {
|
91
|
+
// remove last
|
92
|
+
setData(function (prev) {
|
93
|
+
return prev.filter(function (_, index) {
|
94
|
+
return index !== prev.length - 1;
|
95
|
+
});
|
96
|
+
});
|
97
|
+
setNames(function (prev) {
|
98
|
+
return prev.filter(function (_, index) {
|
99
|
+
return index !== prev.length - 1;
|
100
|
+
});
|
101
|
+
});
|
102
|
+
return;
|
103
|
+
}
|
104
|
+
if (position === 0) {
|
105
|
+
// remove first
|
106
|
+
setData(function (prev) {
|
107
|
+
return prev.filter(function (_, index) {
|
108
|
+
return index !== 0;
|
109
|
+
});
|
110
|
+
});
|
111
|
+
setNames(function (prev) {
|
112
|
+
return prev.filter(function (_, index) {
|
113
|
+
return index !== 0;
|
114
|
+
});
|
115
|
+
});
|
116
|
+
return;
|
117
|
+
}
|
118
|
+
// remove position index
|
119
|
+
setData(function (prev) {
|
120
|
+
return prev.filter(function (_, index) {
|
121
|
+
return index !== prev.length - 1;
|
122
|
+
});
|
123
|
+
});
|
124
|
+
setNames(function (prev) {
|
125
|
+
return prev.filter(function (_, index) {
|
126
|
+
return index !== prev.length - 1;
|
127
|
+
});
|
128
|
+
});
|
129
|
+
};
|
130
|
+
ModalManager_1["default"].addEventListener("change", handleOpenModal);
|
131
|
+
ModalManager_1["default"].addEventListener("close", handleClose);
|
132
|
+
return function () {
|
133
|
+
ModalManager_1["default"].removeEventListener("change", handleOpenModal);
|
134
|
+
ModalManager_1["default"].removeEventListener("close", handleClose);
|
135
|
+
};
|
136
|
+
}, []);
|
137
|
+
var activeModals = names.map(function (name) {
|
138
|
+
var Component = modal_list_1["default"][name] || function () {
|
139
|
+
return react_1["default"].createElement(react_1["default"].Fragment, null);
|
140
|
+
};
|
141
|
+
return Component;
|
142
|
+
});
|
143
|
+
var handleCloseModal = function handleCloseModal(index, e) {
|
144
|
+
if (modalRef.current[index] && !modalRef.current[index].contains(e.target)) {
|
145
|
+
ModalManager_2["default"].close(index);
|
146
|
+
}
|
147
|
+
};
|
148
|
+
var refReducer = function refReducer(index, value) {
|
149
|
+
modalRef.current[index] = value;
|
150
|
+
};
|
151
|
+
return activeModals.length !== 0 && activeModals.map(function (Component, i) {
|
152
|
+
var Modal = Component;
|
153
|
+
return react_1["default"].createElement(react_1["default"].Fragment, null, CustomComponent ? react_1["default"].createElement(CustomComponent, __assign({
|
154
|
+
key: i
|
155
|
+
}, data[i])) : react_1["default"].createElement("div", {
|
156
|
+
key: i,
|
157
|
+
className: "backdrop_modal_manager",
|
158
|
+
onClick: function onClick(e) {
|
159
|
+
handleCloseModal(i, e);
|
160
|
+
}
|
161
|
+
}, react_1["default"].createElement("div", {
|
162
|
+
ref: function ref(_ref) {
|
163
|
+
refReducer(i, _ref);
|
164
|
+
}
|
165
|
+
}, react_1["default"].createElement(Modal, __assign({
|
166
|
+
key: i
|
167
|
+
}, data[i])))));
|
168
|
+
});
|
169
|
+
};
|
170
|
+
exports["default"] = ModalProvider;
|
package/lib/index.js
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
4
|
+
return mod && mod.__esModule ? mod : {
|
5
|
+
"default": mod
|
6
|
+
};
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
9
|
+
value: true
|
10
|
+
});
|
11
|
+
exports.setModalActions = exports.setModalList = exports.ModalProvider = exports.modal = exports.Manager = void 0;
|
12
|
+
var Manager_1 = __importDefault(require("./utils/service/Manager"));
|
13
|
+
exports.Manager = Manager_1["default"];
|
14
|
+
var ModalManager_1 = __importDefault(require("./utils/service/ModalManager"));
|
15
|
+
exports.modal = ModalManager_1["default"];
|
16
|
+
var modal_provider_1 = __importDefault(require("./components/modal-provider"));
|
17
|
+
exports.ModalProvider = modal_provider_1["default"];
|
18
|
+
var modal_list_1 = require("./utils/config/modal-list");
|
19
|
+
Object.defineProperty(exports, "setModalList", {
|
20
|
+
enumerable: true,
|
21
|
+
get: function get() {
|
22
|
+
return modal_list_1.setModalList;
|
23
|
+
}
|
24
|
+
});
|
25
|
+
var modal_actions_1 = require("./utils/config/modal-actions");
|
26
|
+
Object.defineProperty(exports, "setModalActions", {
|
27
|
+
enumerable: true,
|
28
|
+
get: function get() {
|
29
|
+
return modal_actions_1.setModalActions;
|
30
|
+
}
|
31
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var __assign = void 0 && (void 0).__assign || function () {
|
4
|
+
__assign = Object.assign || function (t) {
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
6
|
+
s = arguments[i];
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
Object.defineProperty(exports, "__esModule", {
|
14
|
+
value: true
|
15
|
+
});
|
16
|
+
exports.setModalActions = void 0;
|
17
|
+
var modalActions = {};
|
18
|
+
var setModalActions = function setModalActions(actionList) {
|
19
|
+
modalActions = __assign(__assign({}, modalActions), actionList);
|
20
|
+
};
|
21
|
+
exports.setModalActions = setModalActions;
|
22
|
+
exports["default"] = modalActions;
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var __assign = void 0 && (void 0).__assign || function () {
|
4
|
+
__assign = Object.assign || function (t) {
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
6
|
+
s = arguments[i];
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
Object.defineProperty(exports, "__esModule", {
|
14
|
+
value: true
|
15
|
+
});
|
16
|
+
exports.setModalList = void 0;
|
17
|
+
var modalList = {};
|
18
|
+
var setModalList = function setModalList(_modalList) {
|
19
|
+
modalList = __assign(__assign({}, modalList), _modalList);
|
20
|
+
};
|
21
|
+
exports.setModalList = setModalList;
|
22
|
+
exports["default"] = modalList;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
var events_1 = require("events");
|
7
|
+
var Constants = {
|
8
|
+
CHANGE: "change",
|
9
|
+
CLOSE: "close"
|
10
|
+
};
|
11
|
+
var Manager = /** @class */function () {
|
12
|
+
function Manager() {
|
13
|
+
this.name = "";
|
14
|
+
this.data = {};
|
15
|
+
this.emitter = new events_1.EventEmitter();
|
16
|
+
}
|
17
|
+
Manager.prototype.addEventListener = function (event, listener) {
|
18
|
+
this.emitter.addListener(event, listener);
|
19
|
+
};
|
20
|
+
Manager.prototype.removeEventListener = function (event, listener) {
|
21
|
+
this.emitter.removeListener(event, listener);
|
22
|
+
};
|
23
|
+
return Manager;
|
24
|
+
}();
|
25
|
+
exports["default"] = Manager;
|
@@ -0,0 +1,62 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var __extends = void 0 && (void 0).__extends || function () {
|
4
|
+
var _extendStatics = function extendStatics(d, b) {
|
5
|
+
_extendStatics = Object.setPrototypeOf || {
|
6
|
+
__proto__: []
|
7
|
+
} instanceof Array && function (d, b) {
|
8
|
+
d.__proto__ = b;
|
9
|
+
} || function (d, b) {
|
10
|
+
for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
|
11
|
+
};
|
12
|
+
return _extendStatics(d, b);
|
13
|
+
};
|
14
|
+
return function (d, b) {
|
15
|
+
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
16
|
+
_extendStatics(d, b);
|
17
|
+
function __() {
|
18
|
+
this.constructor = d;
|
19
|
+
}
|
20
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
21
|
+
};
|
22
|
+
}();
|
23
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
24
|
+
return mod && mod.__esModule ? mod : {
|
25
|
+
"default": mod
|
26
|
+
};
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", {
|
29
|
+
value: true
|
30
|
+
});
|
31
|
+
var Manager_1 = __importDefault(require("./Manager"));
|
32
|
+
var uuid_1 = require("uuid");
|
33
|
+
var constants = {
|
34
|
+
CHANGE: "change",
|
35
|
+
CLOSE: "close"
|
36
|
+
};
|
37
|
+
var ModalManager = /** @class */function (_super) {
|
38
|
+
__extends(ModalManager, _super);
|
39
|
+
function ModalManager() {
|
40
|
+
return _super.call(this) || this;
|
41
|
+
}
|
42
|
+
ModalManager.prototype.create = function (name, data) {
|
43
|
+
this.name = name;
|
44
|
+
this.data = data;
|
45
|
+
this.emitter.emit(constants.CHANGE);
|
46
|
+
};
|
47
|
+
ModalManager.prototype.call = function (name, data) {
|
48
|
+
if (data === void 0) {
|
49
|
+
data = {};
|
50
|
+
}
|
51
|
+
this.create(name, {
|
52
|
+
modalId: (0, uuid_1.v4)(),
|
53
|
+
data: data
|
54
|
+
});
|
55
|
+
};
|
56
|
+
ModalManager.prototype.close = function (position) {
|
57
|
+
this.emitter.emit(constants.CLOSE, position);
|
58
|
+
};
|
59
|
+
return ModalManager;
|
60
|
+
}(Manager_1["default"]);
|
61
|
+
var modal = new ModalManager();
|
62
|
+
exports["default"] = modal;
|
package/package.json
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@4i/modal-manager",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.1",
|
4
4
|
"description": "",
|
5
|
-
"main": "
|
5
|
+
"main": "lib/index.js",
|
6
6
|
"scripts": {
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1",
|
8
|
-
"build": "babel src -
|
8
|
+
"build": "npm run clean && tsc && babel src --out-dir lib",
|
9
|
+
"clean": "rm -rf lib"
|
9
10
|
},
|
10
11
|
"repository": {
|
11
12
|
"type": "git",
|
@@ -28,8 +29,13 @@
|
|
28
29
|
"devDependencies": {
|
29
30
|
"@babel/cli": "^7.23.4",
|
30
31
|
"@babel/core": "^7.23.5",
|
32
|
+
"@babel/plugin-transform-typescript": "^7.23.5",
|
31
33
|
"@babel/preset-env": "^7.23.5",
|
32
34
|
"@babel/preset-react": "^7.23.3",
|
33
|
-
"@
|
35
|
+
"@babel/preset-typescript": "^7.23.3",
|
36
|
+
"@types/node": "^20.10.2",
|
37
|
+
"@types/react": "^18.2.40",
|
38
|
+
"@types/uuid": "^9.0.7",
|
39
|
+
"typescript": "^5.3.2"
|
34
40
|
}
|
35
41
|
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import "./backdrop.css";
|
3
|
+
interface ModalProviderProps {
|
4
|
+
CustomComponent?: React.ComponentType;
|
5
|
+
}
|
6
|
+
declare const ModalProvider: ({ CustomComponent }: ModalProviderProps) => false | React.JSX.Element[];
|
7
|
+
export default ModalProvider;
|
@@ -0,0 +1,126 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
14
|
+
if (k2 === undefined) k2 = k;
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
18
|
+
}
|
19
|
+
Object.defineProperty(o, k2, desc);
|
20
|
+
}) : (function(o, m, k, k2) {
|
21
|
+
if (k2 === undefined) k2 = k;
|
22
|
+
o[k2] = m[k];
|
23
|
+
}));
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
26
|
+
}) : function(o, v) {
|
27
|
+
o["default"] = v;
|
28
|
+
});
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
30
|
+
if (mod && mod.__esModule) return mod;
|
31
|
+
var result = {};
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
33
|
+
__setModuleDefault(result, mod);
|
34
|
+
return result;
|
35
|
+
};
|
36
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
37
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
38
|
+
if (ar || !(i in from)) {
|
39
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
40
|
+
ar[i] = from[i];
|
41
|
+
}
|
42
|
+
}
|
43
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
44
|
+
};
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
47
|
+
};
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
49
|
+
var react_1 = __importStar(require("react"));
|
50
|
+
var ModalManager_1 = __importDefault(require("../utils/service/ModalManager"));
|
51
|
+
require("./backdrop.css");
|
52
|
+
var ModalManager_2 = __importDefault(require("../utils/service/ModalManager"));
|
53
|
+
var modal_list_1 = __importDefault(require("../utils/config/modal-list"));
|
54
|
+
var ModalProvider = function (_a) {
|
55
|
+
var CustomComponent = _a.CustomComponent;
|
56
|
+
var _b = (0, react_1.useState)([]), data = _b[0], setData = _b[1];
|
57
|
+
var _c = (0, react_1.useState)([]), names = _c[0], setNames = _c[1];
|
58
|
+
var modalRef = (0, react_1.useRef)([]);
|
59
|
+
(0, react_1.useEffect)(function () {
|
60
|
+
var handleOpenModal = function (name, data) {
|
61
|
+
setData(function (prev) { return __spreadArray(__spreadArray([], prev, true), [data], false); });
|
62
|
+
setNames(function (prev) { return __spreadArray(__spreadArray([], prev, true), [name], false); });
|
63
|
+
};
|
64
|
+
var handleClose = function (position) {
|
65
|
+
if (position === "all") {
|
66
|
+
setData([]);
|
67
|
+
setNames([]);
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
if (position === -1) {
|
71
|
+
// remove last
|
72
|
+
setData(function (prev) {
|
73
|
+
return prev.filter(function (_, index) { return index !== prev.length - 1; });
|
74
|
+
});
|
75
|
+
setNames(function (prev) {
|
76
|
+
return prev.filter(function (_, index) { return index !== prev.length - 1; });
|
77
|
+
});
|
78
|
+
return;
|
79
|
+
}
|
80
|
+
if (position === 0) {
|
81
|
+
// remove first
|
82
|
+
setData(function (prev) { return prev.filter(function (_, index) { return index !== 0; }); });
|
83
|
+
setNames(function (prev) { return prev.filter(function (_, index) { return index !== 0; }); });
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
// remove position index
|
87
|
+
setData(function (prev) {
|
88
|
+
return prev.filter(function (_, index) { return index !== prev.length - 1; });
|
89
|
+
});
|
90
|
+
setNames(function (prev) {
|
91
|
+
return prev.filter(function (_, index) { return index !== prev.length - 1; });
|
92
|
+
});
|
93
|
+
};
|
94
|
+
ModalManager_1.default.addEventListener("change", handleOpenModal);
|
95
|
+
ModalManager_1.default.addEventListener("close", handleClose);
|
96
|
+
return function () {
|
97
|
+
ModalManager_1.default.removeEventListener("change", handleOpenModal);
|
98
|
+
ModalManager_1.default.removeEventListener("close", handleClose);
|
99
|
+
};
|
100
|
+
}, []);
|
101
|
+
var activeModals = names.map(function (name) {
|
102
|
+
var Component = modal_list_1.default[name] || (function () { return react_1.default.createElement(react_1.default.Fragment, null); });
|
103
|
+
return Component;
|
104
|
+
});
|
105
|
+
var handleCloseModal = function (index, e) {
|
106
|
+
if (modalRef.current[index] &&
|
107
|
+
!modalRef.current[index].contains(e.target)) {
|
108
|
+
ModalManager_2.default.close(index);
|
109
|
+
}
|
110
|
+
};
|
111
|
+
var refReducer = function (index, value) {
|
112
|
+
modalRef.current[index] = value;
|
113
|
+
};
|
114
|
+
return (activeModals.length !== 0 &&
|
115
|
+
activeModals.map(function (Component, i) {
|
116
|
+
var Modal = Component;
|
117
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, CustomComponent ? (react_1.default.createElement(CustomComponent, __assign({ key: i }, data[i]))) : (react_1.default.createElement("div", { key: i, className: "backdrop_modal_manager", onClick: function (e) {
|
118
|
+
handleCloseModal(i, e);
|
119
|
+
} },
|
120
|
+
react_1.default.createElement("div", { ref: function (ref) {
|
121
|
+
refReducer(i, ref);
|
122
|
+
} },
|
123
|
+
react_1.default.createElement(Modal, __assign({ key: i }, data[i])))))));
|
124
|
+
}));
|
125
|
+
};
|
126
|
+
exports.default = ModalProvider;
|
@@ -8,18 +8,20 @@ interface ModalProviderProps {
|
|
8
8
|
CustomComponent?: React.ComponentType;
|
9
9
|
}
|
10
10
|
|
11
|
+
type TData = { [key: string]: any };
|
12
|
+
|
11
13
|
const ModalProvider = ({ CustomComponent }: ModalProviderProps) => {
|
12
|
-
const [data, setData] = useState([]);
|
13
|
-
const [names, setNames] = useState([]);
|
14
|
-
const modalRef = useRef([]);
|
14
|
+
const [data, setData] = useState<TData[]>([]);
|
15
|
+
const [names, setNames] = useState<string[]>([]);
|
16
|
+
const modalRef = useRef<any[]>([]);
|
15
17
|
|
16
18
|
useEffect(() => {
|
17
|
-
const handleOpenModal = (name, data) => {
|
18
|
-
setData((prev) => [...prev, data]);
|
19
|
-
setNames((prev) => [...prev, name]);
|
19
|
+
const handleOpenModal = (name: string, data: TData) => {
|
20
|
+
setData((prev: TData[]) => [...prev, data]);
|
21
|
+
setNames((prev: string[]) => [...prev, name]);
|
20
22
|
};
|
21
23
|
|
22
|
-
const handleClose = (position) => {
|
24
|
+
const handleClose = (position: number | string) => {
|
23
25
|
if (position === "all") {
|
24
26
|
setData([]);
|
25
27
|
setNames([]);
|
@@ -28,8 +30,10 @@ const ModalProvider = ({ CustomComponent }: ModalProviderProps) => {
|
|
28
30
|
|
29
31
|
if (position === -1) {
|
30
32
|
// remove last
|
31
|
-
setData((prev
|
32
|
-
|
33
|
+
setData((prev: TData[]) =>
|
34
|
+
prev.filter((_, index) => index !== prev.length - 1)
|
35
|
+
);
|
36
|
+
setNames((prev: string[]) =>
|
33
37
|
prev.filter((_, index) => index !== prev.length - 1)
|
34
38
|
);
|
35
39
|
return;
|
@@ -37,14 +41,18 @@ const ModalProvider = ({ CustomComponent }: ModalProviderProps) => {
|
|
37
41
|
|
38
42
|
if (position === 0) {
|
39
43
|
// remove first
|
40
|
-
setData((prev) => prev.filter((_, index) => index !== 0));
|
41
|
-
setNames((prev) => prev.filter((_, index) => index !== 0));
|
44
|
+
setData((prev: TData[]) => prev.filter((_, index) => index !== 0));
|
45
|
+
setNames((prev: string[]) => prev.filter((_, index) => index !== 0));
|
42
46
|
return;
|
43
47
|
}
|
44
48
|
|
45
49
|
// remove position index
|
46
|
-
setData((prev
|
47
|
-
|
50
|
+
setData((prev: TData[]) =>
|
51
|
+
prev.filter((_, index) => index !== prev.length - 1)
|
52
|
+
);
|
53
|
+
setNames((prev: string[]) =>
|
54
|
+
prev.filter((_, index) => index !== prev.length - 1)
|
55
|
+
);
|
48
56
|
};
|
49
57
|
|
50
58
|
manager.addEventListener("change", handleOpenModal);
|
@@ -55,12 +63,12 @@ const ModalProvider = ({ CustomComponent }: ModalProviderProps) => {
|
|
55
63
|
};
|
56
64
|
}, []);
|
57
65
|
|
58
|
-
const activeModals = names.map((name) => {
|
66
|
+
const activeModals = names.map((name: string) => {
|
59
67
|
const Component = modalList[name] || (() => <></>);
|
60
68
|
return Component;
|
61
69
|
});
|
62
70
|
|
63
|
-
const handleCloseModal = (index, e) => {
|
71
|
+
const handleCloseModal = (index: number, e: any) => {
|
64
72
|
if (
|
65
73
|
modalRef.current[index] &&
|
66
74
|
!modalRef.current[index].contains(e.target)
|
@@ -69,7 +77,7 @@ const ModalProvider = ({ CustomComponent }: ModalProviderProps) => {
|
|
69
77
|
}
|
70
78
|
};
|
71
79
|
|
72
|
-
const refReducer = (index, value) => {
|
80
|
+
const refReducer = (index: number, value: any) => {
|
73
81
|
modalRef.current[index] = value;
|
74
82
|
};
|
75
83
|
|
package/src/index.d.ts
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
import Manager from "./utils/service/Manager";
|
2
|
+
import modal from "./utils/service/ModalManager";
|
3
|
+
import ModalProvider from "./components/modal-provider";
|
4
|
+
import { setModalList } from "./utils/config/modal-list";
|
5
|
+
import { setModalActions } from "./utils/config/modal-actions";
|
6
|
+
export { Manager, modal, ModalProvider, setModalList, setModalActions };
|
package/src/index.js
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.setModalActions = exports.setModalList = exports.ModalProvider = exports.modal = exports.Manager = void 0;
|
7
|
+
var Manager_1 = __importDefault(require("./utils/service/Manager"));
|
8
|
+
exports.Manager = Manager_1.default;
|
9
|
+
var ModalManager_1 = __importDefault(require("./utils/service/ModalManager"));
|
10
|
+
exports.modal = ModalManager_1.default;
|
11
|
+
var modal_provider_1 = __importDefault(require("./components/modal-provider"));
|
12
|
+
exports.ModalProvider = modal_provider_1.default;
|
13
|
+
var modal_list_1 = require("./utils/config/modal-list");
|
14
|
+
Object.defineProperty(exports, "setModalList", { enumerable: true, get: function () { return modal_list_1.setModalList; } });
|
15
|
+
var modal_actions_1 = require("./utils/config/modal-actions");
|
16
|
+
Object.defineProperty(exports, "setModalActions", { enumerable: true, get: function () { return modal_actions_1.setModalActions; } });
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
14
|
+
exports.setModalActions = void 0;
|
15
|
+
var modalActions = {};
|
16
|
+
var setModalActions = function (actionList) {
|
17
|
+
modalActions = __assign(__assign({}, modalActions), actionList);
|
18
|
+
};
|
19
|
+
exports.setModalActions = setModalActions;
|
20
|
+
exports.default = modalActions;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
14
|
+
exports.setModalList = void 0;
|
15
|
+
var modalList = {};
|
16
|
+
var setModalList = function (_modalList) {
|
17
|
+
modalList = __assign(__assign({}, modalList), _modalList);
|
18
|
+
};
|
19
|
+
exports.setModalList = setModalList;
|
20
|
+
exports.default = modalList;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { EventEmitter } from "events";
|
3
|
+
declare class Manager {
|
4
|
+
emitter: EventEmitter;
|
5
|
+
name: string;
|
6
|
+
data: {
|
7
|
+
[key: string]: any;
|
8
|
+
};
|
9
|
+
constructor();
|
10
|
+
addEventListener(event: string, listener: (...args: any[]) => void): void;
|
11
|
+
removeEventListener(event: string, listener: (...args: any[]) => void): void;
|
12
|
+
}
|
13
|
+
export default Manager;
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
var events_1 = require("events");
|
4
|
+
var Constants = {
|
5
|
+
CHANGE: "change",
|
6
|
+
CLOSE: "close",
|
7
|
+
};
|
8
|
+
var Manager = /** @class */ (function () {
|
9
|
+
function Manager() {
|
10
|
+
this.name = "";
|
11
|
+
this.data = {};
|
12
|
+
this.emitter = new events_1.EventEmitter();
|
13
|
+
}
|
14
|
+
Manager.prototype.addEventListener = function (event, listener) {
|
15
|
+
this.emitter.addListener(event, listener);
|
16
|
+
};
|
17
|
+
Manager.prototype.removeEventListener = function (event, listener) {
|
18
|
+
this.emitter.removeListener(event, listener);
|
19
|
+
};
|
20
|
+
return Manager;
|
21
|
+
}());
|
22
|
+
exports.default = Manager;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import Manager from "./Manager";
|
2
|
+
declare class ModalManager extends Manager {
|
3
|
+
constructor();
|
4
|
+
create(name: string, data: {
|
5
|
+
[key: string]: any;
|
6
|
+
}): void;
|
7
|
+
call(name: string, data?: any): void;
|
8
|
+
close(position?: number): void;
|
9
|
+
}
|
10
|
+
declare const modal: ModalManager;
|
11
|
+
export default modal;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
3
|
+
var extendStatics = function (d, b) {
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
7
|
+
return extendStatics(d, b);
|
8
|
+
};
|
9
|
+
return function (d, b) {
|
10
|
+
if (typeof b !== "function" && b !== null)
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
12
|
+
extendStatics(d, b);
|
13
|
+
function __() { this.constructor = d; }
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
15
|
+
};
|
16
|
+
})();
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
19
|
+
};
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
21
|
+
var Manager_1 = __importDefault(require("./Manager"));
|
22
|
+
var uuid_1 = require("uuid");
|
23
|
+
var constants = {
|
24
|
+
CHANGE: "change",
|
25
|
+
CLOSE: "close",
|
26
|
+
};
|
27
|
+
var ModalManager = /** @class */ (function (_super) {
|
28
|
+
__extends(ModalManager, _super);
|
29
|
+
function ModalManager() {
|
30
|
+
return _super.call(this) || this;
|
31
|
+
}
|
32
|
+
ModalManager.prototype.create = function (name, data) {
|
33
|
+
this.name = name;
|
34
|
+
this.data = data;
|
35
|
+
this.emitter.emit(constants.CHANGE);
|
36
|
+
};
|
37
|
+
ModalManager.prototype.call = function (name, data) {
|
38
|
+
if (data === void 0) { data = {}; }
|
39
|
+
this.create(name, { modalId: (0, uuid_1.v4)(), data: data });
|
40
|
+
};
|
41
|
+
ModalManager.prototype.close = function (position) {
|
42
|
+
this.emitter.emit(constants.CLOSE, position);
|
43
|
+
};
|
44
|
+
return ModalManager;
|
45
|
+
}(Manager_1.default));
|
46
|
+
var modal = new ModalManager();
|
47
|
+
exports.default = modal;
|
package/tsconfig.json
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"compilerOptions": {
|
3
|
+
"target": "es5",
|
4
|
+
"module": "commonjs",
|
5
|
+
"jsx": "react",
|
6
|
+
"strict": true,
|
7
|
+
"esModuleInterop": true,
|
8
|
+
"skipLibCheck": true,
|
9
|
+
"forceConsistentCasingInFileNames": true,
|
10
|
+
"moduleResolution": "node",
|
11
|
+
"declaration": true,
|
12
|
+
"outDir": "./src"
|
13
|
+
},
|
14
|
+
"include": ["src/**/*.ts", "src/**/*.tsx"],
|
15
|
+
"exclude": ["node_modules"]
|
16
|
+
}
|
package/.babelrc
DELETED