@alfalab/core-components-base-modal 3.2.0 → 4.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 +16 -0
- package/dist/Component.d.ts +2 -0
- package/dist/Component.js +10 -3
- package/dist/cssm/Component.d.ts +2 -0
- package/dist/cssm/Component.js +9 -2
- package/dist/esm/Component.d.ts +2 -0
- package/dist/esm/Component.js +10 -3
- package/dist/esm/index.css +13 -13
- package/dist/index.css +13 -13
- package/dist/modern/Component.d.ts +2 -0
- package/dist/modern/Component.js +10 -3
- package/dist/modern/index.css +13 -13
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [4.0.0](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-base-modal@3.2.0...@alfalab/core-components-base-modal@4.0.0) (2022-03-24)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **bottom-sheet:** update-bottom-sheet ([#1025](https://github.com/alfa-laboratory/core-components/issues/1025)) ([26fa9aa](https://github.com/alfa-laboratory/core-components/commit/26fa9aab68bebf0f7093a38bc0f18a9b596ccf37)), closes [#1032](https://github.com/alfa-laboratory/core-components/issues/1032)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
* **bottom-sheet:** Большое обновление стилей, множество дополнительных настроек
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
# [3.2.0](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-base-modal@3.1.0...@alfalab/core-components-base-modal@3.2.0) (2022-03-01)
|
|
7
23
|
|
|
8
24
|
|
package/dist/Component.d.ts
CHANGED
|
@@ -119,6 +119,8 @@ type BaseModalContext = {
|
|
|
119
119
|
hasScroll?: boolean;
|
|
120
120
|
headerHighlighted?: boolean;
|
|
121
121
|
footerHighlighted?: boolean;
|
|
122
|
+
headerOffset?: number;
|
|
123
|
+
setHeaderOffset: (offset: number) => void;
|
|
122
124
|
contentRef: Ref<HTMLElement>;
|
|
123
125
|
setHasHeader: (exists: boolean) => void;
|
|
124
126
|
setHasFooter: (exists: boolean) => void;
|
package/dist/Component.js
CHANGED
|
@@ -48,7 +48,7 @@ var __assign = function () {
|
|
|
48
48
|
return __assign.apply(this, arguments);
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
var styles = {"component":"base-
|
|
51
|
+
var styles = {"component":"base-modal__component_t7alb","wrapper":"base-modal__wrapper_t7alb","content":"base-modal__content_t7alb","hidden":"base-modal__hidden_t7alb","backdrop":"base-modal__backdrop_t7alb","appear":"base-modal__appear_t7alb","enter":"base-modal__enter_t7alb","appearActive":"base-modal__appearActive_t7alb","enterActive":"base-modal__enterActive_t7alb","exit":"base-modal__exit_t7alb","exitActive":"base-modal__exitActive_t7alb","exitDone":"base-modal__exitDone_t7alb"};
|
|
52
52
|
require('./index.css')
|
|
53
53
|
|
|
54
54
|
var BaseModalContext = React__default['default'].createContext({
|
|
@@ -57,6 +57,8 @@ var BaseModalContext = React__default['default'].createContext({
|
|
|
57
57
|
hasScroll: false,
|
|
58
58
|
headerHighlighted: false,
|
|
59
59
|
footerHighlighted: false,
|
|
60
|
+
headerOffset: 0,
|
|
61
|
+
setHeaderOffset: function () { return null; },
|
|
60
62
|
contentRef: function () { return null; },
|
|
61
63
|
setHasHeader: function () { return null; },
|
|
62
64
|
setHasFooter: function () { return null; },
|
|
@@ -70,6 +72,7 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
70
72
|
var _r = React.useState(false), hasFooter = _r[0], setHasFooter = _r[1];
|
|
71
73
|
var _s = React.useState(false), headerHighlighted = _s[0], setHeaderHighlighted = _s[1];
|
|
72
74
|
var _t = React.useState(false), footerHighlighted = _t[0], setFooterHighlighted = _t[1];
|
|
75
|
+
var _u = React.useState(0), headerOffset = _u[0], setHeaderOffset = _u[1];
|
|
73
76
|
var componentNodeRef = React.useRef(null);
|
|
74
77
|
var wrapperRef = React.useRef(null);
|
|
75
78
|
var scrollableNodeRef = React.useRef(null);
|
|
@@ -108,14 +111,14 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
108
111
|
return;
|
|
109
112
|
if (hasHeader) {
|
|
110
113
|
setHeaderHighlighted(!utils.isScrolledToTop(scrollableNodeRef.current) &&
|
|
111
|
-
componentNodeRef.current.getBoundingClientRect().top <= 0);
|
|
114
|
+
componentNodeRef.current.getBoundingClientRect().top - headerOffset <= 0);
|
|
112
115
|
}
|
|
113
116
|
if (hasFooter) {
|
|
114
117
|
setFooterHighlighted(!utils.isScrolledToBottom(scrollableNodeRef.current) &&
|
|
115
118
|
componentNodeRef.current.getBoundingClientRect().bottom >=
|
|
116
119
|
window.innerHeight);
|
|
117
120
|
}
|
|
118
|
-
}, [hasFooter, hasHeader]);
|
|
121
|
+
}, [hasFooter, hasHeader, headerOffset]);
|
|
119
122
|
var handleClose = React.useCallback(function (event, reason) {
|
|
120
123
|
if (onClose) {
|
|
121
124
|
onClose(event, reason);
|
|
@@ -210,6 +213,8 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
210
213
|
hasScroll: hasScroll,
|
|
211
214
|
headerHighlighted: headerHighlighted,
|
|
212
215
|
footerHighlighted: footerHighlighted,
|
|
216
|
+
headerOffset: headerOffset,
|
|
217
|
+
setHeaderOffset: setHeaderOffset,
|
|
213
218
|
contentRef: contentRef,
|
|
214
219
|
setHasHeader: setHasHeader,
|
|
215
220
|
setHasFooter: setHasFooter,
|
|
@@ -221,6 +226,8 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
221
226
|
hasScroll,
|
|
222
227
|
headerHighlighted,
|
|
223
228
|
footerHighlighted,
|
|
229
|
+
headerOffset,
|
|
230
|
+
setHeaderOffset,
|
|
224
231
|
handleClose,
|
|
225
232
|
]);
|
|
226
233
|
if (!shouldRender)
|
package/dist/cssm/Component.d.ts
CHANGED
|
@@ -119,6 +119,8 @@ type BaseModalContext = {
|
|
|
119
119
|
hasScroll?: boolean;
|
|
120
120
|
headerHighlighted?: boolean;
|
|
121
121
|
footerHighlighted?: boolean;
|
|
122
|
+
headerOffset?: number;
|
|
123
|
+
setHeaderOffset: (offset: number) => void;
|
|
122
124
|
contentRef: Ref<HTMLElement>;
|
|
123
125
|
setHasHeader: (exists: boolean) => void;
|
|
124
126
|
setHasFooter: (exists: boolean) => void;
|
package/dist/cssm/Component.js
CHANGED
|
@@ -56,6 +56,8 @@ var BaseModalContext = React__default['default'].createContext({
|
|
|
56
56
|
hasScroll: false,
|
|
57
57
|
headerHighlighted: false,
|
|
58
58
|
footerHighlighted: false,
|
|
59
|
+
headerOffset: 0,
|
|
60
|
+
setHeaderOffset: function () { return null; },
|
|
59
61
|
contentRef: function () { return null; },
|
|
60
62
|
setHasHeader: function () { return null; },
|
|
61
63
|
setHasFooter: function () { return null; },
|
|
@@ -69,6 +71,7 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
69
71
|
var _r = React.useState(false), hasFooter = _r[0], setHasFooter = _r[1];
|
|
70
72
|
var _s = React.useState(false), headerHighlighted = _s[0], setHeaderHighlighted = _s[1];
|
|
71
73
|
var _t = React.useState(false), footerHighlighted = _t[0], setFooterHighlighted = _t[1];
|
|
74
|
+
var _u = React.useState(0), headerOffset = _u[0], setHeaderOffset = _u[1];
|
|
72
75
|
var componentNodeRef = React.useRef(null);
|
|
73
76
|
var wrapperRef = React.useRef(null);
|
|
74
77
|
var scrollableNodeRef = React.useRef(null);
|
|
@@ -107,14 +110,14 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
107
110
|
return;
|
|
108
111
|
if (hasHeader) {
|
|
109
112
|
setHeaderHighlighted(!utils.isScrolledToTop(scrollableNodeRef.current) &&
|
|
110
|
-
componentNodeRef.current.getBoundingClientRect().top <= 0);
|
|
113
|
+
componentNodeRef.current.getBoundingClientRect().top - headerOffset <= 0);
|
|
111
114
|
}
|
|
112
115
|
if (hasFooter) {
|
|
113
116
|
setFooterHighlighted(!utils.isScrolledToBottom(scrollableNodeRef.current) &&
|
|
114
117
|
componentNodeRef.current.getBoundingClientRect().bottom >=
|
|
115
118
|
window.innerHeight);
|
|
116
119
|
}
|
|
117
|
-
}, [hasFooter, hasHeader]);
|
|
120
|
+
}, [hasFooter, hasHeader, headerOffset]);
|
|
118
121
|
var handleClose = React.useCallback(function (event, reason) {
|
|
119
122
|
if (onClose) {
|
|
120
123
|
onClose(event, reason);
|
|
@@ -209,6 +212,8 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
209
212
|
hasScroll: hasScroll,
|
|
210
213
|
headerHighlighted: headerHighlighted,
|
|
211
214
|
footerHighlighted: footerHighlighted,
|
|
215
|
+
headerOffset: headerOffset,
|
|
216
|
+
setHeaderOffset: setHeaderOffset,
|
|
212
217
|
contentRef: contentRef,
|
|
213
218
|
setHasHeader: setHasHeader,
|
|
214
219
|
setHasFooter: setHasFooter,
|
|
@@ -220,6 +225,8 @@ var BaseModal = React.forwardRef(function (_a, ref) {
|
|
|
220
225
|
hasScroll,
|
|
221
226
|
headerHighlighted,
|
|
222
227
|
footerHighlighted,
|
|
228
|
+
headerOffset,
|
|
229
|
+
setHeaderOffset,
|
|
223
230
|
handleClose,
|
|
224
231
|
]);
|
|
225
232
|
if (!shouldRender)
|
package/dist/esm/Component.d.ts
CHANGED
|
@@ -119,6 +119,8 @@ type BaseModalContext = {
|
|
|
119
119
|
hasScroll?: boolean;
|
|
120
120
|
headerHighlighted?: boolean;
|
|
121
121
|
footerHighlighted?: boolean;
|
|
122
|
+
headerOffset?: number;
|
|
123
|
+
setHeaderOffset: (offset: number) => void;
|
|
122
124
|
contentRef: Ref<HTMLElement>;
|
|
123
125
|
setHasHeader: (exists: boolean) => void;
|
|
124
126
|
setHasFooter: (exists: boolean) => void;
|
package/dist/esm/Component.js
CHANGED
|
@@ -37,7 +37,7 @@ var __assign = function () {
|
|
|
37
37
|
return __assign.apply(this, arguments);
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
var styles = {"component":"base-
|
|
40
|
+
var styles = {"component":"base-modal__component_t7alb","wrapper":"base-modal__wrapper_t7alb","content":"base-modal__content_t7alb","hidden":"base-modal__hidden_t7alb","backdrop":"base-modal__backdrop_t7alb","appear":"base-modal__appear_t7alb","enter":"base-modal__enter_t7alb","appearActive":"base-modal__appearActive_t7alb","enterActive":"base-modal__enterActive_t7alb","exit":"base-modal__exit_t7alb","exitActive":"base-modal__exitActive_t7alb","exitDone":"base-modal__exitDone_t7alb"};
|
|
41
41
|
require('./index.css')
|
|
42
42
|
|
|
43
43
|
var BaseModalContext = React.createContext({
|
|
@@ -46,6 +46,8 @@ var BaseModalContext = React.createContext({
|
|
|
46
46
|
hasScroll: false,
|
|
47
47
|
headerHighlighted: false,
|
|
48
48
|
footerHighlighted: false,
|
|
49
|
+
headerOffset: 0,
|
|
50
|
+
setHeaderOffset: function () { return null; },
|
|
49
51
|
contentRef: function () { return null; },
|
|
50
52
|
setHasHeader: function () { return null; },
|
|
51
53
|
setHasFooter: function () { return null; },
|
|
@@ -59,6 +61,7 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
59
61
|
var _r = useState(false), hasFooter = _r[0], setHasFooter = _r[1];
|
|
60
62
|
var _s = useState(false), headerHighlighted = _s[0], setHeaderHighlighted = _s[1];
|
|
61
63
|
var _t = useState(false), footerHighlighted = _t[0], setFooterHighlighted = _t[1];
|
|
64
|
+
var _u = useState(0), headerOffset = _u[0], setHeaderOffset = _u[1];
|
|
62
65
|
var componentNodeRef = useRef(null);
|
|
63
66
|
var wrapperRef = useRef(null);
|
|
64
67
|
var scrollableNodeRef = useRef(null);
|
|
@@ -97,14 +100,14 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
97
100
|
return;
|
|
98
101
|
if (hasHeader) {
|
|
99
102
|
setHeaderHighlighted(!isScrolledToTop(scrollableNodeRef.current) &&
|
|
100
|
-
componentNodeRef.current.getBoundingClientRect().top <= 0);
|
|
103
|
+
componentNodeRef.current.getBoundingClientRect().top - headerOffset <= 0);
|
|
101
104
|
}
|
|
102
105
|
if (hasFooter) {
|
|
103
106
|
setFooterHighlighted(!isScrolledToBottom(scrollableNodeRef.current) &&
|
|
104
107
|
componentNodeRef.current.getBoundingClientRect().bottom >=
|
|
105
108
|
window.innerHeight);
|
|
106
109
|
}
|
|
107
|
-
}, [hasFooter, hasHeader]);
|
|
110
|
+
}, [hasFooter, hasHeader, headerOffset]);
|
|
108
111
|
var handleClose = useCallback(function (event, reason) {
|
|
109
112
|
if (onClose) {
|
|
110
113
|
onClose(event, reason);
|
|
@@ -199,6 +202,8 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
199
202
|
hasScroll: hasScroll,
|
|
200
203
|
headerHighlighted: headerHighlighted,
|
|
201
204
|
footerHighlighted: footerHighlighted,
|
|
205
|
+
headerOffset: headerOffset,
|
|
206
|
+
setHeaderOffset: setHeaderOffset,
|
|
202
207
|
contentRef: contentRef,
|
|
203
208
|
setHasHeader: setHasHeader,
|
|
204
209
|
setHasFooter: setHasFooter,
|
|
@@ -210,6 +215,8 @@ var BaseModal = forwardRef(function (_a, ref) {
|
|
|
210
215
|
hasScroll,
|
|
211
216
|
headerHighlighted,
|
|
212
217
|
footerHighlighted,
|
|
218
|
+
headerOffset,
|
|
219
|
+
setHeaderOffset,
|
|
213
220
|
handleClose,
|
|
214
221
|
]);
|
|
215
222
|
if (!shouldRender)
|
package/dist/esm/index.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: 10wmb */
|
|
2
2
|
:root {
|
|
3
3
|
--color-light-bg-primary: #fff;
|
|
4
4
|
}
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
/* Hard up */
|
|
12
12
|
}
|
|
13
|
-
.base-
|
|
13
|
+
.base-modal__component_t7alb {
|
|
14
14
|
position: relative;
|
|
15
15
|
box-sizing: border-box;
|
|
16
16
|
background: var(--color-light-bg-primary);
|
|
17
17
|
margin: auto;
|
|
18
18
|
flex-shrink: 0;
|
|
19
19
|
}
|
|
20
|
-
.base-
|
|
20
|
+
.base-modal__wrapper_t7alb {
|
|
21
21
|
position: fixed;
|
|
22
22
|
top: 0;
|
|
23
23
|
left: 0;
|
|
@@ -30,33 +30,33 @@
|
|
|
30
30
|
align-items: center;
|
|
31
31
|
outline: 0;
|
|
32
32
|
}
|
|
33
|
-
.base-
|
|
33
|
+
.base-modal__content_t7alb {
|
|
34
34
|
width: 100%;
|
|
35
35
|
height: 100%;
|
|
36
36
|
display: flex;
|
|
37
37
|
flex-direction: column;
|
|
38
38
|
flex: 1;
|
|
39
39
|
}
|
|
40
|
-
.base-
|
|
40
|
+
.base-modal__hidden_t7alb {
|
|
41
41
|
display: none;
|
|
42
42
|
}
|
|
43
|
-
.base-
|
|
43
|
+
.base-modal__backdrop_t7alb {
|
|
44
44
|
z-index: 0;
|
|
45
45
|
}
|
|
46
|
-
.base-
|
|
47
|
-
.base-
|
|
46
|
+
.base-modal__appear_t7alb,
|
|
47
|
+
.base-modal__enter_t7alb {
|
|
48
48
|
opacity: 0;
|
|
49
49
|
}
|
|
50
|
-
.base-
|
|
51
|
-
.base-
|
|
50
|
+
.base-modal__appearActive_t7alb,
|
|
51
|
+
.base-modal__enterActive_t7alb {
|
|
52
52
|
opacity: 1;
|
|
53
53
|
transition: opacity 200ms ease-in;
|
|
54
54
|
}
|
|
55
|
-
.base-
|
|
55
|
+
.base-modal__exit_t7alb {
|
|
56
56
|
opacity: 1;
|
|
57
57
|
}
|
|
58
|
-
.base-
|
|
59
|
-
.base-
|
|
58
|
+
.base-modal__exitActive_t7alb,
|
|
59
|
+
.base-modal__exitDone_t7alb {
|
|
60
60
|
opacity: 0;
|
|
61
61
|
transition: opacity 200ms ease-out;
|
|
62
62
|
}
|
package/dist/index.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: 10wmb */
|
|
2
2
|
:root {
|
|
3
3
|
--color-light-bg-primary: #fff;
|
|
4
4
|
}
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
/* Hard up */
|
|
12
12
|
}
|
|
13
|
-
.base-
|
|
13
|
+
.base-modal__component_t7alb {
|
|
14
14
|
position: relative;
|
|
15
15
|
box-sizing: border-box;
|
|
16
16
|
background: var(--color-light-bg-primary);
|
|
17
17
|
margin: auto;
|
|
18
18
|
flex-shrink: 0;
|
|
19
19
|
}
|
|
20
|
-
.base-
|
|
20
|
+
.base-modal__wrapper_t7alb {
|
|
21
21
|
position: fixed;
|
|
22
22
|
top: 0;
|
|
23
23
|
left: 0;
|
|
@@ -30,33 +30,33 @@
|
|
|
30
30
|
align-items: center;
|
|
31
31
|
outline: 0;
|
|
32
32
|
}
|
|
33
|
-
.base-
|
|
33
|
+
.base-modal__content_t7alb {
|
|
34
34
|
width: 100%;
|
|
35
35
|
height: 100%;
|
|
36
36
|
display: flex;
|
|
37
37
|
flex-direction: column;
|
|
38
38
|
flex: 1;
|
|
39
39
|
}
|
|
40
|
-
.base-
|
|
40
|
+
.base-modal__hidden_t7alb {
|
|
41
41
|
display: none;
|
|
42
42
|
}
|
|
43
|
-
.base-
|
|
43
|
+
.base-modal__backdrop_t7alb {
|
|
44
44
|
z-index: 0;
|
|
45
45
|
}
|
|
46
|
-
.base-
|
|
47
|
-
.base-
|
|
46
|
+
.base-modal__appear_t7alb,
|
|
47
|
+
.base-modal__enter_t7alb {
|
|
48
48
|
opacity: 0;
|
|
49
49
|
}
|
|
50
|
-
.base-
|
|
51
|
-
.base-
|
|
50
|
+
.base-modal__appearActive_t7alb,
|
|
51
|
+
.base-modal__enterActive_t7alb {
|
|
52
52
|
opacity: 1;
|
|
53
53
|
transition: opacity 200ms ease-in;
|
|
54
54
|
}
|
|
55
|
-
.base-
|
|
55
|
+
.base-modal__exit_t7alb {
|
|
56
56
|
opacity: 1;
|
|
57
57
|
}
|
|
58
|
-
.base-
|
|
59
|
-
.base-
|
|
58
|
+
.base-modal__exitActive_t7alb,
|
|
59
|
+
.base-modal__exitDone_t7alb {
|
|
60
60
|
opacity: 0;
|
|
61
61
|
transition: opacity 200ms ease-out;
|
|
62
62
|
}
|
|
@@ -119,6 +119,8 @@ type BaseModalContext = {
|
|
|
119
119
|
hasScroll?: boolean;
|
|
120
120
|
headerHighlighted?: boolean;
|
|
121
121
|
footerHighlighted?: boolean;
|
|
122
|
+
headerOffset?: number;
|
|
123
|
+
setHeaderOffset: (offset: number) => void;
|
|
122
124
|
contentRef: Ref<HTMLElement>;
|
|
123
125
|
setHasHeader: (exists: boolean) => void;
|
|
124
126
|
setHasFooter: (exists: boolean) => void;
|
package/dist/modern/Component.js
CHANGED
|
@@ -10,7 +10,7 @@ import { stackingOrder, Stack } from '@alfalab/core-components-stack/dist/modern
|
|
|
10
10
|
import '@alfalab/core-components-global-store/dist/modern';
|
|
11
11
|
import { isScrolledToTop, isScrolledToBottom, handleContainer, restoreContainerStyles, hasScrollbar } from './utils.js';
|
|
12
12
|
|
|
13
|
-
var styles = {"component":"base-
|
|
13
|
+
var styles = {"component":"base-modal__component_t7alb","wrapper":"base-modal__wrapper_t7alb","content":"base-modal__content_t7alb","hidden":"base-modal__hidden_t7alb","backdrop":"base-modal__backdrop_t7alb","appear":"base-modal__appear_t7alb","enter":"base-modal__enter_t7alb","appearActive":"base-modal__appearActive_t7alb","enterActive":"base-modal__enterActive_t7alb","exit":"base-modal__exit_t7alb","exitActive":"base-modal__exitActive_t7alb","exitDone":"base-modal__exitDone_t7alb"};
|
|
14
14
|
require('./index.css')
|
|
15
15
|
|
|
16
16
|
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
|
@@ -20,6 +20,8 @@ const BaseModalContext = React.createContext({
|
|
|
20
20
|
hasScroll: false,
|
|
21
21
|
headerHighlighted: false,
|
|
22
22
|
footerHighlighted: false,
|
|
23
|
+
headerOffset: 0,
|
|
24
|
+
setHeaderOffset: () => null,
|
|
23
25
|
contentRef: () => null,
|
|
24
26
|
setHasHeader: () => null,
|
|
25
27
|
setHasFooter: () => null,
|
|
@@ -32,6 +34,7 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
32
34
|
const [hasFooter, setHasFooter] = useState(false);
|
|
33
35
|
const [headerHighlighted, setHeaderHighlighted] = useState(false);
|
|
34
36
|
const [footerHighlighted, setFooterHighlighted] = useState(false);
|
|
37
|
+
const [headerOffset, setHeaderOffset] = useState(0);
|
|
35
38
|
const componentNodeRef = useRef(null);
|
|
36
39
|
const wrapperRef = useRef(null);
|
|
37
40
|
const scrollableNodeRef = useRef(null);
|
|
@@ -70,14 +73,14 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
70
73
|
return;
|
|
71
74
|
if (hasHeader) {
|
|
72
75
|
setHeaderHighlighted(!isScrolledToTop(scrollableNodeRef.current) &&
|
|
73
|
-
componentNodeRef.current.getBoundingClientRect().top <= 0);
|
|
76
|
+
componentNodeRef.current.getBoundingClientRect().top - headerOffset <= 0);
|
|
74
77
|
}
|
|
75
78
|
if (hasFooter) {
|
|
76
79
|
setFooterHighlighted(!isScrolledToBottom(scrollableNodeRef.current) &&
|
|
77
80
|
componentNodeRef.current.getBoundingClientRect().bottom >=
|
|
78
81
|
window.innerHeight);
|
|
79
82
|
}
|
|
80
|
-
}, [hasFooter, hasHeader]);
|
|
83
|
+
}, [hasFooter, hasHeader, headerOffset]);
|
|
81
84
|
const handleClose = useCallback((event, reason) => {
|
|
82
85
|
if (onClose) {
|
|
83
86
|
onClose(event, reason);
|
|
@@ -172,6 +175,8 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
172
175
|
hasScroll,
|
|
173
176
|
headerHighlighted,
|
|
174
177
|
footerHighlighted,
|
|
178
|
+
headerOffset,
|
|
179
|
+
setHeaderOffset,
|
|
175
180
|
contentRef,
|
|
176
181
|
setHasHeader,
|
|
177
182
|
setHasFooter,
|
|
@@ -183,6 +188,8 @@ const BaseModal = forwardRef(({ open, container, children, scrollHandler = 'wrap
|
|
|
183
188
|
hasScroll,
|
|
184
189
|
headerHighlighted,
|
|
185
190
|
footerHighlighted,
|
|
191
|
+
headerOffset,
|
|
192
|
+
setHeaderOffset,
|
|
186
193
|
handleClose,
|
|
187
194
|
]);
|
|
188
195
|
if (!shouldRender)
|
package/dist/modern/index.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: 10wmb */
|
|
2
2
|
:root {
|
|
3
3
|
--color-light-bg-primary: #fff;
|
|
4
4
|
}
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
/* Hard up */
|
|
12
12
|
}
|
|
13
|
-
.base-
|
|
13
|
+
.base-modal__component_t7alb {
|
|
14
14
|
position: relative;
|
|
15
15
|
box-sizing: border-box;
|
|
16
16
|
background: var(--color-light-bg-primary);
|
|
17
17
|
margin: auto;
|
|
18
18
|
flex-shrink: 0;
|
|
19
19
|
}
|
|
20
|
-
.base-
|
|
20
|
+
.base-modal__wrapper_t7alb {
|
|
21
21
|
position: fixed;
|
|
22
22
|
top: 0;
|
|
23
23
|
left: 0;
|
|
@@ -30,33 +30,33 @@
|
|
|
30
30
|
align-items: center;
|
|
31
31
|
outline: 0;
|
|
32
32
|
}
|
|
33
|
-
.base-
|
|
33
|
+
.base-modal__content_t7alb {
|
|
34
34
|
width: 100%;
|
|
35
35
|
height: 100%;
|
|
36
36
|
display: flex;
|
|
37
37
|
flex-direction: column;
|
|
38
38
|
flex: 1;
|
|
39
39
|
}
|
|
40
|
-
.base-
|
|
40
|
+
.base-modal__hidden_t7alb {
|
|
41
41
|
display: none;
|
|
42
42
|
}
|
|
43
|
-
.base-
|
|
43
|
+
.base-modal__backdrop_t7alb {
|
|
44
44
|
z-index: 0;
|
|
45
45
|
}
|
|
46
|
-
.base-
|
|
47
|
-
.base-
|
|
46
|
+
.base-modal__appear_t7alb,
|
|
47
|
+
.base-modal__enter_t7alb {
|
|
48
48
|
opacity: 0;
|
|
49
49
|
}
|
|
50
|
-
.base-
|
|
51
|
-
.base-
|
|
50
|
+
.base-modal__appearActive_t7alb,
|
|
51
|
+
.base-modal__enterActive_t7alb {
|
|
52
52
|
opacity: 1;
|
|
53
53
|
transition: opacity 200ms ease-in;
|
|
54
54
|
}
|
|
55
|
-
.base-
|
|
55
|
+
.base-modal__exit_t7alb {
|
|
56
56
|
opacity: 1;
|
|
57
57
|
}
|
|
58
|
-
.base-
|
|
59
|
-
.base-
|
|
58
|
+
.base-modal__exitActive_t7alb,
|
|
59
|
+
.base-modal__exitDone_t7alb {
|
|
60
60
|
opacity: 0;
|
|
61
61
|
transition: opacity 200ms ease-out;
|
|
62
62
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfalab/core-components-base-modal",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "BaseModal component",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"react": "^16.9.0 || ^17.0.1"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "ae23b2de3600ef2921e125b35916a8b95cd1a909"
|
|
35
35
|
}
|