@skbkontur/react-ui 6.0.0-beta.4 → 6.0.1-cd7d7.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 +135 -0
- package/README.md +2 -2
- package/components/DateInput/DateInput.js +1 -1
- package/components/DateInput/DateInput.js.map +1 -1
- package/components/FileUploader/FileUploader.js +1 -0
- package/components/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.styles.d.ts +1 -0
- package/components/FileUploader/FileUploader.styles.js +7 -4
- package/components/FileUploader/FileUploader.styles.js.map +1 -1
- package/components/SingleToast/SingleToast.js +1 -1
- package/components/SingleToast/SingleToast.js.map +1 -1
- package/components/Textarea/Textarea.styles.js +1 -1
- package/components/Textarea/Textarea.styles.js.map +1 -1
- package/components/TokenInput/TokenInput.js +1 -1
- package/components/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.styles.d.ts +1 -0
- package/components/TokenInput/TokenInput.styles.js +6 -2
- package/components/TokenInput/TokenInput.styles.js.map +1 -1
- package/components/Tooltip/Tooltip.js +5 -6
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +1 -4
- package/internal/CustomComboBox/ComboBoxView.js +1 -1
- package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.js +1 -1
- package/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/FocusTrap/FocusTrap.d.ts +1 -0
- package/internal/FocusTrap/FocusTrap.js +6 -6
- package/internal/FocusTrap/FocusTrap.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.js +1 -1
- package/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +0 -1
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +7 -0
- package/internal/MobilePopup/MobilePopup.js +14 -1
- package/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.styles.js +1 -1
- package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
- package/internal/Popup/Popup.d.ts +15 -1
- package/internal/Popup/Popup.js +169 -33
- package/internal/Popup/Popup.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +29 -2
- package/internal/Popup/PopupHelper.js +109 -7
- package/internal/Popup/PopupHelper.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +4 -0
- package/internal/RenderContainer/RenderContainer.js +52 -5
- package/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +1 -0
- package/internal/RenderLayer/RenderLayer.js +5 -7
- package/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +0 -2
- package/internal/themes/BasicTheme.js +7 -9
- package/internal/themes/BasicTheme.js.map +1 -1
- package/internal/themes/DarkTheme6_0.js +3 -3
- package/internal/themes/DarkTheme6_0.js.map +1 -1
- package/lib/getElementRef.js +1 -4
- package/lib/getElementRef.js.map +1 -1
- package/lib/listenFocusOutside.d.ts +2 -0
- package/lib/listenFocusOutside.js +19 -2
- package/lib/listenFocusOutside.js.map +1 -1
- package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +5 -0
- package/lib/renderEnvironment/RenderEnvironmentContext.js +17 -11
- package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
- package/lib/shadowDom/isShadowRoot.d.ts +1 -0
- package/lib/shadowDom/isShadowRoot.js +2 -0
- package/lib/shadowDom/isShadowRoot.js.map +1 -0
- package/lib/styles/ColorFunctions.d.ts +20 -0
- package/lib/styles/ColorFunctions.js +20 -1
- package/lib/styles/ColorFunctions.js.map +1 -1
- package/lib/styles/ColorKeywords.d.ts +1 -0
- package/lib/styles/ColorKeywords.js +1 -0
- package/lib/styles/ColorKeywords.js.map +1 -1
- package/lib/theming/Emotion.d.ts +27 -1
- package/lib/theming/Emotion.js +20 -5
- package/lib/theming/Emotion.js.map +1 -1
- package/package.json +5 -5
|
@@ -7,23 +7,27 @@ function getPositionObject(position) {
|
|
|
7
7
|
align: x[1],
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
|
-
function getElementAbsoluteRect(element) {
|
|
10
|
+
function getElementAbsoluteRect(element, deltaParentPosition) {
|
|
11
|
+
if (deltaParentPosition === void 0) { deltaParentPosition = { top: 0, left: 0 }; }
|
|
11
12
|
var globalObject = getOwnerGlobalObject(element);
|
|
12
13
|
var rect = _getElementRelativeRect(element);
|
|
14
|
+
rect.top = rect.top - deltaParentPosition.top;
|
|
15
|
+
rect.left = rect.left - deltaParentPosition.left;
|
|
13
16
|
return convertRectToAbsolute(rect, globalObject);
|
|
14
17
|
}
|
|
15
|
-
function isAbsoluteRectFullyVisible(coordinates, popupRect, globalObject) {
|
|
18
|
+
function isAbsoluteRectFullyVisible(coordinates, popupRect, globalObject, deltaParentPosition) {
|
|
19
|
+
if (deltaParentPosition === void 0) { deltaParentPosition = { top: 0, left: 0 }; }
|
|
16
20
|
var windowRelativeRect = _getWindowRelativeRect(globalObject);
|
|
17
21
|
var windowAbsoluteRect = convertRectToAbsolute(windowRelativeRect, globalObject);
|
|
18
22
|
var absoluteRect = {
|
|
19
|
-
top: coordinates.top,
|
|
20
|
-
left: coordinates.left,
|
|
23
|
+
top: coordinates.top + deltaParentPosition.top,
|
|
24
|
+
left: coordinates.left + deltaParentPosition.left,
|
|
21
25
|
height: popupRect.height,
|
|
22
26
|
width: popupRect.width,
|
|
23
27
|
};
|
|
24
28
|
return _rectContainsRect(windowAbsoluteRect, absoluteRect);
|
|
25
29
|
}
|
|
26
|
-
|
|
30
|
+
/** Может стать полностью видимым после прокрутки в область видимости */
|
|
27
31
|
function canBecomeFullyVisible(positionName, coordinates, globalObject) {
|
|
28
32
|
var position = getPositionObject(positionName);
|
|
29
33
|
if (position.direction === 'top') {
|
|
@@ -34,7 +38,7 @@ function canBecomeFullyVisible(positionName, coordinates, globalObject) {
|
|
|
34
38
|
var availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect(globalObject), globalObject);
|
|
35
39
|
return coordinates.left + availableScrollDistances.left >= 0;
|
|
36
40
|
}
|
|
37
|
-
// NOTE:
|
|
41
|
+
// NOTE: в случаях bottom/right браузер всегда расширяет размер документа
|
|
38
42
|
return true;
|
|
39
43
|
}
|
|
40
44
|
function _getElementRelativeRect(element) {
|
|
@@ -54,7 +58,7 @@ function _getWindowRelativeRect(globalObject) {
|
|
|
54
58
|
height: _getViewProperty(function (x) { return x.clientHeight; }, globalObject) || globalObject.innerHeight || 0,
|
|
55
59
|
};
|
|
56
60
|
}
|
|
57
|
-
function convertRectToAbsolute(rect, globalObject) {
|
|
61
|
+
export function convertRectToAbsolute(rect, globalObject) {
|
|
58
62
|
var offset = _getAbsoluteOffset(globalObject);
|
|
59
63
|
return {
|
|
60
64
|
top: rect.top + offset.top,
|
|
@@ -81,6 +85,98 @@ function _rectContainsRect(outerRect, innerRect) {
|
|
|
81
85
|
innerRect.left > outerRect.left &&
|
|
82
86
|
innerRect.left + innerRect.width < outerRect.left + outerRect.width);
|
|
83
87
|
}
|
|
88
|
+
/** Прямоугольник вьюпорта в координатах документа (абсолютных) */
|
|
89
|
+
function getViewportAbsoluteRect(globalObject) {
|
|
90
|
+
return convertRectToAbsolute(_getWindowRelativeRect(globalObject), globalObject);
|
|
91
|
+
}
|
|
92
|
+
/** Какие стороны попапа (с заданными координатами) выходят за пределы вьюпорта */
|
|
93
|
+
function getOverflowEdges(coordinates, popupRect, globalObject) {
|
|
94
|
+
var viewport = getViewportAbsoluteRect(globalObject);
|
|
95
|
+
var popup = {
|
|
96
|
+
top: coordinates.top,
|
|
97
|
+
left: coordinates.left,
|
|
98
|
+
width: popupRect.width,
|
|
99
|
+
height: popupRect.height,
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
top: popup.top < viewport.top,
|
|
103
|
+
bottom: popup.top + popup.height > viewport.top + viewport.height,
|
|
104
|
+
left: popup.left < viewport.left,
|
|
105
|
+
right: popup.left + popup.width > viewport.left + viewport.width,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/** Количество сторон, по которым попап выходит за вьюпорт (0–4) */
|
|
109
|
+
function getOverflowCount(overflow) {
|
|
110
|
+
return [overflow.top, overflow.bottom, overflow.left, overflow.right].filter(Boolean).length;
|
|
111
|
+
}
|
|
112
|
+
/** Предпочтительное направление по вертикали при переполнении */
|
|
113
|
+
function getPreferredDirection(overflow, defaultPosition) {
|
|
114
|
+
if (overflow.bottom) {
|
|
115
|
+
return 'top';
|
|
116
|
+
}
|
|
117
|
+
if (overflow.top) {
|
|
118
|
+
return 'bottom';
|
|
119
|
+
}
|
|
120
|
+
return getPositionObject(defaultPosition).direction;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Упорядоченный список кандидатов для fallback-позиции: при горизонтальном переполнении
|
|
124
|
+
* сначала позиции с нужным align (в т.ч. из pinnablePositions), затем по direction и positions.
|
|
125
|
+
*/
|
|
126
|
+
function getOrderedFallbackCandidates(positions, overflow, preferredDirection, preferredAlignOrder, pinnablePositions) {
|
|
127
|
+
var seen = new Set();
|
|
128
|
+
var add = function (p) {
|
|
129
|
+
if (!seen.has(p)) {
|
|
130
|
+
seen.add(p);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
};
|
|
135
|
+
var candidates = [];
|
|
136
|
+
var hasHorizontalOverflow = overflow.left || overflow.right;
|
|
137
|
+
if (hasHorizontalOverflow) {
|
|
138
|
+
var preferredAlign = preferredAlignOrder[0];
|
|
139
|
+
for (var _i = 0, _a = ['bottom', 'top']; _i < _a.length; _i++) {
|
|
140
|
+
var dir = _a[_i];
|
|
141
|
+
var p = "".concat(dir, " ").concat(preferredAlign);
|
|
142
|
+
if (pinnablePositions.includes(p) && add(p)) {
|
|
143
|
+
candidates.push(p);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
for (var _b = 0, preferredAlignOrder_1 = preferredAlignOrder; _b < preferredAlignOrder_1.length; _b++) {
|
|
147
|
+
var align = preferredAlignOrder_1[_b];
|
|
148
|
+
for (var _c = 0, positions_1 = positions; _c < positions_1.length; _c++) {
|
|
149
|
+
var p = positions_1[_c];
|
|
150
|
+
if (getPositionObject(p).align === align && add(p)) {
|
|
151
|
+
candidates.push(p);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
for (var _d = 0, preferredAlignOrder_2 = preferredAlignOrder; _d < preferredAlignOrder_2.length; _d++) {
|
|
157
|
+
var align = preferredAlignOrder_2[_d];
|
|
158
|
+
for (var _e = 0, positions_2 = positions; _e < positions_2.length; _e++) {
|
|
159
|
+
var p = positions_2[_e];
|
|
160
|
+
var pos = getPositionObject(p);
|
|
161
|
+
if (pos.direction === preferredDirection && pos.align === align && add(p)) {
|
|
162
|
+
candidates.push(p);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
for (var _f = 0, positions_3 = positions; _f < positions_3.length; _f++) {
|
|
167
|
+
var p = positions_3[_f];
|
|
168
|
+
if (getPositionObject(p).direction === preferredDirection && add(p)) {
|
|
169
|
+
candidates.push(p);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
for (var _g = 0, positions_4 = positions; _g < positions_4.length; _g++) {
|
|
173
|
+
var p = positions_4[_g];
|
|
174
|
+
if (add(p)) {
|
|
175
|
+
candidates.push(p);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return candidates;
|
|
179
|
+
}
|
|
84
180
|
function _getViewProperty(getProperty, globalObject) {
|
|
85
181
|
var _a, _b;
|
|
86
182
|
var views = [(_a = globalObject.document) === null || _a === void 0 ? void 0 : _a.documentElement, (_b = globalObject.document) === null || _b === void 0 ? void 0 : _b.body];
|
|
@@ -90,6 +186,12 @@ export var PopupHelper = {
|
|
|
90
186
|
getPositionObject: getPositionObject,
|
|
91
187
|
getElementAbsoluteRect: getElementAbsoluteRect,
|
|
92
188
|
isFullyVisible: isAbsoluteRectFullyVisible,
|
|
189
|
+
convertRectToAbsolute: convertRectToAbsolute,
|
|
93
190
|
canBecomeFullyVisible: canBecomeFullyVisible,
|
|
191
|
+
getViewportAbsoluteRect: getViewportAbsoluteRect,
|
|
192
|
+
getOverflowEdges: getOverflowEdges,
|
|
193
|
+
getOverflowCount: getOverflowCount,
|
|
194
|
+
getPreferredDirection: getPreferredDirection,
|
|
195
|
+
getOrderedFallbackCandidates: getOrderedFallbackCandidates,
|
|
94
196
|
};
|
|
95
197
|
//# sourceMappingURL=PopupHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopupHelper.js","sourceRoot":"","sources":["../../../internal/Popup/PopupHelper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { getOwnerGlobalObject } from '../../lib/globalObject.js';\n\nimport type { PopupPositionsType } from './Popup.js';\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport interface Offset {\n top: number;\n left: number;\n}\n\nexport interface PositionObject {\n direction: string;\n align: string;\n}\n\nfunction getPositionObject(position: string): PositionObject {\n const x = position.split(' ');\n\n return {\n direction: x[0],\n align: x[1],\n };\n}\n\nfunction getElementAbsoluteRect(element: Element): Rect {\n const globalObject = getOwnerGlobalObject(element);\n const rect = _getElementRelativeRect(element);\n return convertRectToAbsolute(rect, globalObject);\n}\n\nfunction isAbsoluteRectFullyVisible(coordinates: Offset, popupRect: Rect, globalObject: GlobalObject): boolean {\n const windowRelativeRect = _getWindowRelativeRect(globalObject);\n const windowAbsoluteRect = convertRectToAbsolute(windowRelativeRect, globalObject);\n const absoluteRect = {\n top: coordinates.top,\n left: coordinates.left,\n height: popupRect.height,\n width: popupRect.width,\n };\n\n return _rectContainsRect(windowAbsoluteRect, absoluteRect);\n}\n\n// Can become fully visible by scrolling into viewport\nfunction canBecomeFullyVisible(positionName: PopupPositionsType, coordinates: Offset, globalObject: GlobalObject) {\n const position = getPositionObject(positionName);\n\n if (position.direction === 'top') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect(globalObject), globalObject);\n return coordinates.top + availableScrollDistances.top >= 0;\n }\n\n if (position.direction === 'left') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect(globalObject), globalObject);\n return coordinates.left + availableScrollDistances.left >= 0;\n }\n\n // NOTE: for bottom/right cases browser will always expand document size\n return true;\n}\n\nfunction _getElementRelativeRect(element: Element) {\n const rect = getDOMRect(element);\n\n return {\n top: rect.top,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\nfunction _getWindowRelativeRect(globalObject: GlobalObject): Rect {\n return {\n top: 0,\n left: 0,\n width: _getViewProperty((x) => x.clientWidth, globalObject) || globalObject.innerWidth || 0,\n height: _getViewProperty((x) => x.clientHeight, globalObject) || globalObject.innerHeight || 0,\n };\n}\n\nfunction convertRectToAbsolute(rect: Rect, globalObject: GlobalObject): Rect {\n const offset = _getAbsoluteOffset(globalObject);\n\n return {\n top: rect.top + offset.top,\n left: rect.left + offset.left,\n width: rect.width,\n height: rect.height,\n };\n}\n\nfunction _getAbsoluteOffset(globalObject: GlobalObject): Offset {\n const scrollTop = globalObject.pageYOffset || _getViewProperty((x) => x.scrollTop, globalObject);\n const scrollLeft = globalObject.pageXOffset || _getViewProperty((x) => x.scrollLeft, globalObject);\n\n const clientTop = _getViewProperty((x) => x.clientTop, globalObject);\n const clientLeft = _getViewProperty((x) => x.clientLeft, globalObject);\n\n const top = scrollTop - clientTop;\n const left = scrollLeft - clientLeft;\n\n return {\n top,\n left,\n };\n}\n\nfunction _rectContainsRect(outerRect: Rect, innerRect: Rect): boolean {\n return (\n innerRect.top > outerRect.top &&\n innerRect.top + innerRect.height < outerRect.top + outerRect.height &&\n innerRect.left > outerRect.left &&\n innerRect.left + innerRect.width < outerRect.left + outerRect.width\n );\n}\n\nfunction _getViewProperty(getProperty: (e: Element) => number, globalObject: GlobalObject): number {\n const views = [globalObject.document?.documentElement, globalObject.document?.body];\n return views.map((x) => x && getProperty(x)).find(Boolean) || 0;\n}\n\nexport const PopupHelper = {\n getPositionObject,\n getElementAbsoluteRect,\n isFullyVisible: isAbsoluteRectFullyVisible,\n canBecomeFullyVisible,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"PopupHelper.js","sourceRoot":"","sources":["../../../internal/Popup/PopupHelper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { getOwnerGlobalObject } from '../../lib/globalObject.js';\n\nimport type { PopupPositionsType } from './Popup.js';\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport interface Offset {\n top: number;\n left: number;\n}\n\nexport interface PositionObject {\n direction: string;\n align: string;\n}\n\nfunction getPositionObject(position: string): PositionObject {\n const x = position.split(' ');\n\n return {\n direction: x[0],\n align: x[1],\n };\n}\n\nfunction getElementAbsoluteRect(element: Element, deltaParentPosition: Offset = { top: 0, left: 0 }): Rect {\n const globalObject = getOwnerGlobalObject(element);\n const rect = _getElementRelativeRect(element);\n rect.top = rect.top - deltaParentPosition.top;\n rect.left = rect.left - deltaParentPosition.left;\n return convertRectToAbsolute(rect, globalObject);\n}\n\nfunction isAbsoluteRectFullyVisible(\n coordinates: Offset,\n popupRect: Rect,\n globalObject: GlobalObject,\n deltaParentPosition: Offset = { top: 0, left: 0 },\n): boolean {\n const windowRelativeRect = _getWindowRelativeRect(globalObject);\n const windowAbsoluteRect = convertRectToAbsolute(windowRelativeRect, globalObject);\n const absoluteRect = {\n top: coordinates.top + deltaParentPosition.top,\n left: coordinates.left + deltaParentPosition.left,\n height: popupRect.height,\n width: popupRect.width,\n };\n\n return _rectContainsRect(windowAbsoluteRect, absoluteRect);\n}\n\n/** Может стать полностью видимым после прокрутки в область видимости */\nfunction canBecomeFullyVisible(positionName: PopupPositionsType, coordinates: Offset, globalObject: GlobalObject) {\n const position = getPositionObject(positionName);\n\n if (position.direction === 'top') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect(globalObject), globalObject);\n return coordinates.top + availableScrollDistances.top >= 0;\n }\n\n if (position.direction === 'left') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect(globalObject), globalObject);\n return coordinates.left + availableScrollDistances.left >= 0;\n }\n\n // NOTE: в случаях bottom/right браузер всегда расширяет размер документа\n return true;\n}\n\nfunction _getElementRelativeRect(element: Element) {\n const rect = getDOMRect(element);\n\n return {\n top: rect.top,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\nfunction _getWindowRelativeRect(globalObject: GlobalObject): Rect {\n return {\n top: 0,\n left: 0,\n width: _getViewProperty((x) => x.clientWidth, globalObject) || globalObject.innerWidth || 0,\n height: _getViewProperty((x) => x.clientHeight, globalObject) || globalObject.innerHeight || 0,\n };\n}\n\nexport function convertRectToAbsolute(rect: Rect, globalObject: GlobalObject): Rect {\n const offset = _getAbsoluteOffset(globalObject);\n\n return {\n top: rect.top + offset.top,\n left: rect.left + offset.left,\n width: rect.width,\n height: rect.height,\n };\n}\n\nfunction _getAbsoluteOffset(globalObject: GlobalObject): Offset {\n const scrollTop = globalObject.pageYOffset || _getViewProperty((x) => x.scrollTop, globalObject);\n const scrollLeft = globalObject.pageXOffset || _getViewProperty((x) => x.scrollLeft, globalObject);\n\n const clientTop = _getViewProperty((x) => x.clientTop, globalObject);\n const clientLeft = _getViewProperty((x) => x.clientLeft, globalObject);\n\n const top = scrollTop - clientTop;\n const left = scrollLeft - clientLeft;\n\n return {\n top,\n left,\n };\n}\n\nfunction _rectContainsRect(outerRect: Rect, innerRect: Rect): boolean {\n return (\n innerRect.top > outerRect.top &&\n innerRect.top + innerRect.height < outerRect.top + outerRect.height &&\n innerRect.left > outerRect.left &&\n innerRect.left + innerRect.width < outerRect.left + outerRect.width\n );\n}\n\n/** Прямоугольник вьюпорта в координатах документа (абсолютных) */\nfunction getViewportAbsoluteRect(globalObject: GlobalObject): Rect {\n return convertRectToAbsolute(_getWindowRelativeRect(globalObject), globalObject);\n}\n\nexport interface OverflowEdges {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n}\n\n/** Какие стороны попапа (с заданными координатами) выходят за пределы вьюпорта */\nfunction getOverflowEdges(coordinates: Offset, popupRect: Rect, globalObject: GlobalObject): OverflowEdges {\n const viewport = getViewportAbsoluteRect(globalObject);\n const popup = {\n top: coordinates.top,\n left: coordinates.left,\n width: popupRect.width,\n height: popupRect.height,\n };\n return {\n top: popup.top < viewport.top,\n bottom: popup.top + popup.height > viewport.top + viewport.height,\n left: popup.left < viewport.left,\n right: popup.left + popup.width > viewport.left + viewport.width,\n };\n}\n\n/** Количество сторон, по которым попап выходит за вьюпорт (0–4) */\nfunction getOverflowCount(overflow: OverflowEdges): number {\n return [overflow.top, overflow.bottom, overflow.left, overflow.right].filter(Boolean).length;\n}\n\n/** Предпочтительное направление по вертикали при переполнении */\nfunction getPreferredDirection(overflow: OverflowEdges, defaultPosition: PopupPositionsType): string {\n if (overflow.bottom) {\n return 'top';\n }\n if (overflow.top) {\n return 'bottom';\n }\n return getPositionObject(defaultPosition).direction;\n}\n\n/**\n * Упорядоченный список кандидатов для fallback-позиции: при горизонтальном переполнении\n * сначала позиции с нужным align (в т.ч. из pinnablePositions), затем по direction и positions.\n */\nfunction getOrderedFallbackCandidates(\n positions: Readonly<PopupPositionsType[]>,\n overflow: OverflowEdges,\n preferredDirection: string,\n preferredAlignOrder: string[],\n pinnablePositions: Readonly<PopupPositionsType[]>,\n): PopupPositionsType[] {\n const seen = new Set<PopupPositionsType>();\n const add = (p: PopupPositionsType) => {\n if (!seen.has(p)) {\n seen.add(p);\n return true;\n }\n return false;\n };\n\n const candidates: PopupPositionsType[] = [];\n const hasHorizontalOverflow = overflow.left || overflow.right;\n\n if (hasHorizontalOverflow) {\n const preferredAlign = preferredAlignOrder[0];\n for (const dir of ['bottom', 'top']) {\n const p = `${dir} ${preferredAlign}` as PopupPositionsType;\n if (pinnablePositions.includes(p) && add(p)) {\n candidates.push(p);\n }\n }\n for (const align of preferredAlignOrder) {\n for (const p of positions) {\n if (getPositionObject(p).align === align && add(p)) {\n candidates.push(p);\n }\n }\n }\n }\n\n for (const align of preferredAlignOrder) {\n for (const p of positions) {\n const pos = getPositionObject(p);\n if (pos.direction === preferredDirection && pos.align === align && add(p)) {\n candidates.push(p);\n }\n }\n }\n for (const p of positions) {\n if (getPositionObject(p).direction === preferredDirection && add(p)) {\n candidates.push(p);\n }\n }\n for (const p of positions) {\n if (add(p)) {\n candidates.push(p);\n }\n }\n\n return candidates;\n}\n\nfunction _getViewProperty(getProperty: (e: Element) => number, globalObject: GlobalObject): number {\n const views = [globalObject.document?.documentElement, globalObject.document?.body];\n return views.map((x) => x && getProperty(x)).find(Boolean) || 0;\n}\n\nexport const PopupHelper = {\n getPositionObject,\n getElementAbsoluteRect,\n isFullyVisible: isAbsoluteRectFullyVisible,\n convertRectToAbsolute,\n canBecomeFullyVisible,\n getViewportAbsoluteRect,\n getOverflowEdges,\n getOverflowCount,\n getPreferredDirection,\n getOrderedFallbackCandidates,\n};\n"]}
|
|
@@ -12,11 +12,15 @@ export declare class RenderContainer extends React.Component<RenderContainerProp
|
|
|
12
12
|
private static getRootId;
|
|
13
13
|
static readonly defaultRootNode: null;
|
|
14
14
|
private domContainer;
|
|
15
|
+
private popupStrategy;
|
|
15
16
|
private readonly rootId;
|
|
16
17
|
getRootNode: TGetRootNode;
|
|
17
18
|
shouldComponentUpdate(nextProps: RenderContainerProps): boolean;
|
|
18
19
|
componentWillUnmount(): void;
|
|
20
|
+
private reflowContainer;
|
|
19
21
|
render(): React.JSX.Element;
|
|
22
|
+
private debouncedReflowContainer;
|
|
23
|
+
renderMain(): React.JSX.Element;
|
|
20
24
|
private createContainer;
|
|
21
25
|
private mountContainer;
|
|
22
26
|
private destroyContainer;
|
|
@@ -25,10 +25,13 @@ var __assign = (this && this.__assign) || function () {
|
|
|
25
25
|
return __assign.apply(this, arguments);
|
|
26
26
|
};
|
|
27
27
|
import React from 'react';
|
|
28
|
+
import debounce from 'lodash.debounce';
|
|
28
29
|
import { RenderEnvironmentContext } from '../../lib/renderEnvironment/index.js';
|
|
29
30
|
import { getRandomID } from '../../lib/utils.js';
|
|
30
31
|
import { Upgrade } from '../../lib/Upgrades.js';
|
|
31
32
|
import { callChildRef } from '../../lib/callChildRef/callChildRef.js';
|
|
33
|
+
import { PopupConsumer } from '../../lib/theming/Emotion.js';
|
|
34
|
+
import { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';
|
|
32
35
|
import { RenderInnerContainer } from './RenderInnerContainer.js';
|
|
33
36
|
export var PORTAL_INLET_ATTR = 'data-render-container-id';
|
|
34
37
|
export var PORTAL_OUTLET_ATTR = 'data-rendered-container-id';
|
|
@@ -39,6 +42,15 @@ var RenderContainer = /** @class */ (function (_super) {
|
|
|
39
42
|
_this.domContainer = RenderContainer.defaultRootNode;
|
|
40
43
|
_this.rootId = RenderContainer.getRootId();
|
|
41
44
|
_this.getRootNode = function () { return _this.domContainer; };
|
|
45
|
+
_this.reflowContainer = function () {
|
|
46
|
+
var _a;
|
|
47
|
+
var root = _this.context.emotion.sheet.container.getRootNode();
|
|
48
|
+
var globalObject = _this.context.globalObject;
|
|
49
|
+
if (isShadowRoot(root) && _this.domContainer && globalObject) {
|
|
50
|
+
_this.domContainer.setAttribute('style', "position: fixed;z-index: 2;\n margin-top: -".concat(root.host.getBoundingClientRect().height + ((_a = globalObject.scrollY) !== null && _a !== void 0 ? _a : 0), "px;\n margin-left: -").concat(_this.context.globalObject.scrollX, "px;\n "));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
_this.debouncedReflowContainer = debounce(_this.reflowContainer, 32);
|
|
42
54
|
return _this;
|
|
43
55
|
}
|
|
44
56
|
RenderContainer.prototype.shouldComponentUpdate = function (nextProps) {
|
|
@@ -51,31 +63,66 @@ var RenderContainer = /** @class */ (function (_super) {
|
|
|
51
63
|
return true;
|
|
52
64
|
};
|
|
53
65
|
RenderContainer.prototype.componentWillUnmount = function () {
|
|
66
|
+
var _a, _b, _c, _d;
|
|
54
67
|
this.destroyContainer();
|
|
68
|
+
if (this.context.globalObject) {
|
|
69
|
+
(_b = (_a = this.context.globalObject).removeEventListener) === null || _b === void 0 ? void 0 : _b.call(_a, 'scroll', this.reflowContainer);
|
|
70
|
+
(_d = (_c = this.context.globalObject).removeEventListener) === null || _d === void 0 ? void 0 : _d.call(_c, 'resize', this.reflowContainer);
|
|
71
|
+
}
|
|
55
72
|
};
|
|
56
73
|
RenderContainer.prototype.render = function () {
|
|
74
|
+
var _this = this;
|
|
75
|
+
return (React.createElement(PopupConsumer, null, function (_a) {
|
|
76
|
+
var popupStrategy = _a.popupStrategy;
|
|
77
|
+
_this.popupStrategy = popupStrategy !== null && popupStrategy !== void 0 ? popupStrategy : 'auto';
|
|
78
|
+
return _this.renderMain();
|
|
79
|
+
}));
|
|
80
|
+
};
|
|
81
|
+
RenderContainer.prototype.renderMain = function () {
|
|
57
82
|
if (this.props.children) {
|
|
58
83
|
this.mountContainer();
|
|
59
84
|
}
|
|
60
85
|
return React.createElement(RenderInnerContainer, __assign({}, this.props, { domContainer: this.domContainer, rootId: this.rootId }));
|
|
61
86
|
};
|
|
62
87
|
RenderContainer.prototype.createContainer = function () {
|
|
63
|
-
var _a;
|
|
64
|
-
var
|
|
88
|
+
var _a, _b, _c, _d;
|
|
89
|
+
var globalObject = this.context.globalObject;
|
|
90
|
+
var domContainer = (_a = globalObject === null || globalObject === void 0 ? void 0 : globalObject.document) === null || _a === void 0 ? void 0 : _a.createElement('div');
|
|
65
91
|
if (domContainer) {
|
|
66
92
|
domContainer.setAttribute('class', Upgrade.getSpecificityClassName());
|
|
93
|
+
var root = this.context.emotion.sheet.container.getRootNode();
|
|
94
|
+
if (isShadowRoot(root) && globalObject) {
|
|
95
|
+
var rootHeight = root.host.getBoundingClientRect().height;
|
|
96
|
+
switch (this.popupStrategy) {
|
|
97
|
+
case 'relative':
|
|
98
|
+
domContainer.setAttribute('style', "position: relative; top: -".concat(rootHeight, "px"));
|
|
99
|
+
break;
|
|
100
|
+
case 'auto':
|
|
101
|
+
case 'absolute':
|
|
102
|
+
domContainer.setAttribute('style', "position: absolute; z-index: 2; margin-top: -".concat(rootHeight, "px;"));
|
|
103
|
+
break;
|
|
104
|
+
case 'fixed': {
|
|
105
|
+
(_b = globalObject.addEventListener) === null || _b === void 0 ? void 0 : _b.call(globalObject, 'scroll', this.debouncedReflowContainer);
|
|
106
|
+
(_c = globalObject.addEventListener) === null || _c === void 0 ? void 0 : _c.call(globalObject, 'resize', this.debouncedReflowContainer);
|
|
107
|
+
domContainer.setAttribute('style', "position: fixed;z-index: 2;\n margin-top: -".concat(rootHeight + ((_d = globalObject.scrollY) !== null && _d !== void 0 ? _d : 0), "px;\n margin-left: -").concat(globalObject.scrollX, "px;\n "));
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
67
112
|
domContainer.setAttribute(PORTAL_OUTLET_ATTR, "".concat(this.rootId));
|
|
68
113
|
this.domContainer = domContainer;
|
|
69
114
|
}
|
|
70
115
|
};
|
|
71
116
|
RenderContainer.prototype.mountContainer = function () {
|
|
72
|
-
var _a, _b;
|
|
117
|
+
var _a, _b, _c;
|
|
73
118
|
var globalWithReactTesting = this.context.globalObject;
|
|
74
119
|
if (!this.domContainer) {
|
|
75
120
|
this.createContainer();
|
|
76
121
|
}
|
|
77
|
-
|
|
78
|
-
|
|
122
|
+
var stylesRoot = (_b = (_a = this.context.emotion.sheet) === null || _a === void 0 ? void 0 : _a.container) === null || _b === void 0 ? void 0 : _b.getRootNode();
|
|
123
|
+
var rootElement = isShadowRoot(stylesRoot) && stylesRoot ? stylesRoot : (_c = this.context.globalObject.document) === null || _c === void 0 ? void 0 : _c.body;
|
|
124
|
+
if (this.domContainer && this.domContainer.parentNode !== rootElement) {
|
|
125
|
+
rootElement === null || rootElement === void 0 ? void 0 : rootElement.appendChild(this.domContainer);
|
|
79
126
|
if (this.props.containerRef) {
|
|
80
127
|
callChildRef(this.props.containerRef, this.domContainer);
|
|
81
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderContainer.js","sourceRoot":"","sources":["../../../internal/RenderContainer/RenderContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { TGetRootNode } from '../../lib/rootNode/rootNodeDecorator.js';\nimport { RenderEnvironmentContext } from '../../lib/renderEnvironment/index.js';\nimport type { RenderEnvironmentContextType } from '../../lib/renderEnvironment/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getRandomID } from '../../lib/utils.js';\nimport { Upgrade } from '../../lib/Upgrades.js';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef.js';\n\nimport { RenderInnerContainer } from './RenderInnerContainer.js';\nimport type { RenderContainerProps } from './RenderContainerTypes.js';\n\ninterface GlobalWithReactTesting {\n ReactTesting?: any;\n}\n\nexport const PORTAL_INLET_ATTR = 'data-render-container-id';\nexport const PORTAL_OUTLET_ATTR = 'data-rendered-container-id';\n\nexport class RenderContainer extends React.Component<RenderContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderContainer';\n public static displayName = 'RenderContainer';\n\n public static contextType = RenderEnvironmentContext;\n public context!: RenderEnvironmentContextType;\n\n private static getRootId = () => getRandomID();\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n private domContainer: Nullable<HTMLElement> = RenderContainer.defaultRootNode;\n\n private readonly rootId: string = RenderContainer.getRootId();\n\n public getRootNode: TGetRootNode = (): Nullable<Element> => this.domContainer;\n\n public shouldComponentUpdate(nextProps: RenderContainerProps) {\n if (!this.props.children && nextProps.children) {\n this.mountContainer();\n }\n if (this.props.children && !nextProps.children) {\n this.unmountContainer();\n }\n return true;\n }\n\n public componentWillUnmount() {\n this.destroyContainer();\n }\n\n public render() {\n if (this.props.children) {\n this.mountContainer();\n }\n\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n const domContainer = this.context.globalObject.document?.createElement('div');\n if (domContainer) {\n domContainer.setAttribute('class', Upgrade.getSpecificityClassName());\n domContainer.setAttribute(PORTAL_OUTLET_ATTR, `${this.rootId}`);\n this.domContainer = domContainer;\n }\n }\n\n private mountContainer() {\n const globalWithReactTesting = this.context.globalObject as GlobalWithReactTesting;\n\n if (!this.domContainer) {\n this.createContainer();\n }\n if (this.domContainer && this.domContainer.parentNode !== this.context.globalObject.document?.body) {\n this.context.globalObject.document?.body.appendChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, this.domContainer);\n }\n if (globalWithReactTesting.ReactTesting) {\n globalWithReactTesting.ReactTesting.addRenderContainer(this.rootId, this);\n }\n }\n }\n\n private destroyContainer() {\n if (this.domContainer) {\n this.unmountContainer();\n this.domContainer = null;\n }\n }\n\n private unmountContainer() {\n if (this.domContainer && this.domContainer.parentNode) {\n this.domContainer.parentNode.removeChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, null);\n }\n\n const globalWithReactTesting = this.context.globalObject as GlobalWithReactTesting;\n if (globalWithReactTesting.ReactTesting) {\n globalWithReactTesting.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RenderContainer.js","sourceRoot":"","sources":["../../../internal/RenderContainer/RenderContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\n\nimport type { TGetRootNode } from '../../lib/rootNode/rootNodeDecorator.js';\nimport { RenderEnvironmentContext } from '../../lib/renderEnvironment/index.js';\nimport type { PopupStrategy, RenderEnvironmentContextType } from '../../lib/renderEnvironment/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getRandomID } from '../../lib/utils.js';\nimport { Upgrade } from '../../lib/Upgrades.js';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef.js';\nimport { PopupConsumer } from '../../lib/theming/Emotion.js';\nimport { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';\n\nimport { RenderInnerContainer } from './RenderInnerContainer.js';\nimport type { RenderContainerProps } from './RenderContainerTypes.js';\n\ninterface GlobalWithReactTesting {\n ReactTesting?: any;\n}\n\nexport const PORTAL_INLET_ATTR = 'data-render-container-id';\nexport const PORTAL_OUTLET_ATTR = 'data-rendered-container-id';\n\nexport class RenderContainer extends React.Component<RenderContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderContainer';\n public static displayName = 'RenderContainer';\n\n public static contextType = RenderEnvironmentContext;\n public context!: RenderEnvironmentContextType;\n\n private static getRootId = () => getRandomID();\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n private domContainer: Nullable<HTMLElement> = RenderContainer.defaultRootNode;\n private popupStrategy!: PopupStrategy;\n\n private readonly rootId: string = RenderContainer.getRootId();\n\n public getRootNode: TGetRootNode = (): Nullable<Element> => this.domContainer;\n\n public shouldComponentUpdate(nextProps: RenderContainerProps) {\n if (!this.props.children && nextProps.children) {\n this.mountContainer();\n }\n if (this.props.children && !nextProps.children) {\n this.unmountContainer();\n }\n return true;\n }\n\n public componentWillUnmount() {\n this.destroyContainer();\n if (this.context.globalObject) {\n this.context.globalObject.removeEventListener?.('scroll', this.reflowContainer);\n this.context.globalObject.removeEventListener?.('resize', this.reflowContainer);\n }\n }\n\n private reflowContainer = () => {\n const root = this.context.emotion.sheet.container.getRootNode() as ShadowRoot | Document;\n const globalObject = this.context.globalObject;\n if (isShadowRoot(root) && this.domContainer && globalObject) {\n this.domContainer.setAttribute(\n 'style',\n `position: fixed;z-index: 2;\n margin-top: -${root.host.getBoundingClientRect().height + (globalObject.scrollY ?? 0)}px;\n margin-left: -${this.context.globalObject.scrollX}px;\n `,\n );\n }\n };\n\n public render() {\n return (\n <PopupConsumer>\n {({ popupStrategy }) => {\n this.popupStrategy = popupStrategy ?? 'auto';\n return this.renderMain();\n }}\n </PopupConsumer>\n );\n }\n\n private debouncedReflowContainer = debounce(this.reflowContainer, 32);\n\n public renderMain() {\n if (this.props.children) {\n this.mountContainer();\n }\n\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n const globalObject = this.context.globalObject;\n const domContainer = globalObject?.document?.createElement('div');\n if (domContainer) {\n domContainer.setAttribute('class', Upgrade.getSpecificityClassName());\n\n const root = this.context.emotion.sheet.container.getRootNode() as ShadowRoot | Document;\n if (isShadowRoot(root) && globalObject) {\n const rootHeight = root.host.getBoundingClientRect().height;\n switch (this.popupStrategy) {\n case 'relative':\n domContainer.setAttribute('style', `position: relative; top: -${rootHeight}px`);\n break;\n case 'auto':\n case 'absolute':\n domContainer.setAttribute('style', `position: absolute; z-index: 2; margin-top: -${rootHeight}px;`);\n break;\n case 'fixed': {\n globalObject.addEventListener?.('scroll', this.debouncedReflowContainer);\n globalObject.addEventListener?.('resize', this.debouncedReflowContainer);\n domContainer.setAttribute(\n 'style',\n `position: fixed;z-index: 2;\n margin-top: -${rootHeight + (globalObject.scrollY ?? 0)}px;\n margin-left: -${globalObject.scrollX}px;\n `,\n );\n break;\n }\n }\n }\n\n domContainer.setAttribute(PORTAL_OUTLET_ATTR, `${this.rootId}`);\n this.domContainer = domContainer;\n }\n }\n\n private mountContainer() {\n const globalWithReactTesting = this.context.globalObject as GlobalWithReactTesting;\n\n if (!this.domContainer) {\n this.createContainer();\n }\n\n const stylesRoot = this.context.emotion.sheet?.container?.getRootNode();\n const rootElement = isShadowRoot(stylesRoot) && stylesRoot ? stylesRoot : this.context.globalObject.document?.body;\n\n if (this.domContainer && this.domContainer.parentNode !== rootElement) {\n rootElement?.appendChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, this.domContainer);\n }\n if (globalWithReactTesting.ReactTesting) {\n globalWithReactTesting.ReactTesting.addRenderContainer(this.rootId, this);\n }\n }\n }\n\n private destroyContainer() {\n if (this.domContainer) {\n this.unmountContainer();\n this.domContainer = null;\n }\n }\n\n private unmountContainer() {\n if (this.domContainer && this.domContainer.parentNode) {\n this.domContainer.parentNode.removeChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, null);\n }\n\n const globalWithReactTesting = this.context.globalObject as GlobalWithReactTesting;\n if (globalWithReactTesting.ReactTesting) {\n globalWithReactTesting.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
|
|
@@ -15,6 +15,7 @@ export declare class RenderLayer extends React.Component<RenderLayerProps> {
|
|
|
15
15
|
static displayName: string;
|
|
16
16
|
static defaultProps: DefaultProps;
|
|
17
17
|
private globalObject;
|
|
18
|
+
private emotion;
|
|
18
19
|
private getProps;
|
|
19
20
|
private focusOutsideListenerToken;
|
|
20
21
|
getRootNode: TGetRootNode;
|
|
@@ -31,11 +31,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
31
31
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
32
32
|
};
|
|
33
33
|
import React from 'react';
|
|
34
|
-
import {
|
|
34
|
+
import { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';
|
|
35
|
+
import { listen as listenFocusOutside, clickOutsideContent } from '../../lib/listenFocusOutside.js';
|
|
35
36
|
import { CommonWrapper } from '../CommonWrapper/index.js';
|
|
36
37
|
import { getRootNode, rootNode } from '../../lib/rootNode/index.js';
|
|
37
38
|
import { createPropsGetter } from '../../lib/createPropsGetter.js';
|
|
38
|
-
import { isInstanceOf } from '../../lib/isInstanceOf.js';
|
|
39
39
|
import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
40
40
|
var RenderLayer = /** @class */ (function (_super) {
|
|
41
41
|
__extends(RenderLayer, _super);
|
|
@@ -49,12 +49,10 @@ var RenderLayer = /** @class */ (function (_super) {
|
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
_this.handleNativeDocClick = function (event) {
|
|
52
|
-
var target = event.target || event.srcElement;
|
|
53
52
|
var node = _this.getAnchorNode();
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (_this.props.onClickOutside) {
|
|
53
|
+
var isShadowRootElement = isShadowRoot(_this.emotion.sheet.container.getRootNode());
|
|
54
|
+
var clickOutsideOfContent = clickOutsideContent(event, node, isShadowRootElement, _this.globalObject);
|
|
55
|
+
if (clickOutsideOfContent && _this.props.onClickOutside) {
|
|
58
56
|
_this.props.onClickOutside(event);
|
|
59
57
|
}
|
|
60
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderLayer.js","sourceRoot":"","sources":["../../../internal/RenderLayer/RenderLayer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,MAAM,IAAI,kBAAkB,EAAE
|
|
1
|
+
{"version":3,"file":"RenderLayer.js","sourceRoot":"","sources":["../../../internal/RenderLayer/RenderLayer.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { listen as listenFocusOutside, clickOutsideContent } from '../../lib/listenFocusOutside.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { CommonWrapper } from '../CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n getAnchorElement?: () => Nullable<Element>;\n}\n\ntype DefaultProps = Required<Pick<RenderLayerProps, 'active'>>;\n\n@withRenderEnvironment\n@rootNode\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n public static displayName = 'RenderLayer';\n\n public static defaultProps: DefaultProps = {\n active: true,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private getProps = createPropsGetter(RenderLayer.defaultProps);\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.getProps().active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n const { active } = this.getProps();\n\n if (!prevProps.active && active) {\n this.attachListeners();\n }\n if (prevProps.active && !active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.getProps().active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private getAnchorNode(): Nullable<Element> {\n const { getAnchorElement } = this.props;\n return getAnchorElement ? getAnchorElement() : getRootNode(this);\n }\n\n private attachListeners() {\n const node = this.getAnchorNode();\n if (!node) {\n return;\n }\n\n this.focusOutsideListenerToken = listenFocusOutside(() => [node], this.handleFocusOutside, this.globalObject);\n this.globalObject.addEventListener?.('blur', this.handleFocusOutside);\n this.globalObject.document?.addEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement &&\n 'onpointerup' in this.globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n this.globalObject.removeEventListener?.('blur', this.handleFocusOutside);\n this.globalObject.document?.removeEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement &&\n 'onpointerup' in this.globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const node = this.getAnchorNode();\n const isShadowRootElement = isShadowRoot(this.emotion.sheet.container.getRootNode());\n const clickOutsideOfContent = clickOutsideContent(event, node, isShadowRootElement, this.globalObject);\n if (clickOutsideOfContent && this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"]}
|
|
@@ -1022,8 +1022,6 @@ export declare class BasicThemeClass {
|
|
|
1022
1022
|
static get textareaMinHeightSmall(): string;
|
|
1023
1023
|
static get textareaMinHeightMedium(): string;
|
|
1024
1024
|
static get textareaMinHeightLarge(): string;
|
|
1025
|
-
/** @deprecated Перестала использоваться с версии `react-ui@5.6.7`. */
|
|
1026
|
-
static textareaWidth: string;
|
|
1027
1025
|
static textareaPaddingXSmall: string;
|
|
1028
1026
|
static textareaPaddingXMedium: string;
|
|
1029
1027
|
static textareaPaddingXLarge: string;
|
|
@@ -3754,15 +3754,15 @@ var BasicThemeClass = /** @class */ (function () {
|
|
|
3754
3754
|
BasicThemeClass.btnIconSizeSmall = '16px';
|
|
3755
3755
|
BasicThemeClass.btnIconSizeMedium = '20px';
|
|
3756
3756
|
BasicThemeClass.btnIconSizeLarge = '24px';
|
|
3757
|
-
BasicThemeClass.btnDefaultBg =
|
|
3757
|
+
BasicThemeClass.btnDefaultBg = '#fff';
|
|
3758
3758
|
BasicThemeClass.btnDefaultBgStart = 'none';
|
|
3759
3759
|
BasicThemeClass.btnDefaultBgEnd = 'none';
|
|
3760
3760
|
// TODO: create token in colors package
|
|
3761
|
-
BasicThemeClass.btnDefaultHoverBg = '#
|
|
3761
|
+
BasicThemeClass.btnDefaultHoverBg = '#f2f2f2';
|
|
3762
3762
|
BasicThemeClass.btnDefaultHoverBgStart = 'none';
|
|
3763
3763
|
BasicThemeClass.btnDefaultHoverBgEnd = 'none';
|
|
3764
3764
|
// TODO: create token in colors package
|
|
3765
|
-
BasicThemeClass.btnDefaultActiveBg = '#
|
|
3765
|
+
BasicThemeClass.btnDefaultActiveBg = '#f2f2f2';
|
|
3766
3766
|
BasicThemeClass.btnDefaultHoverTextColor = colors.textNeutralHeavy;
|
|
3767
3767
|
BasicThemeClass.btnDefaultBorderColor = colors.lineNeutralPale;
|
|
3768
3768
|
BasicThemeClass.btnDefaultActiveShadow = 'none';
|
|
@@ -3918,8 +3918,8 @@ var BasicThemeClass = /** @class */ (function () {
|
|
|
3918
3918
|
BasicThemeClass.modalSeparatorBorderBottom = "1px solid ".concat(colors.lineNeutralFaint);
|
|
3919
3919
|
BasicThemeClass.modalSeparatorMargin = '0 32px';
|
|
3920
3920
|
BasicThemeClass.modalSeparatorFixedMargin = '0 16px';
|
|
3921
|
-
BasicThemeClass.modalBodyTextColor =
|
|
3922
|
-
BasicThemeClass.modalFooterTextColor =
|
|
3921
|
+
BasicThemeClass.modalBodyTextColor = _a.textColorDefault;
|
|
3922
|
+
BasicThemeClass.modalFooterTextColor = _a.textColorDefault;
|
|
3923
3923
|
BasicThemeClass.modalBodyPaddingTop = '0';
|
|
3924
3924
|
BasicThemeClass.modalBodyPaddingBottom = '20px';
|
|
3925
3925
|
BasicThemeClass.modalBodyBorderRadius = '0px';
|
|
@@ -3961,8 +3961,8 @@ var BasicThemeClass = /** @class */ (function () {
|
|
|
3961
3961
|
BasicThemeClass.sidePageFooterPaddingTop = '20px';
|
|
3962
3962
|
BasicThemeClass.sidePageFooterPaddingBottom = '20px';
|
|
3963
3963
|
BasicThemeClass.sidePageBgDefault = colors.surfaceHigh;
|
|
3964
|
-
BasicThemeClass.sidePageBodyTextColor =
|
|
3965
|
-
BasicThemeClass.sidePageFooterTextColor =
|
|
3964
|
+
BasicThemeClass.sidePageBodyTextColor = _a.textColorDefault;
|
|
3965
|
+
BasicThemeClass.sidePageFooterTextColor = _a.textColorDefault;
|
|
3966
3966
|
BasicThemeClass.sidePageHeaderFontSize = '24px';
|
|
3967
3967
|
BasicThemeClass.sidePageHeaderLineHeight = '32px';
|
|
3968
3968
|
BasicThemeClass.sidePageHeaderPaddingBottom = '16px';
|
|
@@ -4275,8 +4275,6 @@ var BasicThemeClass = /** @class */ (function () {
|
|
|
4275
4275
|
BasicThemeClass.textareaBorderColor = colors.lineNeutralPale;
|
|
4276
4276
|
BasicThemeClass.textareaBackgroundClip = 'padding-box';
|
|
4277
4277
|
BasicThemeClass.textareaBorderRadius = '2px';
|
|
4278
|
-
/** @deprecated Перестала использоваться с версии `react-ui@5.6.7`. */
|
|
4279
|
-
BasicThemeClass.textareaWidth = '250px';
|
|
4280
4278
|
BasicThemeClass.textareaPaddingXSmall = '7px';
|
|
4281
4279
|
BasicThemeClass.textareaPaddingXMedium = '11px';
|
|
4282
4280
|
BasicThemeClass.textareaPaddingXLarge = '15px';
|