@steroidsjs/core 3.0.0-beta.81 → 3.0.0-beta.83
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/docs-autogen-result.json +398 -43
- package/en.json +24 -2
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +3 -1
- package/hooks/useAbsolutePositioning.d.ts +56 -7
- package/hooks/useAbsolutePositioning.js +39 -131
- package/hooks/useApplication.js +2 -0
- package/hooks/useDataSelect.js +3 -0
- package/hooks/useList.d.ts +10 -4
- package/hooks/useList.js +59 -14
- package/hooks/useSaveCursorPosition.d.ts +6 -0
- package/hooks/useSaveCursorPosition.js +29 -0
- package/package.json +1 -1
- package/ui/content/Chart/Chart.d.ts +37 -0
- package/ui/content/Chart/Chart.js +19 -0
- package/ui/content/Chart/index.d.ts +2 -0
- package/ui/content/Chart/index.js +7 -0
- package/ui/content/DropDown/DropDown.d.ts +1 -1
- package/ui/content/DropDown/DropDown.js +1 -1
- package/ui/content/index.d.ts +2 -1
- package/ui/content/index.js +3 -1
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +1 -1
- package/ui/form/CheckboxListField/CheckboxListField.js +1 -1
- package/ui/form/DateField/useDateRange.d.ts +2 -1
- package/ui/form/DateField/useDateRange.js +23 -0
- package/ui/form/DateRangeField/DateRangeField.js +3 -1
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +3 -1
- package/ui/form/Field/fieldWrapper.d.ts +6 -5
- package/ui/form/InputField/InputField.d.ts +1 -2
- package/ui/form/InputField/InputField.js +9 -4
- package/ui/form/NumberField/NumberField.d.ts +6 -2
- package/ui/form/NumberField/NumberField.js +32 -4
- package/ui/form/NumberField/hooks/useInputTypeNumber.d.ts +10 -0
- package/ui/form/NumberField/hooks/useInputTypeNumber.js +45 -0
- package/ui/form/PasswordField/PasswordField.js +3 -2
- package/ui/form/RadioListField/RadioListField.js +1 -1
- package/ui/form/TextField/TextField.js +4 -3
- package/ui/layout/Sidebar/Sidebar.d.ts +0 -5
- package/ui/layout/Sidebar/Sidebar.js +1 -4
- package/ui/layout/Tooltip/Tooltip.d.ts +3 -7
- package/ui/layout/Tooltip/Tooltip.js +17 -49
- package/ui/list/Grid/Grid.js +2 -1
- package/ui/list/TreeTable/TreeTable.d.ts +35 -0
- package/ui/list/TreeTable/TreeTable.js +69 -0
- package/ui/list/TreeTable/index.d.ts +2 -0
- package/ui/list/TreeTable/index.js +7 -0
- package/ui/nav/Tree/Tree.js +4 -4
- package/utils/calculateComponentAbsolutePosition.d.ts +6 -0
- package/{ui/layout/Tooltip/calculate.js → utils/calculateComponentAbsolutePosition.js} +64 -58
- package/utils/calendar.js +2 -0
- package/utils/list.d.ts +1 -0
- package/utils/list.js +5 -0
- package/ui/layout/Tooltip/calculate.d.ts +0 -6
package/ui/list/Grid/Grid.js
CHANGED
|
@@ -69,7 +69,8 @@ function Grid(props) {
|
|
|
69
69
|
items: props.items,
|
|
70
70
|
initialItems: props.initialItems,
|
|
71
71
|
initialTotal: props.initialTotal,
|
|
72
|
-
autoFetchOnFormChanges: props.autoFetchOnFormChanges
|
|
72
|
+
autoFetchOnFormChanges: props.autoFetchOnFormChanges,
|
|
73
|
+
hasTreeItems: props.hasTreeItems
|
|
73
74
|
}), list = _a.list, model = _a.model, searchModel = _a.searchModel, paginationPosition = _a.paginationPosition, paginationSizePosition = _a.paginationSizePosition, layoutNamesPosition = _a.layoutNamesPosition, renderList = _a.renderList, renderEmpty = _a.renderEmpty, renderPagination = _a.renderPagination, renderPaginationSize = _a.renderPaginationSize, renderLayoutNames = _a.renderLayoutNames, renderSearchForm = _a.renderSearchForm, onFetch = _a.onFetch, onSort = _a.onSort;
|
|
74
75
|
var renderLabel = (0, react_1.useCallback)(function (column) {
|
|
75
76
|
if (column.headerView) {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IColumnViewProps, IGridColumn, IGridProps } from '../Grid/Grid';
|
|
3
|
+
export interface ITreeColumnViewProps extends IColumnViewProps {
|
|
4
|
+
item: {
|
|
5
|
+
onTreeItemClick?: (uniqueId: string, item: {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}) => void;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export interface ITreeTableItem {
|
|
12
|
+
/**
|
|
13
|
+
* Идентификатор узла
|
|
14
|
+
*/
|
|
15
|
+
id?: string | number;
|
|
16
|
+
/**
|
|
17
|
+
* Вложенные элементы
|
|
18
|
+
* @example items: [{id: 3, name: 'Ivan'}]
|
|
19
|
+
*/
|
|
20
|
+
items?: any[];
|
|
21
|
+
/**
|
|
22
|
+
* Уникальный идентификатор,
|
|
23
|
+
* используется для сохранения состояния открыта или закрыта ячейка
|
|
24
|
+
*/
|
|
25
|
+
uniqueId?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ITreeTableProps extends Omit<IGridProps, 'items'> {
|
|
28
|
+
/**
|
|
29
|
+
* Элементы коллекции
|
|
30
|
+
* @example [{id: 1, name: 'Jane'}, {id: 2, name: 'John', items: [...]}]
|
|
31
|
+
*/
|
|
32
|
+
items?: ITreeTableItem[];
|
|
33
|
+
}
|
|
34
|
+
export declare const addTreeColumnFieldsToFirstColumn: (columns: IGridColumn[]) => IGridColumn[];
|
|
35
|
+
export default function TreeTable(props: ITreeTableProps): JSX.Element;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
37
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
38
|
+
if (ar || !(i in from)) {
|
|
39
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
40
|
+
ar[i] = from[i];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
44
|
+
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
exports.__esModule = true;
|
|
49
|
+
exports.addTreeColumnFieldsToFirstColumn = void 0;
|
|
50
|
+
var React = __importStar(require("react"));
|
|
51
|
+
var react_1 = require("react");
|
|
52
|
+
var merge_1 = __importDefault(require("lodash-es/merge"));
|
|
53
|
+
var Grid_1 = __importDefault(require("../Grid"));
|
|
54
|
+
var TREE_COLUMN_VIEW_FIELDS = {
|
|
55
|
+
valueView: 'TreeColumnView',
|
|
56
|
+
headerClassName: 'TreeColumnHeader'
|
|
57
|
+
};
|
|
58
|
+
var addTreeColumnFieldsToFirstColumn = function (columns) {
|
|
59
|
+
var newColumns = __spreadArray([], columns, true);
|
|
60
|
+
// Add tree view to the first column
|
|
61
|
+
(0, merge_1["default"])(newColumns[0], TREE_COLUMN_VIEW_FIELDS);
|
|
62
|
+
return newColumns;
|
|
63
|
+
};
|
|
64
|
+
exports.addTreeColumnFieldsToFirstColumn = addTreeColumnFieldsToFirstColumn;
|
|
65
|
+
function TreeTable(props) {
|
|
66
|
+
var columns = (0, react_1.useMemo)(function () { return (0, exports.addTreeColumnFieldsToFirstColumn)(props.columns); }, [props.columns]);
|
|
67
|
+
return (React.createElement(Grid_1["default"], __assign({}, props, { columns: columns, items: props.items, itemsIndexing: false, hasTreeItems: true })));
|
|
68
|
+
}
|
|
69
|
+
exports["default"] = TreeTable;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
var TreeTable_1 = __importDefault(require("./TreeTable"));
|
|
7
|
+
exports["default"] = TreeTable_1["default"];
|
package/ui/nav/Tree/Tree.js
CHANGED
|
@@ -43,9 +43,9 @@ var omit_1 = __importDefault(require("lodash-es/omit"));
|
|
|
43
43
|
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
44
44
|
var keys_1 = __importDefault(require("lodash-es/keys"));
|
|
45
45
|
var react_1 = require("react");
|
|
46
|
+
var list_1 = require("../../../utils/list");
|
|
46
47
|
var hooks_1 = require("../../../hooks");
|
|
47
48
|
var router_1 = require("../../../reducers/router");
|
|
48
|
-
var resolveId = function (item, index, parentId) { return (parentId ? parentId + '.' : '') + String(item.id || index); };
|
|
49
49
|
function Tree(props) {
|
|
50
50
|
var components = (0, hooks_1.useComponents)();
|
|
51
51
|
var STORAGE_KEY_PREFIX = 'tree_';
|
|
@@ -90,7 +90,7 @@ function Tree(props) {
|
|
|
90
90
|
return null;
|
|
91
91
|
}
|
|
92
92
|
(sourceItems || []).forEach(function (item, index) {
|
|
93
|
-
var uniqId =
|
|
93
|
+
var uniqId = (0, list_1.getTreeItemUniqId)(item, index, parentId);
|
|
94
94
|
if (!foundItem && (item.id === itemId || uniqId === itemId)) {
|
|
95
95
|
foundItem = __assign(__assign({}, item), { uniqId: uniqId, level: level });
|
|
96
96
|
}
|
|
@@ -105,7 +105,7 @@ function Tree(props) {
|
|
|
105
105
|
if (level === void 0) { level = 1; }
|
|
106
106
|
var opened = {};
|
|
107
107
|
(sourceItems || []).forEach(function (item, index) {
|
|
108
|
-
var uniqId =
|
|
108
|
+
var uniqId = (0, list_1.getTreeItemUniqId)(item, index, parentId);
|
|
109
109
|
if (props.autoOpenLevels >= level) {
|
|
110
110
|
opened[uniqId] = true;
|
|
111
111
|
}
|
|
@@ -159,7 +159,7 @@ function Tree(props) {
|
|
|
159
159
|
return [];
|
|
160
160
|
}
|
|
161
161
|
(sourceItems || []).forEach(function (item, index) {
|
|
162
|
-
var uniqId =
|
|
162
|
+
var uniqId = (0, list_1.getTreeItemUniqId)(item, index, parentId);
|
|
163
163
|
var isOpened = props.alwaysOpened || !!openedItems[uniqId];
|
|
164
164
|
var hasItems = item[props.itemsKey] && item[props.itemsKey].length > 0;
|
|
165
165
|
if (props.level && (level === props.level - 1)) {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IComponentArrowPosition, IComponentStylePosition } from '../hooks/useAbsolutePositioning';
|
|
2
|
+
export default function calculateComponentAbsolutePosition(gap: any, position: any, parentRef: any, componentSize: any, arrowSize?: any, hasAutoPositioning?: boolean): {
|
|
3
|
+
style: IComponentStylePosition;
|
|
4
|
+
position: any;
|
|
5
|
+
arrowPosition: IComponentArrowPosition;
|
|
6
|
+
};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
exports.__esModule = true;
|
|
3
|
-
|
|
3
|
+
var useAbsolutePositioning_1 = require("../hooks/useAbsolutePositioning");
|
|
4
|
+
function calculateComponentAbsolutePosition(gap, position, parentRef, componentSize, arrowSize, hasAutoPositioning) {
|
|
5
|
+
if (arrowSize === void 0) { arrowSize = null; }
|
|
6
|
+
if (hasAutoPositioning === void 0) { hasAutoPositioning = true; }
|
|
4
7
|
if (process.env.IS_SSR) {
|
|
5
8
|
return null;
|
|
6
9
|
}
|
|
@@ -11,54 +14,57 @@ function calculate(gap, position, parentRef, tooltipSize, arrowSize) {
|
|
|
11
14
|
parentDimensions.top += window.scrollY;
|
|
12
15
|
// eslint-disable-next-line default-case
|
|
13
16
|
switch (position) {
|
|
14
|
-
case
|
|
15
|
-
case
|
|
16
|
-
case
|
|
17
|
+
case useAbsolutePositioning_1.Position.TOP:
|
|
18
|
+
case useAbsolutePositioning_1.Position.TOP_LEFT:
|
|
19
|
+
case useAbsolutePositioning_1.Position.TOP_RIGHT:
|
|
17
20
|
// Проверка - выходит ли tooltip за верхний край страницы?
|
|
18
21
|
// Если да - меняем позицию на bottom
|
|
19
|
-
if (
|
|
22
|
+
if (hasAutoPositioning
|
|
23
|
+
&& ((parentDimensions.top - window.scrollY) <= Math.round(componentSize.height + gap))) {
|
|
20
24
|
style.top = parentDimensions.top + parentDimensions.height;
|
|
21
|
-
position = position.replace(
|
|
25
|
+
position = position.replace(useAbsolutePositioning_1.Position.TOP, useAbsolutePositioning_1.Position.BOTTOM);
|
|
22
26
|
}
|
|
23
27
|
else {
|
|
24
|
-
style.top = parentDimensions.top -
|
|
28
|
+
style.top = parentDimensions.top - componentSize.height;
|
|
25
29
|
}
|
|
26
30
|
break;
|
|
27
|
-
case
|
|
28
|
-
case
|
|
29
|
-
case
|
|
31
|
+
case useAbsolutePositioning_1.Position.BOTTOM:
|
|
32
|
+
case useAbsolutePositioning_1.Position.BOTTOM_LEFT:
|
|
33
|
+
case useAbsolutePositioning_1.Position.BOTTOM_RIGHT:
|
|
30
34
|
/// Проверка - выходит ли tooltip за нижний край страницы?
|
|
31
35
|
// Если да - меняем позицию на top
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
if (hasAutoPositioning
|
|
37
|
+
&& ((window.innerHeight - (parentDimensions.top + parentDimensions.height - window.scrollY))
|
|
38
|
+
<= Math.round(componentSize.height + gap))) {
|
|
39
|
+
style.top = parentDimensions.top - componentSize.height;
|
|
40
|
+
position = position.replace(useAbsolutePositioning_1.Position.BOTTOM, useAbsolutePositioning_1.Position.TOP);
|
|
36
41
|
}
|
|
37
42
|
else {
|
|
38
43
|
style.top = parentDimensions.top + parentDimensions.height;
|
|
39
44
|
}
|
|
40
45
|
break;
|
|
41
|
-
case
|
|
42
|
-
case
|
|
43
|
-
case
|
|
46
|
+
case useAbsolutePositioning_1.Position.LEFT:
|
|
47
|
+
case useAbsolutePositioning_1.Position.LEFT_TOP:
|
|
48
|
+
case useAbsolutePositioning_1.Position.LEFT_BOTTOM:
|
|
44
49
|
// Проверка - выходит ли tooltip за левый край страницы?
|
|
45
50
|
// Если да - меняем позицию на right
|
|
46
|
-
if (parentDimensions.left <= Math.round(
|
|
51
|
+
if (hasAutoPositioning && (parentDimensions.left <= Math.round(componentSize.width + gap))) {
|
|
47
52
|
style.left = parentDimensions.right;
|
|
48
|
-
position = position.replace(
|
|
53
|
+
position = position.replace(useAbsolutePositioning_1.Position.LEFT, useAbsolutePositioning_1.Position.RIGHT);
|
|
49
54
|
}
|
|
50
55
|
else {
|
|
51
|
-
style.left = parentDimensions.left -
|
|
56
|
+
style.left = parentDimensions.left - componentSize.width;
|
|
52
57
|
}
|
|
53
58
|
break;
|
|
54
|
-
case
|
|
55
|
-
case
|
|
56
|
-
case
|
|
59
|
+
case useAbsolutePositioning_1.Position.RIGHT:
|
|
60
|
+
case useAbsolutePositioning_1.Position.RIGHT_TOP:
|
|
61
|
+
case useAbsolutePositioning_1.Position.RIGHT_BOTTOM:
|
|
57
62
|
// Проверка - выходит ли tooltip за правый край страницы?
|
|
58
63
|
// Если да - меняем позицию на left
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
if (hasAutoPositioning
|
|
65
|
+
&& (document.body.clientWidth - parentDimensions.right <= Math.round(componentSize.width + gap))) {
|
|
66
|
+
style.left = parentDimensions.left - componentSize.width;
|
|
67
|
+
position = position.replace(useAbsolutePositioning_1.Position.RIGHT, useAbsolutePositioning_1.Position.LEFT);
|
|
62
68
|
}
|
|
63
69
|
else {
|
|
64
70
|
style.left = parentDimensions.right;
|
|
@@ -67,45 +73,45 @@ function calculate(gap, position, parentRef, tooltipSize, arrowSize) {
|
|
|
67
73
|
}
|
|
68
74
|
// eslint-disable-next-line default-case
|
|
69
75
|
switch (position) {
|
|
70
|
-
case
|
|
71
|
-
case
|
|
76
|
+
case useAbsolutePositioning_1.Position.TOP:
|
|
77
|
+
case useAbsolutePositioning_1.Position.BOTTOM:
|
|
72
78
|
// Выравнивание по середине
|
|
73
|
-
style.left = (parentDimensions.left + (parentDimensions.width / 2)) - (
|
|
79
|
+
style.left = (parentDimensions.left + (parentDimensions.width / 2)) - (componentSize.width / 2);
|
|
74
80
|
break;
|
|
75
|
-
case
|
|
76
|
-
case
|
|
81
|
+
case useAbsolutePositioning_1.Position.TOP_LEFT:
|
|
82
|
+
case useAbsolutePositioning_1.Position.BOTTOM_LEFT:
|
|
77
83
|
// Ширина tooltip больше родителя - стрелка на середину родителя
|
|
78
84
|
style.left = parentDimensions.left;
|
|
79
|
-
if (parentDimensions.width <
|
|
85
|
+
if (arrowSize && (parentDimensions.width < componentSize.width)) {
|
|
80
86
|
arrowPosition = { left: parentDimensions.width / 2 };
|
|
81
87
|
}
|
|
82
88
|
break;
|
|
83
|
-
case
|
|
84
|
-
case
|
|
89
|
+
case useAbsolutePositioning_1.Position.TOP_RIGHT:
|
|
90
|
+
case useAbsolutePositioning_1.Position.BOTTOM_RIGHT:
|
|
85
91
|
// Ширина tooltip больше родителя - стрелка на середину родителя
|
|
86
|
-
style.left = parentDimensions.right -
|
|
87
|
-
if (parentDimensions.width <
|
|
92
|
+
style.left = parentDimensions.right - componentSize.width;
|
|
93
|
+
if (arrowSize && (parentDimensions.width < componentSize.width)) {
|
|
88
94
|
arrowPosition = {
|
|
89
95
|
left: null,
|
|
90
96
|
right: (parentDimensions.width / 2) - (arrowSize.width / 2)
|
|
91
97
|
};
|
|
92
98
|
}
|
|
93
99
|
break;
|
|
94
|
-
case
|
|
95
|
-
case
|
|
96
|
-
style.top = (parentDimensions.top + (parentDimensions.height / 2)) - (
|
|
100
|
+
case useAbsolutePositioning_1.Position.LEFT:
|
|
101
|
+
case useAbsolutePositioning_1.Position.RIGHT:
|
|
102
|
+
style.top = (parentDimensions.top + (parentDimensions.height / 2)) - (componentSize.height / 2);
|
|
97
103
|
break;
|
|
98
|
-
case
|
|
99
|
-
case
|
|
104
|
+
case useAbsolutePositioning_1.Position.LEFT_TOP:
|
|
105
|
+
case useAbsolutePositioning_1.Position.RIGHT_TOP:
|
|
100
106
|
style.top = parentDimensions.top;
|
|
101
|
-
if (parentDimensions.height <
|
|
107
|
+
if (arrowSize && (parentDimensions.height < componentSize.height)) {
|
|
102
108
|
arrowPosition = { top: parentDimensions.height / 2 };
|
|
103
109
|
}
|
|
104
110
|
break;
|
|
105
|
-
case
|
|
106
|
-
case
|
|
107
|
-
style.top = parentDimensions.top + parentDimensions.height -
|
|
108
|
-
if (parentDimensions.height <
|
|
111
|
+
case useAbsolutePositioning_1.Position.LEFT_BOTTOM:
|
|
112
|
+
case useAbsolutePositioning_1.Position.RIGHT_BOTTOM:
|
|
113
|
+
style.top = parentDimensions.top + parentDimensions.height - componentSize.height;
|
|
114
|
+
if (arrowSize && (parentDimensions.height < componentSize.height)) {
|
|
109
115
|
arrowPosition = {
|
|
110
116
|
bottom: (parentDimensions.height / 2) - (arrowSize.height / 2)
|
|
111
117
|
};
|
|
@@ -115,20 +121,20 @@ function calculate(gap, position, parentRef, tooltipSize, arrowSize) {
|
|
|
115
121
|
// Проверка - при позиционировании top/bottom tooltip не выходит за пределы страницы по горизонтали
|
|
116
122
|
if (position.includes('top') || position.includes('bottom')) {
|
|
117
123
|
if (!position.includes('Left')
|
|
118
|
-
&& (style.left < 0 || parentDimensions.left <= Math.round((
|
|
124
|
+
&& (style.left < 0 || parentDimensions.left <= Math.round((componentSize.width - parentDimensions.width) + gap))) {
|
|
119
125
|
style.right = null;
|
|
120
126
|
position = position.replace('Right', 'Left');
|
|
121
127
|
// Если ширина tooltip больше ширины родителя - выставить стрелку на середину родителя
|
|
122
|
-
if (parentDimensions.left <
|
|
128
|
+
if (parentDimensions.left < componentSize.width) {
|
|
123
129
|
arrowPosition = { left: parentDimensions.width / 2 };
|
|
124
130
|
}
|
|
125
131
|
style.left = parentDimensions.left;
|
|
126
132
|
}
|
|
127
|
-
if (!position.includes('Right')
|
|
133
|
+
else if (!position.includes('Right')
|
|
128
134
|
&& (document.body.clientWidth - parentDimensions.right
|
|
129
|
-
<= Math.round((
|
|
135
|
+
<= Math.round((componentSize.width - parentDimensions.width) + gap))) {
|
|
130
136
|
position = position.replace('Left', 'Right');
|
|
131
|
-
if (parentDimensions.width <
|
|
137
|
+
if (arrowSize && (parentDimensions.width < componentSize.width)) {
|
|
132
138
|
arrowPosition = {
|
|
133
139
|
left: null,
|
|
134
140
|
right: (parentDimensions.width / 2) - (arrowSize.width / 2)
|
|
@@ -141,25 +147,25 @@ function calculate(gap, position, parentRef, tooltipSize, arrowSize) {
|
|
|
141
147
|
// Проверка - при позиционировании left/right tooltip не выходит за пределы страницы по вертикали
|
|
142
148
|
if (position.includes('left') || position.includes('right')) {
|
|
143
149
|
if (!position.includes('Top')
|
|
144
|
-
&& parentDimensions.top - window.scrollY <= Math.round((
|
|
150
|
+
&& parentDimensions.top - window.scrollY <= Math.round((componentSize.height - parentDimensions.height) + gap)) {
|
|
145
151
|
position = position.replace('Bottom', 'Top');
|
|
146
|
-
if (parentDimensions.height <
|
|
152
|
+
if (parentDimensions.height < componentSize.height) {
|
|
147
153
|
arrowPosition = { top: parentDimensions.height / 2 };
|
|
148
154
|
}
|
|
149
155
|
style.top = parentDimensions.top;
|
|
150
156
|
}
|
|
151
|
-
if (!position.includes('Bottom')
|
|
157
|
+
else if (!position.includes('Bottom')
|
|
152
158
|
&& (window.innerHeight - (parentDimensions.top + parentDimensions.height - window.scrollY)
|
|
153
|
-
<= Math.round((
|
|
159
|
+
<= Math.round((componentSize.height - parentDimensions.height) + gap))) {
|
|
154
160
|
position = position.replace('Top', 'Bottom');
|
|
155
|
-
if (parentDimensions.height <
|
|
161
|
+
if (arrowSize && (parentDimensions.height < componentSize.height)) {
|
|
156
162
|
arrowPosition = {
|
|
157
163
|
bottom: (parentDimensions.height / 2) - (arrowSize.height / 2)
|
|
158
164
|
};
|
|
159
165
|
}
|
|
160
|
-
style.top = parentDimensions.top + parentDimensions.height -
|
|
166
|
+
style.top = parentDimensions.top + parentDimensions.height - componentSize.height;
|
|
161
167
|
}
|
|
162
168
|
}
|
|
163
169
|
return { style: style, position: position, arrowPosition: arrowPosition };
|
|
164
170
|
}
|
|
165
|
-
exports["default"] =
|
|
171
|
+
exports["default"] = calculateComponentAbsolutePosition;
|
package/utils/calendar.js
CHANGED
|
@@ -8,7 +8,9 @@ exports.convertDate = void 0;
|
|
|
8
8
|
/* eslint-disable import/prefer-default-export */
|
|
9
9
|
var dayjs_1 = __importDefault(require("dayjs"));
|
|
10
10
|
var utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
11
|
+
var customParseFormat_1 = __importDefault(require("dayjs/plugin/customParseFormat"));
|
|
11
12
|
dayjs_1["default"].extend(utc_1["default"]);
|
|
13
|
+
dayjs_1["default"].extend(customParseFormat_1["default"]);
|
|
12
14
|
var convertDate = function (date, fromFormats, toFormat, isUtc, dateInUtc) {
|
|
13
15
|
if (toFormat === void 0) { toFormat = null; }
|
|
14
16
|
if (isUtc === void 0) { isUtc = false; }
|
package/utils/list.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getTreeItemUniqId: (item: any, index: any, parentId: any) => string;
|
package/utils/list.js
ADDED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ITooltipArrowPosition, ITooltipStylePosition } from '../Tooltip/Tooltip';
|
|
2
|
-
export default function calculate(gap: any, position: any, parentRef: any, tooltipSize: any, arrowSize: any): {
|
|
3
|
-
style: ITooltipStylePosition;
|
|
4
|
-
position: any;
|
|
5
|
-
arrowPosition: ITooltipArrowPosition;
|
|
6
|
-
};
|