@semcore/spin-container 3.1.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/lib/cjs/SpinContainer.js +65 -122
- package/lib/cjs/SpinContainer.js.map +1 -1
- package/lib/cjs/index.js +6 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/style/spin-container.shadow.css +2 -11
- package/lib/es6/SpinContainer.js +62 -118
- package/lib/es6/SpinContainer.js.map +1 -1
- package/lib/es6/index.js.map +1 -1
- package/lib/es6/style/spin-container.shadow.css +2 -11
- package/lib/types/index.d.ts +38 -2
- package/package.json +7 -6
- package/src/SpinContainer.js +87 -0
- package/src/index.d.ts +38 -0
- package/src/{index.tsx → index.js} +0 -0
- package/src/style/spin-container.shadow.css +2 -11
- package/lib/types/SpinContainer.d.ts +0 -45
- package/src/SpinContainer.tsx +0 -144
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
|
5
|
+
## [5.0.0] - 2022-02-22
|
|
6
|
+
|
|
7
|
+
### BREAK
|
|
8
|
+
|
|
9
|
+
- Add new children component `SpinContainer.Content` when using advanced mode along with `SpinContainer.Overlay`.
|
|
10
|
+
|
|
11
|
+
## [4.0.1] - 2021-8-26
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Add 'sideEffect=false' for more optimal build via webpack
|
|
16
|
+
|
|
17
|
+
## [4.0.0] - 2021-07-05
|
|
18
|
+
|
|
19
|
+
### BREAK
|
|
20
|
+
|
|
21
|
+
- Replace animation from package `react-transition-group` to `@semcore/animation`.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- Version of dependence `@semcore/core` has been changed to `1.11`.
|
|
26
|
+
- Improved performance. Removed one component wrapper.
|
|
27
|
+
- The style processing system has been changed.
|
|
28
|
+
- Removed the ability to apply media styles via a plugin `babel-plugin-react-semcore`.
|
|
29
|
+
- [TS] rewrite code from TS to JS.
|
|
30
|
+
|
|
5
31
|
## [3.1.0] - 2020-12-17
|
|
6
32
|
|
|
7
33
|
### Added
|
package/lib/cjs/SpinContainer.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
4
|
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
10
|
exports["default"] = void 0;
|
|
11
11
|
|
|
12
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
-
|
|
14
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
13
|
|
|
16
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -23,13 +21,11 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
23
21
|
|
|
24
22
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
23
|
|
|
26
|
-
var
|
|
24
|
+
var _core = _interopRequireWildcard(require("@semcore/core"));
|
|
27
25
|
|
|
28
26
|
var _react = _interopRequireDefault(require("react"));
|
|
29
27
|
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
var _reactTransitionGroup = require("react-transition-group");
|
|
28
|
+
var _animation = require("@semcore/animation");
|
|
33
29
|
|
|
34
30
|
var _spin = _interopRequireDefault(require("@semcore/spin"));
|
|
35
31
|
|
|
@@ -37,44 +33,36 @@ var _flexBox = require("@semcore/flex-box");
|
|
|
37
33
|
|
|
38
34
|
var _color = _interopRequireDefault(require("@semcore/utils/lib/color"));
|
|
39
35
|
|
|
40
|
-
var
|
|
36
|
+
var _findComponent = require("@semcore/utils/lib/findComponent");
|
|
37
|
+
|
|
38
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
|
+
|
|
40
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
|
+
|
|
42
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
43
|
+
|
|
44
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
41
45
|
|
|
42
46
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
47
|
|
|
44
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
48
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
49
|
|
|
46
50
|
/*__reshadow-styles__:"./style/spin-container.shadow.css"*/
|
|
47
|
-
var
|
|
51
|
+
var style = (
|
|
48
52
|
/*__reshadow_css_start__*/
|
|
49
|
-
|
|
53
|
+
_core.sstyled.insert(
|
|
50
54
|
/*__inner_css_start__*/
|
|
51
|
-
".
|
|
55
|
+
".___SSpinContainer_1fs6p_gg_{z-index:0;position:relative;display:block}.___SContent_1fs6p_gg_{z-index:0;position:relative}.___SOverlay_1fs6p_gg_{z-index:1;display:flex;width:100%;height:100%;justify-content:center;align-items:center;position:absolute;top:0;left:0;background-color:hsla(0,0%,100%,.85)}.___SOverlay_1fs6p_gg_.__background_1fs6p_gg_{background:var(--background_18krv29)}"
|
|
52
56
|
/*__inner_css_end__*/
|
|
53
|
-
, "
|
|
57
|
+
, "18krv29_gg_")
|
|
54
58
|
/*__reshadow_css_end__*/
|
|
55
59
|
, {
|
|
56
|
-
"__SSpinContainer": "
|
|
57
|
-
"__SContent": "
|
|
58
|
-
"__SOverlay": "
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
"animate--exit-active": "_animate--exit-active_15k97_gg_"
|
|
63
|
-
}),
|
|
64
|
-
style = (0, _extends2["default"])({}, _ref);
|
|
65
|
-
|
|
66
|
-
var styled_c8 = (0, _core.create)([(
|
|
67
|
-
/*__reshadow_css_start__*/
|
|
68
|
-
(0, _core.__css__)(
|
|
69
|
-
/*__inner_css_start__*/
|
|
70
|
-
"._animate--enter-active_14twg_gg_,._animate--exit-active_1o8ww_gg_{transition:opacity var(--yk7jne_0) ease-out}"
|
|
71
|
-
/*__inner_css_end__*/
|
|
72
|
-
, "qcxlle_gg_")
|
|
73
|
-
/*__reshadow_css_end__*/
|
|
74
|
-
, {
|
|
75
|
-
"animate--exit-active": "_animate--exit-active_1o8ww_gg_",
|
|
76
|
-
"animate--enter-active": "_animate--enter-active_14twg_gg_"
|
|
77
|
-
})]);
|
|
60
|
+
"__SSpinContainer": "___SSpinContainer_1fs6p_gg_",
|
|
61
|
+
"__SContent": "___SContent_1fs6p_gg_",
|
|
62
|
+
"__SOverlay": "___SOverlay_1fs6p_gg_",
|
|
63
|
+
"_background": "__background_1fs6p_gg_",
|
|
64
|
+
"--background": "--background_18krv29"
|
|
65
|
+
});
|
|
78
66
|
|
|
79
67
|
var SpinContainerRoot = /*#__PURE__*/function (_Component) {
|
|
80
68
|
(0, _inherits2["default"])(SpinContainerRoot, _Component);
|
|
@@ -90,11 +78,17 @@ var SpinContainerRoot = /*#__PURE__*/function (_Component) {
|
|
|
90
78
|
key: "getOverlayProps",
|
|
91
79
|
value: function getOverlayProps() {
|
|
92
80
|
var _this$asProps = this.asProps,
|
|
81
|
+
loading = _this$asProps.loading,
|
|
93
82
|
background = _this$asProps.background,
|
|
83
|
+
duration = _this$asProps.duration,
|
|
94
84
|
size = _this$asProps.size,
|
|
95
85
|
theme = _this$asProps.theme;
|
|
96
86
|
return {
|
|
97
87
|
background: background,
|
|
88
|
+
// for Animated
|
|
89
|
+
loading: loading,
|
|
90
|
+
duration: duration,
|
|
91
|
+
// for Spin
|
|
98
92
|
size: size,
|
|
99
93
|
theme: theme
|
|
100
94
|
};
|
|
@@ -102,40 +96,15 @@ var SpinContainerRoot = /*#__PURE__*/function (_Component) {
|
|
|
102
96
|
}, {
|
|
103
97
|
key: "render",
|
|
104
98
|
value: function render() {
|
|
105
|
-
var
|
|
106
|
-
|
|
99
|
+
var _ref = this ? this.asProps : arguments[0],
|
|
100
|
+
_ref4;
|
|
101
|
+
|
|
102
|
+
var SSpinContainer = _flexBox.Box;
|
|
107
103
|
var _this$asProps2 = this.asProps,
|
|
108
104
|
styles = _this$asProps2.styles,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
var transitionDuration = "".concat(duration, "ms");
|
|
113
|
-
|
|
114
|
-
var _overlayChildren = overlayChildren(ChildrenRoot, SpinContainer.Overlay),
|
|
115
|
-
_overlayChildren2 = (0, _slicedToArray2["default"])(_overlayChildren, 2),
|
|
116
|
-
Children = _overlayChildren2[0],
|
|
117
|
-
Overlay = _overlayChildren2[1];
|
|
118
|
-
|
|
119
|
-
return (0, _core.styled)(((0, _core.set)([styled_c8, styles], {
|
|
120
|
-
"--yk7jne_0": transitionDuration
|
|
121
|
-
}), /*#__PURE__*/_react["default"].createElement(SSpinContainer, (0, _core.map)("SSpinContainer", {
|
|
122
|
-
render: _flexBox.Box,
|
|
123
|
-
$$style: _core.styled.$$style
|
|
124
|
-
}), /*#__PURE__*/_react["default"].createElement(SContent, {
|
|
125
|
-
className: _core.styled.styles["__SContent"]
|
|
126
|
-
}, Children), /*#__PURE__*/_react["default"].createElement(_reactTransitionGroup.CSSTransition, (0, _core.map)("CSSTransition", {
|
|
127
|
-
"in": loading,
|
|
128
|
-
timeout: duration,
|
|
129
|
-
classNames: {
|
|
130
|
-
enterActive: _core.styled.styles['animate--enter-active'],
|
|
131
|
-
exitActive: _core.styled.styles['animate--exit-active'],
|
|
132
|
-
enter: _core.styled.styles['animate--enter'],
|
|
133
|
-
exit: _core.styled.styles['animate--exit']
|
|
134
|
-
},
|
|
135
|
-
unmountOnExit: true
|
|
136
|
-
}), Overlay || /*#__PURE__*/_react["default"].createElement(SpinContainer.Overlay, {
|
|
137
|
-
className: _core.styled.styles["__SpinContainer.Overlay"]
|
|
138
|
-
})))));
|
|
105
|
+
Children = _this$asProps2.Children;
|
|
106
|
+
var advanceMode = (0, _findComponent.isAdvanceMode)(Children, [SpinContainer.Content.displayName, SpinContainer.Overlay.displayName]);
|
|
107
|
+
return _ref4 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SSpinContainer, _ref4.cn("SSpinContainer", _objectSpread({}, (0, _core.assignProps)({}, _ref))), advanceMode ? /*#__PURE__*/_react["default"].createElement(Children, _ref4.cn("Children", {})) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(SpinContainer.Content, null, /*#__PURE__*/_react["default"].createElement(Children, _ref4.cn("Children", {}))), /*#__PURE__*/_react["default"].createElement(SpinContainer.Overlay, null)));
|
|
139
108
|
}
|
|
140
109
|
}]);
|
|
141
110
|
return SpinContainerRoot;
|
|
@@ -149,47 +118,6 @@ var SpinContainerRoot = /*#__PURE__*/function (_Component) {
|
|
|
149
118
|
duration: 200
|
|
150
119
|
});
|
|
151
120
|
|
|
152
|
-
function overlayChildren(Children, Overlay) {
|
|
153
|
-
var children = (0, _getOriginChildren["default"])(Children);
|
|
154
|
-
|
|
155
|
-
if (typeof children === 'function') {
|
|
156
|
-
return [/*#__PURE__*/_react["default"].createElement(Children, null), null];
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
var OverlayChildren = null;
|
|
160
|
-
return [_react["default"].Children.toArray(children).map(function (element) {
|
|
161
|
-
if (! /*#__PURE__*/_react["default"].isValidElement(element)) return element;
|
|
162
|
-
if (element.type === _react["default"].Fragment) return element;
|
|
163
|
-
|
|
164
|
-
if (element.type[_core.CHILDREN_COMPONENT]) {
|
|
165
|
-
return overlayChildren(element.type, Overlay);
|
|
166
|
-
} // @ts-ignore
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
var inheritedNames = element.type[_core.INHERITED_NAME] || [element.type.displayName];
|
|
170
|
-
|
|
171
|
-
if (inheritedNames.includes(Overlay.displayName)) {
|
|
172
|
-
OverlayChildren = element;
|
|
173
|
-
return null;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return element;
|
|
177
|
-
}), OverlayChildren];
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
var styled_12c = (0, _core.create)([(
|
|
181
|
-
/*__reshadow_css_start__*/
|
|
182
|
-
(0, _core.__css__)(
|
|
183
|
-
/*__inner_css_start__*/
|
|
184
|
-
".___SOverlay_vnp1p_gg_.__background_vnp1p_gg_{background:var(--yk7jne_0)}"
|
|
185
|
-
/*__inner_css_end__*/
|
|
186
|
-
, "h4gl6o_gg_")
|
|
187
|
-
/*__reshadow_css_end__*/
|
|
188
|
-
, {
|
|
189
|
-
"__SOverlay": "___SOverlay_vnp1p_gg_",
|
|
190
|
-
"_background": "__background_vnp1p_gg_"
|
|
191
|
-
})]);
|
|
192
|
-
|
|
193
121
|
var Overlay = /*#__PURE__*/function (_Component2) {
|
|
194
122
|
(0, _inherits2["default"])(Overlay, _Component2);
|
|
195
123
|
|
|
@@ -203,25 +131,29 @@ var Overlay = /*#__PURE__*/function (_Component2) {
|
|
|
203
131
|
(0, _createClass2["default"])(Overlay, [{
|
|
204
132
|
key: "render",
|
|
205
133
|
value: function render() {
|
|
206
|
-
var
|
|
134
|
+
var _ref2 = this ? this.asProps : arguments[0],
|
|
135
|
+
_ref5;
|
|
136
|
+
|
|
137
|
+
var SOverlay = _flexBox.Box;
|
|
207
138
|
var _this$asProps3 = this.asProps,
|
|
139
|
+
styles = _this$asProps3.styles,
|
|
208
140
|
background = _this$asProps3.background,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}))));
|
|
141
|
+
loading = _this$asProps3.loading,
|
|
142
|
+
duration = _this$asProps3.duration;
|
|
143
|
+
return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(_animation.FadeInOut, _ref5.cn("FadeInOut", {
|
|
144
|
+
"visible": loading,
|
|
145
|
+
"duration": duration
|
|
146
|
+
}), /*#__PURE__*/_react["default"].createElement(SOverlay, _ref5.cn("SOverlay", _objectSpread({}, (0, _core.assignProps)({
|
|
147
|
+
"use:background": (0, _color["default"])(background)
|
|
148
|
+
}, _ref2)))));
|
|
217
149
|
}
|
|
218
150
|
}]);
|
|
219
151
|
return Overlay;
|
|
220
152
|
}(_core.Component);
|
|
221
153
|
|
|
222
|
-
(0, _defineProperty2["default"])(Overlay, "defaultProps", function (
|
|
223
|
-
var size =
|
|
224
|
-
theme =
|
|
154
|
+
(0, _defineProperty2["default"])(Overlay, "defaultProps", function (_ref7) {
|
|
155
|
+
var size = _ref7.size,
|
|
156
|
+
theme = _ref7.theme;
|
|
225
157
|
return {
|
|
226
158
|
children: /*#__PURE__*/_react["default"].createElement(_spin["default"], {
|
|
227
159
|
size: size,
|
|
@@ -229,8 +161,19 @@ var Overlay = /*#__PURE__*/function (_Component2) {
|
|
|
229
161
|
})
|
|
230
162
|
};
|
|
231
163
|
});
|
|
164
|
+
|
|
165
|
+
function Content(props) {
|
|
166
|
+
var _ref3 = this ? this.asProps : arguments[0],
|
|
167
|
+
_ref6;
|
|
168
|
+
|
|
169
|
+
var SContent = _flexBox.Box;
|
|
170
|
+
var styles = props.styles;
|
|
171
|
+
return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SContent, _ref6.cn("SContent", _objectSpread({}, (0, _core.assignProps)({}, _ref3))));
|
|
172
|
+
}
|
|
173
|
+
|
|
232
174
|
var SpinContainer = (0, _core["default"])(SpinContainerRoot, {
|
|
233
|
-
Overlay: Overlay
|
|
175
|
+
Overlay: Overlay,
|
|
176
|
+
Content: Content
|
|
234
177
|
});
|
|
235
178
|
var _default = SpinContainer;
|
|
236
179
|
exports["default"] = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SpinContainer.
|
|
1
|
+
{"version":3,"sources":["../../src/SpinContainer.js"],"names":["SpinContainerRoot","asProps","loading","background","duration","size","theme","SSpinContainer","Box","styles","Children","advanceMode","SpinContainer","Content","displayName","Overlay","Component","style","SOverlay","children","props","SContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AADA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIMA,iB;;;;;;;;;;;;WASJ,2BAAkB;AAChB,0BAAuD,KAAKC,OAA5D;AAAA,UAAQC,OAAR,iBAAQA,OAAR;AAAA,UAAiBC,UAAjB,iBAAiBA,UAAjB;AAAA,UAA6BC,QAA7B,iBAA6BA,QAA7B;AAAA,UAAuCC,IAAvC,iBAAuCA,IAAvC;AAAA,UAA6CC,KAA7C,iBAA6CA,KAA7C;AACA,aAAO;AACLH,QAAAA,UAAU,EAAVA,UADK;AAEL;AACAD,QAAAA,OAAO,EAAPA,OAHK;AAILE,QAAAA,QAAQ,EAARA,QAJK;AAKL;AACAC,QAAAA,IAAI,EAAJA,IANK;AAOLC,QAAAA,KAAK,EAALA;AAPK,OAAP;AASD;;;WAED,kBAAS;AAAA;AAAA;;AACP,UAAMC,cAAc,GASMC,YAT1B;AACA,2BAA6B,KAAKP,OAAlC;AAAA,UAAQQ,MAAR,kBAAQA,MAAR;AAAA,UAAgBC,QAAhB,kBAAgBA,QAAhB;AAEA,UAAMC,WAAW,GAAG,kCAAcD,QAAd,EAAwB,CAC1CE,aAAa,CAACC,OAAd,CAAsBC,WADoB,EAE1CF,aAAa,CAACG,OAAd,CAAsBD,WAFoB,CAAxB,CAApB;AAKA,qBAAO,mBAAQL,MAAR,CAAP,eACE,gCAAC,cAAD,mFACGE,WAAW,gBACV,gCAAC,QAAD,2BADU,gBAGV,+EACE,gCAAC,aAAD,CAAe,OAAf,qBACE,gCAAC,QAAD,2BADF,CADF,eAIE,gCAAC,aAAD,CAAe,OAAf,OAJF,CAJJ,CADF;AAcD;;;EA7C6BK,e;;iCAA1BhB,iB,iBACiB,e;iCADjBA,iB,WAEWiB,K;iCAFXjB,iB,kBAGkB;AACpBK,EAAAA,IAAI,EAAE,KADc;AAEpBC,EAAAA,KAAK,EAAE,MAFa;AAGpBF,EAAAA,QAAQ,EAAE;AAHU,C;;IA6ClBW,O;;;;;;;;;;;;WAKJ,kBAAS;AAAA;AAAA;;AACP,UAAMG,QAAQ,GAKQV,YALtB;AACA,2BAAkD,KAAKP,OAAvD;AAAA,UAAQQ,MAAR,kBAAQA,MAAR;AAAA,UAAgBN,UAAhB,kBAAgBA,UAAhB;AAAA,UAA4BD,OAA5B,kBAA4BA,OAA5B;AAAA,UAAqCE,QAArC,kBAAqCA,QAArC;AAEA,qBAAO,mBAAQK,MAAR,CAAP,eACE,gCAAC,oBAAD;AAAA,mBAAoBP,OAApB;AAAA,oBAAuCE;AAAvC,uBACE,gCAAC,QAAD;AAAA,0BAAuC,uBAAaD,UAAb;AAAvC,kBADF,CADF;AAKD;;;EAdmBa,e;;iCAAhBD,O,kBACkB;AAAA,MAAGV,IAAH,SAAGA,IAAH;AAAA,MAASC,KAAT,SAASA,KAAT;AAAA,SAAsB;AAC1Ca,IAAAA,QAAQ,eAAE,gCAAC,gBAAD;AAAM,MAAA,IAAI,EAAEd,IAAZ;AAAkB,MAAA,KAAK,EAAEC;AAAzB;AADgC,GAAtB;AAAA,C;;AAgBxB,SAASO,OAAT,CAAiBO,KAAjB,EAAwB;AAAA;AAAA;;AACtB,MAAMC,QAAQ,GAE2Bb,YAFzC;AACA,MAAQC,MAAR,GAAmBW,KAAnB,CAAQX,MAAR;AACA,iBAAO,mBAAQA,MAAR,CAAP,eAAuB,gCAAC,QAAD,6EAAvB;AACD;;AAED,IAAMG,aAAa,GAAG,sBAAgBZ,iBAAhB,EAAmC;AACvDe,EAAAA,OAAO,EAAPA,OADuD;AAEvDF,EAAAA,OAAO,EAAPA;AAFuD,CAAnC,CAAtB;eAKeD,a","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { FadeInOut } from '@semcore/animation';\nimport Spin from '@semcore/spin';\nimport { Box } from '@semcore/flex-box';\nimport resolveColor from '@semcore/utils/lib/color';\nimport { isAdvanceMode } from '@semcore/utils/lib/findComponent';\n\nimport style from './style/spin-container.shadow.css';\n\nclass SpinContainerRoot extends Component {\n static displayName = 'SpinContainer';\n static style = style;\n static defaultProps = {\n size: 'xxl',\n theme: 'dark',\n duration: 200,\n };\n\n getOverlayProps() {\n const { loading, background, duration, size, theme } = this.asProps;\n return {\n background,\n // for Animated\n loading,\n duration,\n // for Spin\n size,\n theme,\n };\n }\n\n render() {\n const SSpinContainer = Root;\n const { styles, Children } = this.asProps;\n\n const advanceMode = isAdvanceMode(Children, [\n SpinContainer.Content.displayName,\n SpinContainer.Overlay.displayName,\n ]);\n\n return sstyled(styles)(\n <SSpinContainer render={Box}>\n {advanceMode ? (\n <Children />\n ) : (\n <>\n <SpinContainer.Content>\n <Children />\n </SpinContainer.Content>\n <SpinContainer.Overlay />\n </>\n )}\n </SSpinContainer>,\n );\n }\n}\n\nclass Overlay extends Component {\n static defaultProps = ({ size, theme }) => ({\n children: <Spin size={size} theme={theme} />,\n });\n\n render() {\n const SOverlay = Root;\n const { styles, background, loading, duration } = this.asProps;\n\n return sstyled(styles)(\n <FadeInOut visible={loading} duration={duration}>\n <SOverlay render={Box} use:background={resolveColor(background)} />\n </FadeInOut>,\n );\n }\n}\n\nfunction Content(props) {\n const SContent = Root;\n const { styles } = props;\n return sstyled(styles)(<SContent render={Box} />);\n}\n\nconst SpinContainer = createComponent(SpinContainerRoot, {\n Overlay,\n Content,\n});\n\nexport default SpinContainer;\n"],"file":"SpinContainer.js"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -18,6 +18,7 @@ var _SpinContainer = _interopRequireWildcard(require("./SpinContainer"));
|
|
|
18
18
|
Object.keys(_SpinContainer).forEach(function (key) {
|
|
19
19
|
if (key === "default" || key === "__esModule") return;
|
|
20
20
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
21
|
+
if (key in exports && exports[key] === _SpinContainer[key]) return;
|
|
21
22
|
Object.defineProperty(exports, key, {
|
|
22
23
|
enumerable: true,
|
|
23
24
|
get: function get() {
|
|
@@ -25,4 +26,8 @@ Object.keys(_SpinContainer).forEach(function (key) {
|
|
|
25
26
|
}
|
|
26
27
|
});
|
|
27
28
|
});
|
|
29
|
+
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
+
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
33
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.
|
|
1
|
+
{"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export { default } from './SpinContainer';\nexport * from './SpinContainer';\n"],"file":"index.js"}
|
|
@@ -24,15 +24,6 @@ SOverlay {
|
|
|
24
24
|
background-color: rgba(255, 255, 255, 0.85);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.animate--enter-active,
|
|
32
|
-
.animate--exit {
|
|
33
|
-
opacity: 1;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.animate--exit-active {
|
|
37
|
-
opacity: 0.01;
|
|
27
|
+
SOverlay[background] {
|
|
28
|
+
background: var(--background);
|
|
38
29
|
}
|
package/lib/es6/SpinContainer.js
CHANGED
|
@@ -1,56 +1,46 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
1
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
2
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
3
|
import _inherits from "@babel/runtime/helpers/inherits";
|
|
5
4
|
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
6
5
|
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
7
6
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
8
|
-
import
|
|
7
|
+
import { sstyled as _sstyled } from "@semcore/core";
|
|
8
|
+
import { assignProps as _assignProps3 } from "@semcore/core";
|
|
9
|
+
import { assignProps as _assignProps2 } from "@semcore/core";
|
|
10
|
+
import { assignProps as _assignProps } from "@semcore/core";
|
|
11
|
+
|
|
12
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
|
|
14
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
15
|
|
|
10
16
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
11
17
|
|
|
12
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
18
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
13
19
|
|
|
14
20
|
import React from 'react';
|
|
15
|
-
import createComponent, {
|
|
16
|
-
import {
|
|
21
|
+
import createComponent, { Component, sstyled, Root } from '@semcore/core';
|
|
22
|
+
import { FadeInOut } from '@semcore/animation';
|
|
17
23
|
import Spin from '@semcore/spin';
|
|
18
24
|
import { Box } from '@semcore/flex-box';
|
|
19
25
|
import resolveColor from '@semcore/utils/lib/color';
|
|
20
|
-
import
|
|
26
|
+
import { isAdvanceMode } from '@semcore/utils/lib/findComponent';
|
|
21
27
|
|
|
22
28
|
/*__reshadow-styles__:"./style/spin-container.shadow.css"*/
|
|
23
|
-
var
|
|
24
|
-
/*__reshadow_css_start__*/
|
|
25
|
-
__css__(
|
|
26
|
-
/*__inner_css_start__*/
|
|
27
|
-
".___SSpinContainer_122x3_gg_{z-index:0;position:relative;display:block}.___SContent_122x3_gg_{z-index:0;position:relative}.___SOverlay_122x3_gg_{z-index:1;display:flex;width:100%;height:100%;justify-content:center;align-items:center;position:absolute;top:0;left:0;background-color:hsla(0,0%,100%,.85)}._animate--enter_1p3sp_gg_{opacity:.01}._animate--enter-active_1mtt8_gg_,._animate--exit_yqdt9_gg_{opacity:1}._animate--exit-active_15k97_gg_{opacity:.01}"
|
|
28
|
-
/*__inner_css_end__*/
|
|
29
|
-
, "oca35l_gg_")
|
|
30
|
-
/*__reshadow_css_end__*/
|
|
31
|
-
, {
|
|
32
|
-
"__SSpinContainer": "___SSpinContainer_122x3_gg_",
|
|
33
|
-
"__SContent": "___SContent_122x3_gg_",
|
|
34
|
-
"__SOverlay": "___SOverlay_122x3_gg_",
|
|
35
|
-
"animate--enter": "_animate--enter_1p3sp_gg_",
|
|
36
|
-
"animate--enter-active": "_animate--enter-active_1mtt8_gg_",
|
|
37
|
-
"animate--exit": "_animate--exit_yqdt9_gg_",
|
|
38
|
-
"animate--exit-active": "_animate--exit-active_15k97_gg_"
|
|
39
|
-
}),
|
|
40
|
-
style = _extends({}, _ref);
|
|
41
|
-
|
|
42
|
-
var styled_c8 = create([(
|
|
29
|
+
var style = (
|
|
43
30
|
/*__reshadow_css_start__*/
|
|
44
|
-
|
|
31
|
+
_sstyled.insert(
|
|
45
32
|
/*__inner_css_start__*/
|
|
46
|
-
".
|
|
33
|
+
".___SSpinContainer_1fs6p_gg_{z-index:0;position:relative;display:block}.___SContent_1fs6p_gg_{z-index:0;position:relative}.___SOverlay_1fs6p_gg_{z-index:1;display:flex;width:100%;height:100%;justify-content:center;align-items:center;position:absolute;top:0;left:0;background-color:hsla(0,0%,100%,.85)}.___SOverlay_1fs6p_gg_.__background_1fs6p_gg_{background:var(--background_18krv29)}"
|
|
47
34
|
/*__inner_css_end__*/
|
|
48
|
-
, "
|
|
35
|
+
, "18krv29_gg_")
|
|
49
36
|
/*__reshadow_css_end__*/
|
|
50
37
|
, {
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
38
|
+
"__SSpinContainer": "___SSpinContainer_1fs6p_gg_",
|
|
39
|
+
"__SContent": "___SContent_1fs6p_gg_",
|
|
40
|
+
"__SOverlay": "___SOverlay_1fs6p_gg_",
|
|
41
|
+
"_background": "__background_1fs6p_gg_",
|
|
42
|
+
"--background": "--background_18krv29"
|
|
43
|
+
});
|
|
54
44
|
|
|
55
45
|
var SpinContainerRoot = /*#__PURE__*/function (_Component) {
|
|
56
46
|
_inherits(SpinContainerRoot, _Component);
|
|
@@ -67,11 +57,17 @@ var SpinContainerRoot = /*#__PURE__*/function (_Component) {
|
|
|
67
57
|
key: "getOverlayProps",
|
|
68
58
|
value: function getOverlayProps() {
|
|
69
59
|
var _this$asProps = this.asProps,
|
|
60
|
+
loading = _this$asProps.loading,
|
|
70
61
|
background = _this$asProps.background,
|
|
62
|
+
duration = _this$asProps.duration,
|
|
71
63
|
size = _this$asProps.size,
|
|
72
64
|
theme = _this$asProps.theme;
|
|
73
65
|
return {
|
|
74
66
|
background: background,
|
|
67
|
+
// for Animated
|
|
68
|
+
loading: loading,
|
|
69
|
+
duration: duration,
|
|
70
|
+
// for Spin
|
|
75
71
|
size: size,
|
|
76
72
|
theme: theme
|
|
77
73
|
};
|
|
@@ -79,40 +75,15 @@ var SpinContainerRoot = /*#__PURE__*/function (_Component) {
|
|
|
79
75
|
}, {
|
|
80
76
|
key: "render",
|
|
81
77
|
value: function render() {
|
|
82
|
-
var
|
|
83
|
-
|
|
78
|
+
var _ref = this ? this.asProps : arguments[0],
|
|
79
|
+
_ref4;
|
|
80
|
+
|
|
81
|
+
var SSpinContainer = Box;
|
|
84
82
|
var _this$asProps2 = this.asProps,
|
|
85
83
|
styles = _this$asProps2.styles,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
var transitionDuration = "".concat(duration, "ms");
|
|
90
|
-
|
|
91
|
-
var _overlayChildren = overlayChildren(ChildrenRoot, SpinContainer.Overlay),
|
|
92
|
-
_overlayChildren2 = _slicedToArray(_overlayChildren, 2),
|
|
93
|
-
Children = _overlayChildren2[0],
|
|
94
|
-
Overlay = _overlayChildren2[1];
|
|
95
|
-
|
|
96
|
-
return styled((set([styled_c8, styles], {
|
|
97
|
-
"--yk7jne_0": transitionDuration
|
|
98
|
-
}), /*#__PURE__*/React.createElement(SSpinContainer, map("SSpinContainer", {
|
|
99
|
-
render: Box,
|
|
100
|
-
$$style: styled.$$style
|
|
101
|
-
}), /*#__PURE__*/React.createElement(SContent, {
|
|
102
|
-
className: styled.styles["__SContent"]
|
|
103
|
-
}, Children), /*#__PURE__*/React.createElement(CSSTransition, map("CSSTransition", {
|
|
104
|
-
"in": loading,
|
|
105
|
-
timeout: duration,
|
|
106
|
-
classNames: {
|
|
107
|
-
enterActive: styled.styles['animate--enter-active'],
|
|
108
|
-
exitActive: styled.styles['animate--exit-active'],
|
|
109
|
-
enter: styled.styles['animate--enter'],
|
|
110
|
-
exit: styled.styles['animate--exit']
|
|
111
|
-
},
|
|
112
|
-
unmountOnExit: true
|
|
113
|
-
}), Overlay || /*#__PURE__*/React.createElement(SpinContainer.Overlay, {
|
|
114
|
-
className: styled.styles["__SpinContainer.Overlay"]
|
|
115
|
-
})))));
|
|
84
|
+
Children = _this$asProps2.Children;
|
|
85
|
+
var advanceMode = isAdvanceMode(Children, [SpinContainer.Content.displayName, SpinContainer.Overlay.displayName]);
|
|
86
|
+
return _ref4 = sstyled(styles), /*#__PURE__*/React.createElement(SSpinContainer, _ref4.cn("SSpinContainer", _objectSpread({}, _assignProps({}, _ref))), advanceMode ? /*#__PURE__*/React.createElement(Children, _ref4.cn("Children", {})) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SpinContainer.Content, null, /*#__PURE__*/React.createElement(Children, _ref4.cn("Children", {}))), /*#__PURE__*/React.createElement(SpinContainer.Overlay, null)));
|
|
116
87
|
}
|
|
117
88
|
}]);
|
|
118
89
|
|
|
@@ -129,47 +100,6 @@ _defineProperty(SpinContainerRoot, "defaultProps", {
|
|
|
129
100
|
duration: 200
|
|
130
101
|
});
|
|
131
102
|
|
|
132
|
-
function overlayChildren(Children, Overlay) {
|
|
133
|
-
var children = getOriginChildren(Children);
|
|
134
|
-
|
|
135
|
-
if (typeof children === 'function') {
|
|
136
|
-
return [/*#__PURE__*/React.createElement(Children, null), null];
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
var OverlayChildren = null;
|
|
140
|
-
return [React.Children.toArray(children).map(function (element) {
|
|
141
|
-
if (! /*#__PURE__*/React.isValidElement(element)) return element;
|
|
142
|
-
if (element.type === React.Fragment) return element;
|
|
143
|
-
|
|
144
|
-
if (element.type[CHILDREN_COMPONENT]) {
|
|
145
|
-
return overlayChildren(element.type, Overlay);
|
|
146
|
-
} // @ts-ignore
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
var inheritedNames = element.type[INHERITED_NAME] || [element.type.displayName];
|
|
150
|
-
|
|
151
|
-
if (inheritedNames.includes(Overlay.displayName)) {
|
|
152
|
-
OverlayChildren = element;
|
|
153
|
-
return null;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
return element;
|
|
157
|
-
}), OverlayChildren];
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
var styled_12c = create([(
|
|
161
|
-
/*__reshadow_css_start__*/
|
|
162
|
-
__css__(
|
|
163
|
-
/*__inner_css_start__*/
|
|
164
|
-
".___SOverlay_vnp1p_gg_.__background_vnp1p_gg_{background:var(--yk7jne_0)}"
|
|
165
|
-
/*__inner_css_end__*/
|
|
166
|
-
, "h4gl6o_gg_")
|
|
167
|
-
/*__reshadow_css_end__*/
|
|
168
|
-
, {
|
|
169
|
-
"__SOverlay": "___SOverlay_vnp1p_gg_",
|
|
170
|
-
"_background": "__background_vnp1p_gg_"
|
|
171
|
-
})]);
|
|
172
|
-
|
|
173
103
|
var Overlay = /*#__PURE__*/function (_Component2) {
|
|
174
104
|
_inherits(Overlay, _Component2);
|
|
175
105
|
|
|
@@ -184,26 +114,30 @@ var Overlay = /*#__PURE__*/function (_Component2) {
|
|
|
184
114
|
_createClass(Overlay, [{
|
|
185
115
|
key: "render",
|
|
186
116
|
value: function render() {
|
|
187
|
-
var
|
|
117
|
+
var _ref2 = this ? this.asProps : arguments[0],
|
|
118
|
+
_ref5;
|
|
119
|
+
|
|
120
|
+
var SOverlay = Box;
|
|
188
121
|
var _this$asProps3 = this.asProps,
|
|
122
|
+
styles = _this$asProps3.styles,
|
|
189
123
|
background = _this$asProps3.background,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}))));
|
|
124
|
+
loading = _this$asProps3.loading,
|
|
125
|
+
duration = _this$asProps3.duration;
|
|
126
|
+
return _ref5 = sstyled(styles), /*#__PURE__*/React.createElement(FadeInOut, _ref5.cn("FadeInOut", {
|
|
127
|
+
"visible": loading,
|
|
128
|
+
"duration": duration
|
|
129
|
+
}), /*#__PURE__*/React.createElement(SOverlay, _ref5.cn("SOverlay", _objectSpread({}, _assignProps2({
|
|
130
|
+
"use:background": resolveColor(background)
|
|
131
|
+
}, _ref2)))));
|
|
198
132
|
}
|
|
199
133
|
}]);
|
|
200
134
|
|
|
201
135
|
return Overlay;
|
|
202
136
|
}(Component);
|
|
203
137
|
|
|
204
|
-
_defineProperty(Overlay, "defaultProps", function (
|
|
205
|
-
var size =
|
|
206
|
-
theme =
|
|
138
|
+
_defineProperty(Overlay, "defaultProps", function (_ref7) {
|
|
139
|
+
var size = _ref7.size,
|
|
140
|
+
theme = _ref7.theme;
|
|
207
141
|
return {
|
|
208
142
|
children: /*#__PURE__*/React.createElement(Spin, {
|
|
209
143
|
size: size,
|
|
@@ -212,8 +146,18 @@ _defineProperty(Overlay, "defaultProps", function (_ref2) {
|
|
|
212
146
|
};
|
|
213
147
|
});
|
|
214
148
|
|
|
149
|
+
function Content(props) {
|
|
150
|
+
var _ref3 = this ? this.asProps : arguments[0],
|
|
151
|
+
_ref6;
|
|
152
|
+
|
|
153
|
+
var SContent = Box;
|
|
154
|
+
var styles = props.styles;
|
|
155
|
+
return _ref6 = sstyled(styles), /*#__PURE__*/React.createElement(SContent, _ref6.cn("SContent", _objectSpread({}, _assignProps3({}, _ref3))));
|
|
156
|
+
}
|
|
157
|
+
|
|
215
158
|
var SpinContainer = createComponent(SpinContainerRoot, {
|
|
216
|
-
Overlay: Overlay
|
|
159
|
+
Overlay: Overlay,
|
|
160
|
+
Content: Content
|
|
217
161
|
});
|
|
218
162
|
export default SpinContainer;
|
|
219
163
|
//# sourceMappingURL=SpinContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SpinContainer.
|
|
1
|
+
{"version":3,"sources":["../../src/SpinContainer.js"],"names":["React","createComponent","Component","sstyled","Root","FadeInOut","Spin","Box","resolveColor","isAdvanceMode","SpinContainerRoot","asProps","loading","background","duration","size","theme","SSpinContainer","styles","Children","advanceMode","SpinContainer","Content","displayName","Overlay","style","SOverlay","children","props","SContent"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,eAAP,IAA0BC,SAA1B,EAAqCC,OAArC,EAA8CC,IAA9C,QAA0D,eAA1D;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,OAAOC,IAAP,MAAiB,eAAjB;AACA,SAASC,GAAT,QAAoB,mBAApB;AACA,OAAOC,YAAP,MAAyB,0BAAzB;AACA,SAASC,aAAT,QAA8B,kCAA9B;;;;;;;;;;;;;;;;;;;IAIMC,iB;;;;;;;;;;;;;WASJ,2BAAkB;AAChB,0BAAuD,KAAKC,OAA5D;AAAA,UAAQC,OAAR,iBAAQA,OAAR;AAAA,UAAiBC,UAAjB,iBAAiBA,UAAjB;AAAA,UAA6BC,QAA7B,iBAA6BA,QAA7B;AAAA,UAAuCC,IAAvC,iBAAuCA,IAAvC;AAAA,UAA6CC,KAA7C,iBAA6CA,KAA7C;AACA,aAAO;AACLH,QAAAA,UAAU,EAAVA,UADK;AAEL;AACAD,QAAAA,OAAO,EAAPA,OAHK;AAILE,QAAAA,QAAQ,EAARA,QAJK;AAKL;AACAC,QAAAA,IAAI,EAAJA,IANK;AAOLC,QAAAA,KAAK,EAALA;AAPK,OAAP;AASD;;;WAED,kBAAS;AAAA;AAAA;;AACP,UAAMC,cAAc,GASMV,GAT1B;AACA,2BAA6B,KAAKI,OAAlC;AAAA,UAAQO,MAAR,kBAAQA,MAAR;AAAA,UAAgBC,QAAhB,kBAAgBA,QAAhB;AAEA,UAAMC,WAAW,GAAGX,aAAa,CAACU,QAAD,EAAW,CAC1CE,aAAa,CAACC,OAAd,CAAsBC,WADoB,EAE1CF,aAAa,CAACG,OAAd,CAAsBD,WAFoB,CAAX,CAAjC;AAKA,qBAAOpB,OAAO,CAACe,MAAD,CAAd,eACE,oBAAC,cAAD,yEACGE,WAAW,gBACV,oBAAC,QAAD,2BADU,gBAGV,uDACE,oBAAC,aAAD,CAAe,OAAf,qBACE,oBAAC,QAAD,2BADF,CADF,eAIE,oBAAC,aAAD,CAAe,OAAf,OAJF,CAJJ,CADF;AAcD;;;;EA7C6BlB,S;;gBAA1BQ,iB,iBACiB,e;;gBADjBA,iB,WAEWe,K;;gBAFXf,iB,kBAGkB;AACpBK,EAAAA,IAAI,EAAE,KADc;AAEpBC,EAAAA,KAAK,EAAE,MAFa;AAGpBF,EAAAA,QAAQ,EAAE;AAHU,C;;IA6ClBU,O;;;;;;;;;;;;;WAKJ,kBAAS;AAAA;AAAA;;AACP,UAAME,QAAQ,GAKQnB,GALtB;AACA,2BAAkD,KAAKI,OAAvD;AAAA,UAAQO,MAAR,kBAAQA,MAAR;AAAA,UAAgBL,UAAhB,kBAAgBA,UAAhB;AAAA,UAA4BD,OAA5B,kBAA4BA,OAA5B;AAAA,UAAqCE,QAArC,kBAAqCA,QAArC;AAEA,qBAAOX,OAAO,CAACe,MAAD,CAAd,eACE,oBAAC,SAAD;AAAA,mBAAoBN,OAApB;AAAA,oBAAuCE;AAAvC,uBACE,oBAAC,QAAD;AAAA,0BAAuCN,YAAY,CAACK,UAAD;AAAnD,kBADF,CADF;AAKD;;;;EAdmBX,S;;gBAAhBsB,O,kBACkB;AAAA,MAAGT,IAAH,SAAGA,IAAH;AAAA,MAASC,KAAT,SAASA,KAAT;AAAA,SAAsB;AAC1CW,IAAAA,QAAQ,eAAE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAEZ,IAAZ;AAAkB,MAAA,KAAK,EAAEC;AAAzB;AADgC,GAAtB;AAAA,C;;AAgBxB,SAASM,OAAT,CAAiBM,KAAjB,EAAwB;AAAA;AAAA;;AACtB,MAAMC,QAAQ,GAE2BtB,GAFzC;AACA,MAAQW,MAAR,GAAmBU,KAAnB,CAAQV,MAAR;AACA,iBAAOf,OAAO,CAACe,MAAD,CAAd,eAAuB,oBAAC,QAAD,oEAAvB;AACD;;AAED,IAAMG,aAAa,GAAGpB,eAAe,CAACS,iBAAD,EAAoB;AACvDc,EAAAA,OAAO,EAAPA,OADuD;AAEvDF,EAAAA,OAAO,EAAPA;AAFuD,CAApB,CAArC;AAKA,eAAeD,aAAf","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { FadeInOut } from '@semcore/animation';\nimport Spin from '@semcore/spin';\nimport { Box } from '@semcore/flex-box';\nimport resolveColor from '@semcore/utils/lib/color';\nimport { isAdvanceMode } from '@semcore/utils/lib/findComponent';\n\nimport style from './style/spin-container.shadow.css';\n\nclass SpinContainerRoot extends Component {\n static displayName = 'SpinContainer';\n static style = style;\n static defaultProps = {\n size: 'xxl',\n theme: 'dark',\n duration: 200,\n };\n\n getOverlayProps() {\n const { loading, background, duration, size, theme } = this.asProps;\n return {\n background,\n // for Animated\n loading,\n duration,\n // for Spin\n size,\n theme,\n };\n }\n\n render() {\n const SSpinContainer = Root;\n const { styles, Children } = this.asProps;\n\n const advanceMode = isAdvanceMode(Children, [\n SpinContainer.Content.displayName,\n SpinContainer.Overlay.displayName,\n ]);\n\n return sstyled(styles)(\n <SSpinContainer render={Box}>\n {advanceMode ? (\n <Children />\n ) : (\n <>\n <SpinContainer.Content>\n <Children />\n </SpinContainer.Content>\n <SpinContainer.Overlay />\n </>\n )}\n </SSpinContainer>,\n );\n }\n}\n\nclass Overlay extends Component {\n static defaultProps = ({ size, theme }) => ({\n children: <Spin size={size} theme={theme} />,\n });\n\n render() {\n const SOverlay = Root;\n const { styles, background, loading, duration } = this.asProps;\n\n return sstyled(styles)(\n <FadeInOut visible={loading} duration={duration}>\n <SOverlay render={Box} use:background={resolveColor(background)} />\n </FadeInOut>,\n );\n }\n}\n\nfunction Content(props) {\n const SContent = Root;\n const { styles } = props;\n return sstyled(styles)(<SContent render={Box} />);\n}\n\nconst SpinContainer = createComponent(SpinContainerRoot, {\n Overlay,\n Content,\n});\n\nexport default SpinContainer;\n"],"file":"SpinContainer.js"}
|
package/lib/es6/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.
|
|
1
|
+
{"version":3,"sources":["../../src/index.js"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,iBAAxB;AACA,cAAc,iBAAd","sourcesContent":["export { default } from './SpinContainer';\nexport * from './SpinContainer';\n"],"file":"index.js"}
|
|
@@ -24,15 +24,6 @@ SOverlay {
|
|
|
24
24
|
background-color: rgba(255, 255, 255, 0.85);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.animate--enter-active,
|
|
32
|
-
.animate--exit {
|
|
33
|
-
opacity: 1;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.animate--exit-active {
|
|
37
|
-
opacity: 0.01;
|
|
27
|
+
SOverlay[background] {
|
|
28
|
+
background: var(--background);
|
|
38
29
|
}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,2 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { PropGetterFn, ReturnEl, CProps } from '@semcore/core';
|
|
2
|
+
import { ISpinProps } from '@semcore/spin';
|
|
3
|
+
import { IBoxProps } from '@semcore/flex-box';
|
|
4
|
+
|
|
5
|
+
export interface ISpinContainerProps extends IBoxProps, ISpinProps {
|
|
6
|
+
/**
|
|
7
|
+
* Color of container spinner; you can use your own color
|
|
8
|
+
*/
|
|
9
|
+
background?: string;
|
|
10
|
+
/** Duration of animation displaying in ms
|
|
11
|
+
* @default 200
|
|
12
|
+
*/
|
|
13
|
+
duration?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Property responsible for displaying the spinner
|
|
16
|
+
* */
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ISpinContainerContext {
|
|
21
|
+
getOverlayProps: PropGetterFn;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface ISpinContainerOverlayProps extends IBoxProps {
|
|
25
|
+
/**
|
|
26
|
+
* Css background; you can use your own color
|
|
27
|
+
*/
|
|
28
|
+
background?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare const SpinContainer: (<T>(
|
|
32
|
+
props: CProps<ISpinContainerProps & T, ISpinContainerContext>,
|
|
33
|
+
) => ReturnEl) & {
|
|
34
|
+
Content: typeof Box;
|
|
35
|
+
Overlay: <T>(props: ISpinContainerOverlayProps & T) => ReturnEl;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default SpinContainer;
|
package/package.json
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semcore/spin-container",
|
|
3
3
|
"description": "SEMRush SpinContainer Component",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.0.0",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es6/index.js",
|
|
7
7
|
"types": "lib/types/index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
8
9
|
"author": "Roman Lysov <r.lysov@semrush.com>",
|
|
9
10
|
"license": "MIT",
|
|
10
11
|
"scripts": {
|
|
11
|
-
"build": "build",
|
|
12
|
+
"build": "build --source=js",
|
|
12
13
|
"test": "jest"
|
|
13
14
|
},
|
|
14
15
|
"dependencies": {
|
|
15
|
-
"@semcore/utils": "^3.
|
|
16
|
+
"@semcore/utils": "^3.31",
|
|
16
17
|
"@semcore/spin": "^3",
|
|
17
18
|
"@semcore/flex-box": "^4",
|
|
18
|
-
"
|
|
19
|
+
"@semcore/animation": "^1"
|
|
19
20
|
},
|
|
20
21
|
"peerDependencies": {
|
|
21
|
-
"@semcore/core": "^1",
|
|
22
|
+
"@semcore/core": "^1.11",
|
|
22
23
|
"react": "16.8 - 17"
|
|
23
24
|
},
|
|
24
25
|
"jest": {
|
|
25
|
-
"preset": "jest-preset-ui"
|
|
26
|
+
"preset": "@semcore/jest-preset-ui"
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import createComponent, { Component, sstyled, Root } from '@semcore/core';
|
|
3
|
+
import { FadeInOut } from '@semcore/animation';
|
|
4
|
+
import Spin from '@semcore/spin';
|
|
5
|
+
import { Box } from '@semcore/flex-box';
|
|
6
|
+
import resolveColor from '@semcore/utils/lib/color';
|
|
7
|
+
import { isAdvanceMode } from '@semcore/utils/lib/findComponent';
|
|
8
|
+
|
|
9
|
+
import style from './style/spin-container.shadow.css';
|
|
10
|
+
|
|
11
|
+
class SpinContainerRoot extends Component {
|
|
12
|
+
static displayName = 'SpinContainer';
|
|
13
|
+
static style = style;
|
|
14
|
+
static defaultProps = {
|
|
15
|
+
size: 'xxl',
|
|
16
|
+
theme: 'dark',
|
|
17
|
+
duration: 200,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
getOverlayProps() {
|
|
21
|
+
const { loading, background, duration, size, theme } = this.asProps;
|
|
22
|
+
return {
|
|
23
|
+
background,
|
|
24
|
+
// for Animated
|
|
25
|
+
loading,
|
|
26
|
+
duration,
|
|
27
|
+
// for Spin
|
|
28
|
+
size,
|
|
29
|
+
theme,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
render() {
|
|
34
|
+
const SSpinContainer = Root;
|
|
35
|
+
const { styles, Children } = this.asProps;
|
|
36
|
+
|
|
37
|
+
const advanceMode = isAdvanceMode(Children, [
|
|
38
|
+
SpinContainer.Content.displayName,
|
|
39
|
+
SpinContainer.Overlay.displayName,
|
|
40
|
+
]);
|
|
41
|
+
|
|
42
|
+
return sstyled(styles)(
|
|
43
|
+
<SSpinContainer render={Box}>
|
|
44
|
+
{advanceMode ? (
|
|
45
|
+
<Children />
|
|
46
|
+
) : (
|
|
47
|
+
<>
|
|
48
|
+
<SpinContainer.Content>
|
|
49
|
+
<Children />
|
|
50
|
+
</SpinContainer.Content>
|
|
51
|
+
<SpinContainer.Overlay />
|
|
52
|
+
</>
|
|
53
|
+
)}
|
|
54
|
+
</SSpinContainer>,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
class Overlay extends Component {
|
|
60
|
+
static defaultProps = ({ size, theme }) => ({
|
|
61
|
+
children: <Spin size={size} theme={theme} />,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
render() {
|
|
65
|
+
const SOverlay = Root;
|
|
66
|
+
const { styles, background, loading, duration } = this.asProps;
|
|
67
|
+
|
|
68
|
+
return sstyled(styles)(
|
|
69
|
+
<FadeInOut visible={loading} duration={duration}>
|
|
70
|
+
<SOverlay render={Box} use:background={resolveColor(background)} />
|
|
71
|
+
</FadeInOut>,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function Content(props) {
|
|
77
|
+
const SContent = Root;
|
|
78
|
+
const { styles } = props;
|
|
79
|
+
return sstyled(styles)(<SContent render={Box} />);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const SpinContainer = createComponent(SpinContainerRoot, {
|
|
83
|
+
Overlay,
|
|
84
|
+
Content,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export default SpinContainer;
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { PropGetterFn, ReturnEl, CProps } from '@semcore/core';
|
|
2
|
+
import { ISpinProps } from '@semcore/spin';
|
|
3
|
+
import { IBoxProps } from '@semcore/flex-box';
|
|
4
|
+
|
|
5
|
+
export interface ISpinContainerProps extends IBoxProps, ISpinProps {
|
|
6
|
+
/**
|
|
7
|
+
* Color of container spinner; you can use your own color
|
|
8
|
+
*/
|
|
9
|
+
background?: string;
|
|
10
|
+
/** Duration of animation displaying in ms
|
|
11
|
+
* @default 200
|
|
12
|
+
*/
|
|
13
|
+
duration?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Property responsible for displaying the spinner
|
|
16
|
+
* */
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ISpinContainerContext {
|
|
21
|
+
getOverlayProps: PropGetterFn;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface ISpinContainerOverlayProps extends IBoxProps {
|
|
25
|
+
/**
|
|
26
|
+
* Css background; you can use your own color
|
|
27
|
+
*/
|
|
28
|
+
background?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare const SpinContainer: (<T>(
|
|
32
|
+
props: CProps<ISpinContainerProps & T, ISpinContainerContext>,
|
|
33
|
+
) => ReturnEl) & {
|
|
34
|
+
Content: typeof Box;
|
|
35
|
+
Overlay: <T>(props: ISpinContainerOverlayProps & T) => ReturnEl;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default SpinContainer;
|
|
File without changes
|
|
@@ -24,15 +24,6 @@ SOverlay {
|
|
|
24
24
|
background-color: rgba(255, 255, 255, 0.85);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.animate--enter-active,
|
|
32
|
-
.animate--exit {
|
|
33
|
-
opacity: 1;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.animate--exit-active {
|
|
37
|
-
opacity: 0.01;
|
|
27
|
+
SOverlay[background] {
|
|
28
|
+
background: var(--background);
|
|
38
29
|
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import React, { HTMLAttributes } from 'react';
|
|
2
|
-
import { Component, Merge, PropGetter } from '@semcore/core';
|
|
3
|
-
import { ISpinProps } from '@semcore/spin';
|
|
4
|
-
import { IBoxProps } from '@semcore/flex-box';
|
|
5
|
-
export interface ISpinContainerProps extends IBoxProps, ISpinProps {
|
|
6
|
-
/**
|
|
7
|
-
* Color of container spinner; you can use your own color
|
|
8
|
-
*/
|
|
9
|
-
background?: string;
|
|
10
|
-
/** Duration of animation displaying in ms
|
|
11
|
-
* @default 200
|
|
12
|
-
*/
|
|
13
|
-
duration?: number;
|
|
14
|
-
/**
|
|
15
|
-
* Property responsible for displaying the spinner
|
|
16
|
-
* */
|
|
17
|
-
loading?: boolean;
|
|
18
|
-
}
|
|
19
|
-
export interface ISpinContainerContext extends ISpinContainerProps {
|
|
20
|
-
getOverlayProps: PropGetter<SpinContainerRoot['getOverlayProps']>;
|
|
21
|
-
}
|
|
22
|
-
declare class SpinContainerRoot extends Component<ISpinContainerProps> {
|
|
23
|
-
static displayName: string;
|
|
24
|
-
static style: any;
|
|
25
|
-
static defaultProps: {
|
|
26
|
-
size: string;
|
|
27
|
-
theme: string;
|
|
28
|
-
duration: number;
|
|
29
|
-
};
|
|
30
|
-
getOverlayProps(): {
|
|
31
|
-
background: string;
|
|
32
|
-
size: "s" | "xxs" | "xs" | "m" | "l" | "xl" | "xxl";
|
|
33
|
-
theme: string;
|
|
34
|
-
};
|
|
35
|
-
render(): any;
|
|
36
|
-
}
|
|
37
|
-
export interface ISpinContainerOverlayProps extends IBoxProps {
|
|
38
|
-
background?: string;
|
|
39
|
-
}
|
|
40
|
-
declare const SpinContainer: import("@semcore/core").ComponentType<Merge<ISpinContainerProps, React.HTMLAttributes<HTMLDivElement>>, {
|
|
41
|
-
Overlay: Merge<ISpinContainerOverlayProps, HTMLAttributes<HTMLDivElement>>;
|
|
42
|
-
}, ISpinContainerContext, {
|
|
43
|
-
[key: string]: (arg: unknown) => void;
|
|
44
|
-
}, null>;
|
|
45
|
-
export default SpinContainer;
|
package/src/SpinContainer.tsx
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import React, { HTMLAttributes } from 'react';
|
|
2
|
-
import createComponent, {
|
|
3
|
-
CHILDREN_COMPONENT,
|
|
4
|
-
Component,
|
|
5
|
-
INHERITED_NAME,
|
|
6
|
-
Merge,
|
|
7
|
-
PropGetter,
|
|
8
|
-
styled,
|
|
9
|
-
} from '@semcore/core';
|
|
10
|
-
import { CSSTransition } from 'react-transition-group';
|
|
11
|
-
import Spin, { ISpinProps } from '@semcore/spin';
|
|
12
|
-
import { Box, IBoxProps } from '@semcore/flex-box';
|
|
13
|
-
import resolveColor from '@semcore/utils/lib/color';
|
|
14
|
-
import getOriginChildren from '@semcore/utils/lib/getOriginChildren';
|
|
15
|
-
|
|
16
|
-
import style from './style/spin-container.shadow.css';
|
|
17
|
-
|
|
18
|
-
export interface ISpinContainerProps extends IBoxProps, ISpinProps {
|
|
19
|
-
/**
|
|
20
|
-
* Color of container spinner; you can use your own color
|
|
21
|
-
*/
|
|
22
|
-
background?: string;
|
|
23
|
-
/** Duration of animation displaying in ms
|
|
24
|
-
* @default 200
|
|
25
|
-
*/
|
|
26
|
-
duration?: number;
|
|
27
|
-
/**
|
|
28
|
-
* Property responsible for displaying the spinner
|
|
29
|
-
* */
|
|
30
|
-
loading?: boolean;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface ISpinContainerContext extends ISpinContainerProps {
|
|
34
|
-
getOverlayProps: PropGetter<SpinContainerRoot['getOverlayProps']>;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
class SpinContainerRoot extends Component<ISpinContainerProps> {
|
|
38
|
-
static displayName = 'SpinContainer';
|
|
39
|
-
static style = style;
|
|
40
|
-
static defaultProps = {
|
|
41
|
-
size: 'xxl',
|
|
42
|
-
theme: 'dark',
|
|
43
|
-
duration: 200,
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
getOverlayProps() {
|
|
47
|
-
const { background, size, theme } = this.asProps;
|
|
48
|
-
return {
|
|
49
|
-
background,
|
|
50
|
-
size,
|
|
51
|
-
theme,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
render() {
|
|
56
|
-
const SSpinContainer = this.Root;
|
|
57
|
-
const SContent = Box;
|
|
58
|
-
const { styles, Children: ChildrenRoot, duration, loading } = this.asProps;
|
|
59
|
-
const transitionDuration = `${duration}ms`;
|
|
60
|
-
|
|
61
|
-
const [Children, Overlay] = overlayChildren(ChildrenRoot, SpinContainer.Overlay);
|
|
62
|
-
|
|
63
|
-
return styled(styles)`
|
|
64
|
-
.animate--exit-active,
|
|
65
|
-
.animate--enter-active {
|
|
66
|
-
transition: opacity ${transitionDuration} ease-out;
|
|
67
|
-
}
|
|
68
|
-
`(
|
|
69
|
-
<SSpinContainer render={Box}>
|
|
70
|
-
<SContent>{Children}</SContent>
|
|
71
|
-
<CSSTransition
|
|
72
|
-
in={loading}
|
|
73
|
-
timeout={duration}
|
|
74
|
-
classNames={{
|
|
75
|
-
enterActive: styled.styles['animate--enter-active'],
|
|
76
|
-
exitActive: styled.styles['animate--exit-active'],
|
|
77
|
-
enter: styled.styles['animate--enter'],
|
|
78
|
-
exit: styled.styles['animate--exit'],
|
|
79
|
-
}}
|
|
80
|
-
unmountOnExit
|
|
81
|
-
>
|
|
82
|
-
{Overlay || <SpinContainer.Overlay />}
|
|
83
|
-
</CSSTransition>
|
|
84
|
-
</SSpinContainer>,
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function overlayChildren(Children: any, Overlay: React.ComponentType) {
|
|
90
|
-
const children = getOriginChildren(Children);
|
|
91
|
-
if (typeof children === 'function') {
|
|
92
|
-
return [<Children />, null];
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
let OverlayChildren = null;
|
|
96
|
-
return [
|
|
97
|
-
React.Children.toArray(children).map((element) => {
|
|
98
|
-
if (!React.isValidElement(element)) return element;
|
|
99
|
-
if (element.type === React.Fragment) return element;
|
|
100
|
-
if (element.type[CHILDREN_COMPONENT]) {
|
|
101
|
-
return overlayChildren(element.type, Overlay);
|
|
102
|
-
}
|
|
103
|
-
// @ts-ignore
|
|
104
|
-
const inheritedNames = element.type[INHERITED_NAME] || [element.type.displayName];
|
|
105
|
-
if (inheritedNames.includes(Overlay.displayName)) {
|
|
106
|
-
OverlayChildren = element;
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
return element;
|
|
110
|
-
}),
|
|
111
|
-
OverlayChildren,
|
|
112
|
-
];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export interface ISpinContainerOverlayProps extends IBoxProps {
|
|
116
|
-
background?: string;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
class Overlay extends Component<ISpinContainerOverlayProps> {
|
|
120
|
-
static defaultProps = ({ size, theme }) => ({
|
|
121
|
-
children: <Spin size={size} theme={theme} />,
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
render() {
|
|
125
|
-
const SOverlay = this.Root;
|
|
126
|
-
const { background, styles } = this.asProps;
|
|
127
|
-
|
|
128
|
-
return styled(styles)`
|
|
129
|
-
SOverlay[background] {
|
|
130
|
-
background: ${resolveColor(background)};
|
|
131
|
-
}
|
|
132
|
-
`(<SOverlay render={Box} background={background} />);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const SpinContainer = createComponent<
|
|
137
|
-
Merge<ISpinContainerProps, HTMLAttributes<HTMLDivElement>>,
|
|
138
|
-
{
|
|
139
|
-
Overlay: Merge<ISpinContainerOverlayProps, HTMLAttributes<HTMLDivElement>>;
|
|
140
|
-
},
|
|
141
|
-
ISpinContainerContext
|
|
142
|
-
>(SpinContainerRoot, { Overlay });
|
|
143
|
-
|
|
144
|
-
export default SpinContainer;
|