@salutejs/plasma-new-hope 0.337.1-canary.2276.18280051462.0 → 0.338.0-canary.2254.18336605490.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/cjs/components/Combobox/ComboboxNew/Combobox.js +1 -1
- package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/cjs/components/Modal/Modal.css +2 -2
- package/cjs/components/Modal/Modal.js +4 -5
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Select/Select.js +1 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +1 -1
- package/emotion/cjs/components/Modal/Modal.js +6 -7
- package/emotion/cjs/components/Scrollbar/Scrollbar.js +423 -0
- package/emotion/cjs/components/Scrollbar/Scrollbar.styles.js +59 -0
- package/emotion/cjs/components/Scrollbar/Scrollbar.tokens.js +39 -0
- package/emotion/cjs/components/Scrollbar/Scrollbar.types.js +4 -0
- package/emotion/cjs/components/Scrollbar/index.js +26 -0
- package/emotion/cjs/components/Scrollbar/utils.js +87 -0
- package/emotion/cjs/components/Scrollbar/variations/_size/base.js +12 -0
- package/emotion/cjs/components/Scrollbar/variations/_view/base.js +12 -0
- package/emotion/cjs/components/Select/Select.js +1 -1
- package/emotion/cjs/examples/components/Scrollbar/Scrollbar.config.js +27 -0
- package/emotion/cjs/examples/components/Scrollbar/Scrollbar.js +15 -0
- package/emotion/cjs/mixins/addScrollbar.js +24 -0
- package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +1 -1
- package/emotion/es/components/Modal/Modal.js +5 -6
- package/emotion/es/components/Scrollbar/Scrollbar.js +359 -0
- package/emotion/es/components/Scrollbar/Scrollbar.styles.js +24 -0
- package/emotion/es/components/Scrollbar/Scrollbar.tokens.js +21 -0
- package/emotion/es/components/Scrollbar/Scrollbar.types.js +1 -0
- package/emotion/es/components/Scrollbar/index.js +2 -0
- package/emotion/es/components/Scrollbar/utils.js +69 -0
- package/emotion/es/components/Scrollbar/variations/_size/base.js +2 -0
- package/emotion/es/components/Scrollbar/variations/_view/base.js +2 -0
- package/emotion/es/components/Select/Select.js +1 -1
- package/emotion/es/examples/components/Scrollbar/Scrollbar.config.js +17 -0
- package/emotion/es/examples/components/Scrollbar/Scrollbar.js +5 -0
- package/emotion/es/mixins/addScrollbar.js +6 -0
- package/es/components/Combobox/ComboboxNew/Combobox.js +1 -1
- package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/es/components/Modal/Modal.css +2 -2
- package/es/components/Modal/Modal.js +4 -5
- package/es/components/Modal/Modal.js.map +1 -1
- package/es/components/Select/Select.js +1 -1
- package/es/components/Select/Select.js.map +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +1 -1
- package/styled-components/cjs/components/Modal/Modal.js +6 -7
- package/styled-components/cjs/components/Scrollbar/Scrollbar.js +423 -0
- package/styled-components/cjs/components/Scrollbar/Scrollbar.styles.js +121 -0
- package/styled-components/cjs/components/Scrollbar/Scrollbar.tokens.js +39 -0
- package/styled-components/cjs/components/Scrollbar/Scrollbar.types.js +4 -0
- package/styled-components/cjs/components/Scrollbar/index.js +26 -0
- package/styled-components/cjs/components/Scrollbar/utils.js +87 -0
- package/styled-components/cjs/components/Scrollbar/variations/_size/base.js +14 -0
- package/styled-components/cjs/components/Scrollbar/variations/_view/base.js +14 -0
- package/styled-components/cjs/components/Select/Select.js +1 -1
- package/styled-components/cjs/examples/components/Scrollbar/Scrollbar.config.js +45 -0
- package/styled-components/cjs/examples/components/Scrollbar/Scrollbar.js +15 -0
- package/styled-components/cjs/mixins/addScrollbar.js +24 -0
- package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +1 -1
- package/styled-components/es/components/Modal/Modal.js +5 -6
- package/styled-components/es/components/Scrollbar/Scrollbar.js +359 -0
- package/styled-components/es/components/Scrollbar/Scrollbar.styles.js +51 -0
- package/styled-components/es/components/Scrollbar/Scrollbar.tokens.js +21 -0
- package/styled-components/es/components/Scrollbar/Scrollbar.types.js +1 -0
- package/styled-components/es/components/Scrollbar/index.js +2 -0
- package/styled-components/es/components/Scrollbar/utils.js +69 -0
- package/styled-components/es/components/Scrollbar/variations/_size/base.js +4 -0
- package/styled-components/es/components/Scrollbar/variations/_view/base.js +4 -0
- package/styled-components/es/components/Select/Select.js +1 -1
- package/styled-components/es/examples/components/Scrollbar/Scrollbar.config.js +35 -0
- package/styled-components/es/examples/components/Scrollbar/Scrollbar.js +5 -0
- package/styled-components/es/mixins/addScrollbar.js +6 -0
- package/types/components/Modal/Modal.d.ts.map +1 -1
- package/types/components/Scrollbar/Scrollbar.d.ts +23 -0
- package/types/components/Scrollbar/Scrollbar.d.ts.map +1 -0
- package/types/components/Scrollbar/Scrollbar.styles.d.ts +7 -0
- package/types/components/Scrollbar/Scrollbar.styles.d.ts.map +1 -0
- package/types/components/Scrollbar/Scrollbar.tokens.d.ts +22 -0
- package/types/components/Scrollbar/Scrollbar.tokens.d.ts.map +1 -0
- package/types/components/Scrollbar/Scrollbar.types.d.ts +52 -0
- package/types/components/Scrollbar/Scrollbar.types.d.ts.map +1 -0
- package/types/components/Scrollbar/index.d.ts +4 -0
- package/types/components/Scrollbar/index.d.ts.map +1 -0
- package/types/components/Scrollbar/utils.d.ts +7 -0
- package/types/components/Scrollbar/utils.d.ts.map +1 -0
- package/types/components/Scrollbar/variations/_size/base.d.ts +2 -0
- package/types/components/Scrollbar/variations/_size/base.d.ts.map +1 -0
- package/types/components/Scrollbar/variations/_view/base.d.ts +2 -0
- package/types/components/Scrollbar/variations/_view/base.d.ts.map +1 -0
- package/types/examples/components/Scrollbar/Scrollbar.config.d.ts +16 -0
- package/types/examples/components/Scrollbar/Scrollbar.config.d.ts.map +1 -0
- package/types/examples/components/Scrollbar/Scrollbar.d.ts +10 -0
- package/types/examples/components/Scrollbar/Scrollbar.d.ts.map +1 -0
- package/types/mixins/addScrollbar.d.ts +3 -0
- package/types/mixins/addScrollbar.d.ts.map +1 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get calculateScrollbar () {
|
|
13
|
+
return calculateScrollbar;
|
|
14
|
+
},
|
|
15
|
+
get parseOffset () {
|
|
16
|
+
return parseOffset;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var parseOffset = function(offset) {
|
|
20
|
+
if (!offset) {
|
|
21
|
+
return {
|
|
22
|
+
top: '0',
|
|
23
|
+
right: '0',
|
|
24
|
+
bottom: '0',
|
|
25
|
+
left: '0'
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
var offsetString = typeof offset === 'number' ? "".concat(offset, "px") : offset;
|
|
29
|
+
var parts = offsetString.split(/\s+/).filter(Boolean);
|
|
30
|
+
switch(parts.length){
|
|
31
|
+
case 1:
|
|
32
|
+
return {
|
|
33
|
+
top: parts[0],
|
|
34
|
+
right: parts[0],
|
|
35
|
+
bottom: parts[0],
|
|
36
|
+
left: parts[0]
|
|
37
|
+
};
|
|
38
|
+
case 2:
|
|
39
|
+
return {
|
|
40
|
+
top: parts[0],
|
|
41
|
+
right: parts[1],
|
|
42
|
+
bottom: parts[0],
|
|
43
|
+
left: parts[1]
|
|
44
|
+
};
|
|
45
|
+
case 3:
|
|
46
|
+
return {
|
|
47
|
+
top: parts[0],
|
|
48
|
+
right: parts[1],
|
|
49
|
+
bottom: parts[2],
|
|
50
|
+
left: parts[1]
|
|
51
|
+
};
|
|
52
|
+
case 4:
|
|
53
|
+
return {
|
|
54
|
+
top: parts[0],
|
|
55
|
+
right: parts[1],
|
|
56
|
+
bottom: parts[2],
|
|
57
|
+
left: parts[3]
|
|
58
|
+
};
|
|
59
|
+
default:
|
|
60
|
+
return {
|
|
61
|
+
top: '0',
|
|
62
|
+
right: '0',
|
|
63
|
+
bottom: '0',
|
|
64
|
+
left: '0'
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var calculateScrollbar = function(container, parsedOffset) {
|
|
69
|
+
var minScrollbarTrackHeight = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 20;
|
|
70
|
+
if (!container) {
|
|
71
|
+
return {
|
|
72
|
+
thumbHeight: 0,
|
|
73
|
+
thumbPosition: 0
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
var scrollTop = container.scrollTop, scrollHeight = container.scrollHeight, clientHeight = container.clientHeight;
|
|
77
|
+
var topOffset = parseFloat(parsedOffset.top) || 0;
|
|
78
|
+
var bottomOffset = parseFloat(parsedOffset.bottom) || 0;
|
|
79
|
+
var trackHeight = clientHeight - topOffset - bottomOffset;
|
|
80
|
+
var thumbHeight = Math.max(trackHeight / scrollHeight * trackHeight, minScrollbarTrackHeight);
|
|
81
|
+
var maxScroll = scrollHeight - clientHeight;
|
|
82
|
+
var thumbPosition = maxScroll > 0 ? scrollTop / maxScroll * (trackHeight - thumbHeight) : 0;
|
|
83
|
+
return {
|
|
84
|
+
thumbHeight: thumbHeight,
|
|
85
|
+
thumbPosition: thumbPosition
|
|
86
|
+
};
|
|
87
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "base", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return base;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _styledcomponents = require("styled-components");
|
|
12
|
+
var base = (0, _styledcomponents.css)([
|
|
13
|
+
""
|
|
14
|
+
]);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "base", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return base;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _styledcomponents = require("styled-components");
|
|
12
|
+
var base = (0, _styledcomponents.css)([
|
|
13
|
+
""
|
|
14
|
+
]);
|
|
@@ -459,7 +459,7 @@ var selectRoot = function(Root) {
|
|
|
459
459
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
|
460
460
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
|
461
461
|
(0, _react.useLayoutEffect)(function() {
|
|
462
|
-
var checkedCopy = new Map(
|
|
462
|
+
var checkedCopy = new Map(valueToCheckedMap);
|
|
463
463
|
checkedCopy.forEach(function(_, key) {
|
|
464
464
|
checkedCopy.set(key, false);
|
|
465
465
|
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "config", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return config;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _styledcomponents = require("styled-components");
|
|
12
|
+
var _Scrollbar = require("../../../components/Scrollbar");
|
|
13
|
+
var config = {
|
|
14
|
+
defaults: {
|
|
15
|
+
view: 'default',
|
|
16
|
+
size: 's'
|
|
17
|
+
},
|
|
18
|
+
variations: {
|
|
19
|
+
view: {
|
|
20
|
+
default: (0, _styledcomponents.css)([
|
|
21
|
+
"",
|
|
22
|
+
":var(--surface-transparent-primary);",
|
|
23
|
+
":var(--surface-transparent-tertiary);",
|
|
24
|
+
":var(--surface-transparent-tertiary-hover);",
|
|
25
|
+
":var(--surface-transparent-tertiary-active);"
|
|
26
|
+
], _Scrollbar.scrollbarTokens.trackColor, _Scrollbar.scrollbarTokens.thumbColor, _Scrollbar.scrollbarTokens.thumbColorHover, _Scrollbar.scrollbarTokens.thumbColorActive)
|
|
27
|
+
},
|
|
28
|
+
size: {
|
|
29
|
+
m: (0, _styledcomponents.css)([
|
|
30
|
+
"",
|
|
31
|
+
":0.25rem;",
|
|
32
|
+
":0.25rem;",
|
|
33
|
+
":0.25rem;",
|
|
34
|
+
":0.25rem;"
|
|
35
|
+
], _Scrollbar.scrollbarTokens.width, _Scrollbar.scrollbarTokens.trackWidth, _Scrollbar.scrollbarTokens.trackBorderRadius, _Scrollbar.scrollbarTokens.thumbBorderRadius),
|
|
36
|
+
s: (0, _styledcomponents.css)([
|
|
37
|
+
"",
|
|
38
|
+
":0.125rem;",
|
|
39
|
+
":0.125rem;",
|
|
40
|
+
":0.125rem;",
|
|
41
|
+
":0.125rem;"
|
|
42
|
+
], _Scrollbar.scrollbarTokens.width, _Scrollbar.scrollbarTokens.trackWidth, _Scrollbar.scrollbarTokens.trackBorderRadius, _Scrollbar.scrollbarTokens.thumbBorderRadius)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "Scrollbar", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Scrollbar;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _Scrollbar = require("../../../components/Scrollbar");
|
|
12
|
+
var _engines = require("../../../engines");
|
|
13
|
+
var _Scrollbarconfig = require("./Scrollbar.config");
|
|
14
|
+
var mergedConfig = (0, _engines.mergeConfig)(_Scrollbar.scrollbarConfig, _Scrollbarconfig.config);
|
|
15
|
+
var Scrollbar = (0, _engines.component)(mergedConfig);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get scrollbarLarge () {
|
|
13
|
+
return scrollbarLarge;
|
|
14
|
+
},
|
|
15
|
+
get scrollbarSmall () {
|
|
16
|
+
return scrollbarSmall;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var scrollbarLarge = function() {
|
|
20
|
+
return "\n &::-webkit-scrollbar {\n width: 0.25rem;\n height: 0.25rem;\n }\n\n &::-webkit-scrollbar-track {\n background-color: var(--surface-transparent-primary);\n border-radius: 0.25rem;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: var(--surface-transparent-tertiary);\n border-radius: 0.25rem;\n transition: background-color 0.2s ease;\n\n &:hover {\n background-color: var(--surface-transparent-tertiary-hover);\n }\n\n &:active {\n background-color: var(--surface-transparent-tertiary-active);\n }\n }\n\n /* scrollbar-width: thin;\n scrollbar-color: var(--surface-transparent-tertiary) var(--surface-transparent-primary); */\n";
|
|
21
|
+
};
|
|
22
|
+
var scrollbarSmall = function() {
|
|
23
|
+
return "\n &::-webkit-scrollbar {\n width: 0.125rem;\n height: 0.125rem;\n }\n\n &::-webkit-scrollbar-track {\n background-color: var(--surface-transparent-primary);\n border-radius: 0.125rem;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: var(--surface-transparent-tertiary);\n border-radius: 0.125rem;\n transition: background-color 0.2s ease;\n\n &:hover {\n background-color: var(--surface-transparent-tertiary-hover);\n }\n\n &:active {\n background-color: var(--surface-transparent-tertiary-active);\n }\n }\n\n /* scrollbar-width: thin;\n scrollbar-color: var(--surface-transparent-tertiary) var(--surface-transparent-primary); */\n";
|
|
24
|
+
};
|
|
@@ -481,7 +481,7 @@ import { Context } from "./Combobox.context";
|
|
|
481
481
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
|
482
482
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
|
483
483
|
useLayoutEffect(function() {
|
|
484
|
-
var checkedCopy = new Map(
|
|
484
|
+
var checkedCopy = new Map(valueToCheckedMap);
|
|
485
485
|
checkedCopy.forEach(function(_, key) {
|
|
486
486
|
checkedCopy.set(key, false);
|
|
487
487
|
});
|
|
@@ -58,10 +58,10 @@ import { useForkRef } from "@salutejs/plasma-core";
|
|
|
58
58
|
import { safeUseId } from "../../utils";
|
|
59
59
|
import { component } from "../../engines";
|
|
60
60
|
import { useFocusTrap } from "../../hooks";
|
|
61
|
-
import { IconClose } from "../_Icon";
|
|
62
61
|
import { popupConfig, usePopupContext } from "../Popup";
|
|
63
62
|
import { Overlay } from "../Overlay";
|
|
64
63
|
import { DEFAULT_Z_INDEX } from "../Popup/utils";
|
|
64
|
+
import { IconClose } from "../_Icon/Icons/IconClose";
|
|
65
65
|
import { classes, tokens } from "./Modal.tokens";
|
|
66
66
|
import { useModal } from "./hooks";
|
|
67
67
|
import { base as viewCSS } from "./variations/_view/base";
|
|
@@ -74,7 +74,7 @@ var Popup = component(popupConfig);
|
|
|
74
74
|
* Управляет показом/скрытием, подложкой и анимацией визуальной части модального окна.
|
|
75
75
|
*/ export var modalRoot = function(Root) {
|
|
76
76
|
return /*#__PURE__*/ forwardRef(function(_param, outerRootRef) {
|
|
77
|
-
var id = _param.id, withAnimation = _param.withAnimation, onClose = _param.onClose, onOverlayClick = _param.onOverlayClick, onEscKeyDown = _param.onEscKeyDown, _param_closeOnEsc = _param.closeOnEsc, closeOnEsc = _param_closeOnEsc === void 0 ? true : _param_closeOnEsc, _param_closeOnOverlayClick = _param.closeOnOverlayClick, closeOnOverlayClick = _param_closeOnOverlayClick === void 0 ? true : _param_closeOnOverlayClick, withBlur = _param.withBlur, _param_isFocusTrapped = _param.isFocusTrapped, isFocusTrapped = _param_isFocusTrapped === void 0 ? true : _param_isFocusTrapped, initialFocusRef = _param.initialFocusRef, focusAfterRef = _param.focusAfterRef, zIndex = _param.zIndex, popupInfo = _param.popupInfo, children = _param.children, view = _param.view, opened = _param.opened, isOpen = _param.isOpen, hasBody = _param.hasBody, hasClose = _param.hasClose, resizable = _param.resizable, draggable = _param.draggable,
|
|
77
|
+
var id = _param.id, withAnimation = _param.withAnimation, onClose = _param.onClose, onOverlayClick = _param.onOverlayClick, onEscKeyDown = _param.onEscKeyDown, _param_closeOnEsc = _param.closeOnEsc, closeOnEsc = _param_closeOnEsc === void 0 ? true : _param_closeOnEsc, _param_closeOnOverlayClick = _param.closeOnOverlayClick, closeOnOverlayClick = _param_closeOnOverlayClick === void 0 ? true : _param_closeOnOverlayClick, withBlur = _param.withBlur, _param_isFocusTrapped = _param.isFocusTrapped, isFocusTrapped = _param_isFocusTrapped === void 0 ? true : _param_isFocusTrapped, initialFocusRef = _param.initialFocusRef, focusAfterRef = _param.focusAfterRef, zIndex = _param.zIndex, popupInfo = _param.popupInfo, children = _param.children, view = _param.view, opened = _param.opened, isOpen = _param.isOpen, hasBody = _param.hasBody, hasClose = _param.hasClose, resizable = _param.resizable, draggable = _param.draggable, rest = _object_without_properties(_param, [
|
|
78
78
|
"id",
|
|
79
79
|
"withAnimation",
|
|
80
80
|
"onClose",
|
|
@@ -95,8 +95,7 @@ var Popup = component(popupConfig);
|
|
|
95
95
|
"hasBody",
|
|
96
96
|
"hasClose",
|
|
97
97
|
"resizable",
|
|
98
|
-
"draggable"
|
|
99
|
-
"overlay"
|
|
98
|
+
"draggable"
|
|
100
99
|
]);
|
|
101
100
|
var innerIsOpen = Boolean(isOpen || opened);
|
|
102
101
|
var innerHasClose = hasClose === undefined && hasBody || hasClose;
|
|
@@ -149,9 +148,9 @@ var Popup = component(popupConfig);
|
|
|
149
148
|
popupInfo: modalInfo,
|
|
150
149
|
withAnimation: withAnimation,
|
|
151
150
|
zIndex: zIndex,
|
|
152
|
-
overlay: /*#__PURE__*/ React.createElement(Root, {
|
|
151
|
+
overlay: hasBody ? overlayNode : /*#__PURE__*/ React.createElement(Root, {
|
|
153
152
|
view: view
|
|
154
|
-
},
|
|
153
|
+
}, overlayNode),
|
|
155
154
|
draggable: draggable,
|
|
156
155
|
resizable: resizable
|
|
157
156
|
}, rest), hasBody ? /*#__PURE__*/ React.createElement(Root, {
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
/* eslint-disable */ function _array_like_to_array(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _array_with_holes(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
9
|
+
function _define_property(obj, key, value) {
|
|
10
|
+
if (key in obj) {
|
|
11
|
+
Object.defineProperty(obj, key, {
|
|
12
|
+
value: value,
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true
|
|
16
|
+
});
|
|
17
|
+
} else {
|
|
18
|
+
obj[key] = value;
|
|
19
|
+
}
|
|
20
|
+
return obj;
|
|
21
|
+
}
|
|
22
|
+
function _iterable_to_array_limit(arr, i) {
|
|
23
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
24
|
+
if (_i == null) return;
|
|
25
|
+
var _arr = [];
|
|
26
|
+
var _n = true;
|
|
27
|
+
var _d = false;
|
|
28
|
+
var _s, _e;
|
|
29
|
+
try {
|
|
30
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
31
|
+
_arr.push(_s.value);
|
|
32
|
+
if (i && _arr.length === i) break;
|
|
33
|
+
}
|
|
34
|
+
} catch (err) {
|
|
35
|
+
_d = true;
|
|
36
|
+
_e = err;
|
|
37
|
+
} finally{
|
|
38
|
+
try {
|
|
39
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
40
|
+
} finally{
|
|
41
|
+
if (_d) throw _e;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return _arr;
|
|
45
|
+
}
|
|
46
|
+
function _non_iterable_rest() {
|
|
47
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
48
|
+
}
|
|
49
|
+
function _object_spread(target) {
|
|
50
|
+
for(var i = 1; i < arguments.length; i++){
|
|
51
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
52
|
+
var ownKeys = Object.keys(source);
|
|
53
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
54
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
55
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
ownKeys.forEach(function(key) {
|
|
59
|
+
_define_property(target, key, source[key]);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return target;
|
|
63
|
+
}
|
|
64
|
+
function ownKeys(object, enumerableOnly) {
|
|
65
|
+
var keys = Object.keys(object);
|
|
66
|
+
if (Object.getOwnPropertySymbols) {
|
|
67
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
68
|
+
if (enumerableOnly) {
|
|
69
|
+
symbols = symbols.filter(function(sym) {
|
|
70
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
keys.push.apply(keys, symbols);
|
|
74
|
+
}
|
|
75
|
+
return keys;
|
|
76
|
+
}
|
|
77
|
+
function _object_spread_props(target, source) {
|
|
78
|
+
source = source != null ? source : {};
|
|
79
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
80
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
81
|
+
} else {
|
|
82
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
83
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return target;
|
|
87
|
+
}
|
|
88
|
+
function _object_without_properties(source, excluded) {
|
|
89
|
+
if (source == null) return {};
|
|
90
|
+
var target = _object_without_properties_loose(source, excluded);
|
|
91
|
+
var key, i;
|
|
92
|
+
if (Object.getOwnPropertySymbols) {
|
|
93
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
94
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
|
95
|
+
key = sourceSymbolKeys[i];
|
|
96
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
97
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
98
|
+
target[key] = source[key];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return target;
|
|
102
|
+
}
|
|
103
|
+
function _object_without_properties_loose(source, excluded) {
|
|
104
|
+
if (source == null) return {};
|
|
105
|
+
var target = {};
|
|
106
|
+
var sourceKeys = Object.keys(source);
|
|
107
|
+
var key, i;
|
|
108
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
109
|
+
key = sourceKeys[i];
|
|
110
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
111
|
+
target[key] = source[key];
|
|
112
|
+
}
|
|
113
|
+
return target;
|
|
114
|
+
}
|
|
115
|
+
function _sliced_to_array(arr, i) {
|
|
116
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
117
|
+
}
|
|
118
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
119
|
+
if (!o) return;
|
|
120
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
121
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
122
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
123
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
124
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
125
|
+
}
|
|
126
|
+
import React, { forwardRef, useRef, useState, useEffect } from "react";
|
|
127
|
+
import cls from "classnames";
|
|
128
|
+
import { base as sizeCSS } from "./variations/_size/base";
|
|
129
|
+
import { base as viewCSS } from "./variations/_view/base";
|
|
130
|
+
import { base, StyledScrollBar, StyledContainer, StyledContent, StyledTrack, StyledThumb } from "./Scrollbar.styles";
|
|
131
|
+
import { classes } from "./Scrollbar.tokens";
|
|
132
|
+
import { parseOffset, calculateScrollbar } from "./utils";
|
|
133
|
+
var MIN_SCROLLBAR_TRACK_HEIGHT = 20;
|
|
134
|
+
export var scrollbarRoot = function(Root) {
|
|
135
|
+
return /*#__PURE__*/ forwardRef(function(_param, ref) {
|
|
136
|
+
var className = _param.className, _param_view = _param.view, view = _param_view === void 0 ? 'default' : _param_view, _param_size = _param.size, size = _param_size === void 0 ? 'm' : _param_size, _param_placement = _param.placement, placement = _param_placement === void 0 ? 'right' : _param_placement, _param_offset = _param.offset, offset = _param_offset === void 0 ? '4px' : _param_offset, _param_autoHide = _param.autoHide, autoHide = _param_autoHide === void 0 ? true : _param_autoHide, _param_autoHideDelay = _param.autoHideDelay, autoHideDelay = _param_autoHideDelay === void 0 ? 2000 : _param_autoHideDelay, style = _param.style, children = _param.children, rest = _object_without_properties(_param, [
|
|
137
|
+
"className",
|
|
138
|
+
"view",
|
|
139
|
+
"size",
|
|
140
|
+
"placement",
|
|
141
|
+
"offset",
|
|
142
|
+
"autoHide",
|
|
143
|
+
"autoHideDelay",
|
|
144
|
+
"style",
|
|
145
|
+
"children"
|
|
146
|
+
]);
|
|
147
|
+
var containerRef = useRef(null);
|
|
148
|
+
var contentRef = useRef(null);
|
|
149
|
+
var trackRef = useRef(null);
|
|
150
|
+
var thumbRef = useRef(null);
|
|
151
|
+
var hideTimeoutRef = useRef(null);
|
|
152
|
+
var isInitializedRef = useRef(false);
|
|
153
|
+
var _useState = _sliced_to_array(useState({
|
|
154
|
+
isVisible: false,
|
|
155
|
+
thumbHeight: 0,
|
|
156
|
+
thumbPosition: 0,
|
|
157
|
+
isDragging: false
|
|
158
|
+
}), 2), scrollbarState = _useState[0], setScrollbarState = _useState[1];
|
|
159
|
+
var parsedOffset = parseOffset(offset);
|
|
160
|
+
var updateScrollbar = function() {
|
|
161
|
+
var show = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
|
|
162
|
+
var container = containerRef.current;
|
|
163
|
+
if (!container) return;
|
|
164
|
+
var _calculateScrollbar = calculateScrollbar(container, parsedOffset, MIN_SCROLLBAR_TRACK_HEIGHT), thumbHeight = _calculateScrollbar.thumbHeight, thumbPosition = _calculateScrollbar.thumbPosition;
|
|
165
|
+
setScrollbarState(function(prevState) {
|
|
166
|
+
if (prevState.thumbHeight === thumbHeight && prevState.thumbPosition === thumbPosition && prevState.isVisible === (show || prevState.isVisible)) {
|
|
167
|
+
return prevState;
|
|
168
|
+
}
|
|
169
|
+
return _object_spread_props(_object_spread({}, prevState), {
|
|
170
|
+
thumbHeight: thumbHeight,
|
|
171
|
+
thumbPosition: thumbPosition,
|
|
172
|
+
isVisible: show || prevState.isVisible
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
var clearHideTimeout = function() {
|
|
177
|
+
if (hideTimeoutRef.current) {
|
|
178
|
+
clearTimeout(hideTimeoutRef.current);
|
|
179
|
+
hideTimeoutRef.current = null;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
var showScrollbarWithDelay = function() {
|
|
183
|
+
clearHideTimeout();
|
|
184
|
+
updateScrollbar(true);
|
|
185
|
+
if (autoHide) {
|
|
186
|
+
hideTimeoutRef.current = window.setTimeout(function() {
|
|
187
|
+
setScrollbarState(function(prevState) {
|
|
188
|
+
return _object_spread_props(_object_spread({}, prevState), {
|
|
189
|
+
isVisible: false
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
}, autoHideDelay);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
var handleScroll = function() {
|
|
196
|
+
showScrollbarWithDelay();
|
|
197
|
+
updateScrollbar();
|
|
198
|
+
};
|
|
199
|
+
var handleMouseEnter = function() {
|
|
200
|
+
showScrollbarWithDelay();
|
|
201
|
+
};
|
|
202
|
+
var handleScrollbarDrag = function(e) {
|
|
203
|
+
e.preventDefault();
|
|
204
|
+
e.stopPropagation();
|
|
205
|
+
var thumb = e.currentTarget;
|
|
206
|
+
var track = thumb.parentElement;
|
|
207
|
+
var container = containerRef.current;
|
|
208
|
+
if (!container || !track) return;
|
|
209
|
+
clearHideTimeout();
|
|
210
|
+
var startY = e.clientY;
|
|
211
|
+
var startThumbPosition = parseFloat(thumb.style.top || '0');
|
|
212
|
+
var trackRect = track.getBoundingClientRect();
|
|
213
|
+
var trackHeight = trackRect.height;
|
|
214
|
+
var thumbHeight = thumb.offsetHeight;
|
|
215
|
+
var scrollHeight = container.scrollHeight, clientHeight = container.clientHeight;
|
|
216
|
+
var maxScroll = scrollHeight - clientHeight;
|
|
217
|
+
var handleMouseMove = function(moveEvent) {
|
|
218
|
+
var deltaY = moveEvent.clientY - startY;
|
|
219
|
+
var newThumbPosition = Math.max(0, Math.min(trackHeight - thumbHeight, startThumbPosition + deltaY));
|
|
220
|
+
var scrollPercentage = newThumbPosition / (trackHeight - thumbHeight);
|
|
221
|
+
var newScrollTop = scrollPercentage * maxScroll;
|
|
222
|
+
container.scrollTop = newScrollTop;
|
|
223
|
+
setScrollbarState(function(prevState) {
|
|
224
|
+
return _object_spread_props(_object_spread({}, prevState), {
|
|
225
|
+
thumbPosition: newThumbPosition,
|
|
226
|
+
isDragging: true,
|
|
227
|
+
isVisible: true
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
var handleMouseUp = function() {
|
|
232
|
+
document.removeEventListener('mousemove', handleMouseMove);
|
|
233
|
+
document.removeEventListener('mouseup', handleMouseUp);
|
|
234
|
+
setScrollbarState(function(prevState) {
|
|
235
|
+
return _object_spread_props(_object_spread({}, prevState), {
|
|
236
|
+
isDragging: false
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
showScrollbarWithDelay();
|
|
240
|
+
};
|
|
241
|
+
document.addEventListener('mousemove', handleMouseMove);
|
|
242
|
+
document.addEventListener('mouseup', handleMouseUp);
|
|
243
|
+
};
|
|
244
|
+
var handleTrackClick = function(e) {
|
|
245
|
+
e.preventDefault();
|
|
246
|
+
e.stopPropagation();
|
|
247
|
+
var track = e.currentTarget;
|
|
248
|
+
var container = containerRef.current;
|
|
249
|
+
if (!container || !track) return;
|
|
250
|
+
if (thumbRef.current && thumbRef.current.contains(e.target)) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
clearHideTimeout();
|
|
254
|
+
var trackRect = track.getBoundingClientRect();
|
|
255
|
+
var clickY = e.clientY - trackRect.top;
|
|
256
|
+
var trackHeight = trackRect.height;
|
|
257
|
+
var thumbHeight = scrollbarState.thumbHeight;
|
|
258
|
+
var scrollHeight = container.scrollHeight, clientHeight = container.clientHeight;
|
|
259
|
+
var maxScroll = scrollHeight - clientHeight;
|
|
260
|
+
if (maxScroll <= 0) return;
|
|
261
|
+
var newThumbPosition = clickY - thumbHeight / 2;
|
|
262
|
+
newThumbPosition = Math.max(0, Math.min(trackHeight - thumbHeight, newThumbPosition));
|
|
263
|
+
var scrollPercentage = newThumbPosition / (trackHeight - thumbHeight);
|
|
264
|
+
var newScrollTop = scrollPercentage * maxScroll;
|
|
265
|
+
container.scrollTop = newScrollTop;
|
|
266
|
+
setScrollbarState(function(prevState) {
|
|
267
|
+
return _object_spread_props(_object_spread({}, prevState), {
|
|
268
|
+
thumbPosition: newThumbPosition,
|
|
269
|
+
isVisible: true
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
showScrollbarWithDelay();
|
|
273
|
+
};
|
|
274
|
+
useEffect(function() {
|
|
275
|
+
var container = containerRef.current;
|
|
276
|
+
if (!container) return;
|
|
277
|
+
if (!isInitializedRef.current) {
|
|
278
|
+
updateScrollbar();
|
|
279
|
+
isInitializedRef.current = true;
|
|
280
|
+
}
|
|
281
|
+
container.addEventListener('scroll', handleScroll);
|
|
282
|
+
container.addEventListener('mouseenter', handleMouseEnter);
|
|
283
|
+
var resizeObserver = new ResizeObserver(function() {
|
|
284
|
+
updateScrollbar();
|
|
285
|
+
});
|
|
286
|
+
if (contentRef.current) {
|
|
287
|
+
resizeObserver.observe(contentRef.current);
|
|
288
|
+
}
|
|
289
|
+
return function() {
|
|
290
|
+
container.removeEventListener('scroll', handleScroll);
|
|
291
|
+
container.removeEventListener('mouseenter', handleMouseEnter);
|
|
292
|
+
resizeObserver.disconnect();
|
|
293
|
+
clearHideTimeout();
|
|
294
|
+
};
|
|
295
|
+
}, []);
|
|
296
|
+
useEffect(function() {
|
|
297
|
+
updateScrollbar();
|
|
298
|
+
}, [
|
|
299
|
+
children,
|
|
300
|
+
offset
|
|
301
|
+
]);
|
|
302
|
+
var _obj;
|
|
303
|
+
return /*#__PURE__*/ React.createElement(Root, _object_spread({
|
|
304
|
+
view: view,
|
|
305
|
+
size: size,
|
|
306
|
+
className: cls(classes.scrollBarRoot, className),
|
|
307
|
+
ref: ref
|
|
308
|
+
}, rest), /*#__PURE__*/ React.createElement(StyledScrollBar, {
|
|
309
|
+
className: cls((_obj = {}, _define_property(_obj, classes.scrollBarVisible, scrollbarState.isVisible), _define_property(_obj, classes.scrollBarDragging, scrollbarState.isDragging), _obj)),
|
|
310
|
+
style: _object_spread_props(_object_spread({}, style), {
|
|
311
|
+
'--scrollbar-offset-top': parsedOffset.top,
|
|
312
|
+
'--scrollbar-offset-right': parsedOffset.right,
|
|
313
|
+
'--scrollbar-offset-bottom': parsedOffset.bottom,
|
|
314
|
+
'--scrollbar-offset-left': parsedOffset.left
|
|
315
|
+
}),
|
|
316
|
+
"data-placement": placement,
|
|
317
|
+
"data-size": size,
|
|
318
|
+
"data-view": view
|
|
319
|
+
}, /*#__PURE__*/ React.createElement(StyledContainer, {
|
|
320
|
+
ref: containerRef,
|
|
321
|
+
className: classes.scrollBarContainer,
|
|
322
|
+
"data-placement": placement
|
|
323
|
+
}, /*#__PURE__*/ React.createElement(StyledContent, {
|
|
324
|
+
ref: contentRef,
|
|
325
|
+
className: classes.scrollBarContent
|
|
326
|
+
}, children)), /*#__PURE__*/ React.createElement(StyledTrack, {
|
|
327
|
+
ref: trackRef,
|
|
328
|
+
className: cls(classes.scrollBarTrack, _define_property({}, classes.scrollBarTrackVisible, scrollbarState.isVisible)),
|
|
329
|
+
"data-placement": placement,
|
|
330
|
+
onMouseDown: handleTrackClick
|
|
331
|
+
}, /*#__PURE__*/ React.createElement(StyledThumb, {
|
|
332
|
+
ref: thumbRef,
|
|
333
|
+
className: classes.scrollBarThumb,
|
|
334
|
+
style: {
|
|
335
|
+
height: "".concat(scrollbarState.thumbHeight, "px"),
|
|
336
|
+
top: "".concat(scrollbarState.thumbPosition, "px")
|
|
337
|
+
},
|
|
338
|
+
onMouseDown: handleScrollbarDrag
|
|
339
|
+
}))));
|
|
340
|
+
});
|
|
341
|
+
};
|
|
342
|
+
export var scrollbarConfig = {
|
|
343
|
+
name: 'Scrollbar',
|
|
344
|
+
tag: 'div',
|
|
345
|
+
layout: scrollbarRoot,
|
|
346
|
+
base: base,
|
|
347
|
+
variations: {
|
|
348
|
+
view: {
|
|
349
|
+
css: viewCSS
|
|
350
|
+
},
|
|
351
|
+
size: {
|
|
352
|
+
css: sizeCSS
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
defaults: {
|
|
356
|
+
size: 'm',
|
|
357
|
+
view: 'default'
|
|
358
|
+
}
|
|
359
|
+
};
|