@steroidsjs/core 3.0.0-beta.98 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/actions/notifications.js +7 -1
- package/actions/router.js +16 -2
- package/components/HttpComponent.d.ts +7 -7
- package/components/JwtHttpComponent.d.ts +2 -2
- package/components/LocaleComponent.d.ts +6 -6
- package/components/MetaComponent.d.ts +90 -1
- package/components/MetricsComponent.js +2 -1
- package/components/ResourceComponent.d.ts +4 -4
- package/components/UiComponent.d.ts +7 -7
- package/components/WebSocketComponent.d.ts +11 -11
- package/docs-autogen-result.json +15226 -6277
- package/en.json +151 -84
- package/hooks/index.d.ts +4 -3
- package/hooks/index.js +7 -5
- package/hooks/useAbsolutePositioning.js +0 -1
- package/hooks/useAddressBar.js +0 -1
- package/hooks/useApplication.js +8 -1
- package/hooks/useDataProvider.d.ts +17 -2
- package/hooks/useDataSelect.js +21 -4
- package/hooks/useFetch.js +6 -1
- package/hooks/useFile.d.ts +1 -0
- package/hooks/useFile.js +2 -0
- package/hooks/useList.d.ts +53 -14
- package/hooks/useList.js +31 -70
- package/hooks/useTree.d.ts +104 -0
- package/hooks/useTree.js +169 -0
- package/index.d.ts +3 -3
- package/package.json +94 -93
- package/reducers/router.d.ts +2 -1
- package/ui/content/Accordion/Accordion.d.ts +8 -5
- package/ui/content/Accordion/Accordion.js +6 -1
- package/ui/content/Accordion/AccordionItem.d.ts +2 -2
- package/ui/content/Accordion/AccordionItem.js +1 -12
- package/ui/content/Alert/Alert.d.ts +5 -2
- package/ui/content/Alert/Alert.js +13 -12
- package/ui/content/Avatar/Avatar.js +18 -12
- package/ui/content/Badge/Badge.d.ts +5 -1
- package/ui/content/Badge/Badge.js +14 -12
- package/ui/content/Calendar/Calendar.d.ts +6 -1
- package/ui/content/Calendar/Calendar.js +19 -12
- package/ui/content/CalendarSystem/CalendarSystem.d.ts +94 -17
- package/ui/content/CalendarSystem/CalendarSystem.js +66 -77
- package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +1 -2
- package/ui/content/CalendarSystem/hooks/useCalendarControls.js +14 -17
- package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.d.ts +2 -1
- package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.js +13 -5
- package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.js +2 -2
- package/ui/content/CalendarSystem/hooks/useCalendarType.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useCalendarType.js +22 -0
- package/ui/content/CalendarSystem/hooks/useEventsFromDate.d.ts +5 -0
- package/ui/content/CalendarSystem/hooks/useEventsFromDate.js +49 -0
- package/ui/content/CalendarSystem/hooks/{useMonthCalendar.d.ts → useMonthGrid.d.ts} +4 -5
- package/ui/content/CalendarSystem/hooks/{useMonthCalendar.js → useMonthGrid.js} +24 -15
- package/ui/content/CalendarSystem/hooks/{useWeekCalendar.d.ts → useWeekGrid.d.ts} +6 -5
- package/ui/content/CalendarSystem/hooks/useWeekGrid.js +72 -0
- package/ui/content/CalendarSystem/utils/utils.d.ts +8 -0
- package/ui/content/CalendarSystem/utils/utils.js +27 -1
- package/ui/content/Card/Card.d.ts +33 -27
- package/ui/content/Card/Card.js +1 -12
- package/ui/content/Chart/Chart.d.ts +38 -8
- package/ui/content/Chart/Chart.js +16 -12
- package/ui/content/Chat/Chat.d.ts +109 -0
- package/ui/content/Chat/Chat.js +52 -0
- package/ui/content/Chat/constants/timeTemplatesAndUnits.d.ts +8 -0
- package/ui/content/Chat/constants/timeTemplatesAndUnits.js +11 -0
- package/ui/content/Chat/hooks/useChat.d.ts +12 -0
- package/ui/content/Chat/hooks/useChat.js +58 -0
- package/ui/content/Chat/index.d.ts +2 -0
- package/ui/content/Chat/index.js +7 -0
- package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.d.ts +5 -0
- package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.js +61 -0
- package/ui/content/Chat/utils/calculateMessageTimeAgo.d.ts +1 -0
- package/ui/content/Chat/utils/calculateMessageTimeAgo.js +26 -0
- package/ui/content/Chat/utils/getMessagesGroupedByDate.d.ts +4 -0
- package/ui/content/Chat/utils/getMessagesGroupedByDate.js +56 -0
- package/ui/content/Chat/utils/index.d.ts +5 -0
- package/ui/content/Chat/utils/index.js +12 -0
- package/ui/content/Chat/utils/isTodayMessage.d.ts +1 -0
- package/ui/content/Chat/utils/isTodayMessage.js +13 -0
- package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +3 -3
- package/ui/content/CopyToClipboard/CopyToClipboard.js +10 -12
- package/ui/content/Dashboard/Dashboard.d.ts +5 -2
- package/ui/content/Dashboard/Dashboard.js +27 -3
- package/ui/content/Detail/Detail.d.ts +15 -2
- package/ui/content/Detail/Detail.js +12 -1
- package/ui/content/DropDown/DropDown.d.ts +1 -1
- package/ui/content/DropDown/DropDown.js +16 -4
- package/ui/content/Icon/Icon.js +13 -15
- package/ui/content/Kanban/Kanban.d.ts +15 -4
- package/ui/content/Kanban/Kanban.js +8 -12
- package/ui/content/Kanban/hooks/useKanban.d.ts +33 -26
- package/ui/content/Menu/Menu.js +10 -12
- package/ui/content/Slider/Slider.js +1 -12
- package/ui/content/index.d.ts +2 -1
- package/ui/content/index.js +3 -1
- package/ui/crud/index.d.ts +3 -0
- package/ui/form/AutoCompleteField/AutoCompleteField.js +1 -1
- package/ui/form/Button/Button.js +8 -2
- package/ui/form/CheckboxField/CheckboxField.d.ts +1 -0
- package/ui/form/CheckboxField/CheckboxField.js +2 -2
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +18 -2
- package/ui/form/CheckboxListField/CheckboxListField.js +1 -1
- package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +67 -0
- package/ui/form/CheckboxTreeField/CheckboxTreeField.js +126 -0
- package/ui/form/CheckboxTreeField/index.d.ts +2 -0
- package/ui/form/CheckboxTreeField/index.js +7 -0
- package/ui/form/DateField/DateField.js +4 -1
- package/ui/form/DateField/useDateRange.d.ts +1 -0
- package/ui/form/DateField/useDateRange.js +13 -2
- package/ui/form/DateRangeField/DateRangeField.d.ts +34 -1
- package/ui/form/DateRangeField/DateRangeField.js +59 -8
- package/ui/form/DateTimeField/DateTimeField.d.ts +10 -0
- package/ui/form/DateTimeField/DateTimeField.js +11 -3
- package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +25 -1
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +66 -13
- package/ui/form/DropDownField/DropDownField.d.ts +23 -3
- package/ui/form/DropDownField/DropDownField.js +1 -1
- package/ui/form/EmailField/EmailField.d.ts +6 -0
- package/ui/form/EmailField/EmailField.js +0 -4
- package/ui/form/Field/Field.d.ts +9 -1
- package/ui/form/Field/Field.js +1 -1
- package/ui/form/Field/fieldWrapper.d.ts +9 -1
- package/ui/form/FieldList/FieldList.d.ts +13 -7
- package/ui/form/FieldList/FieldList.js +30 -4
- package/ui/form/FileField/FileField.js +5 -0
- package/ui/form/Form/Form.d.ts +26 -3
- package/ui/form/Form/Form.js +5 -3
- package/ui/form/ImageField/ImageField.d.ts +9 -1
- package/ui/form/InputField/InputField.d.ts +5 -2
- package/ui/form/InputField/hooks/useInputFieldWarningByType.js +1 -0
- package/ui/form/NumberField/NumberField.js +34 -7
- package/ui/form/SliderField/SliderField.d.ts +10 -2
- package/ui/form/TimeRangeField/TimeRangeField.d.ts +10 -1
- package/ui/form/TimeRangeField/TimeRangeField.js +3 -1
- package/ui/form/WizardForm/WizardForm.d.ts +119 -0
- package/ui/form/WizardForm/WizardForm.js +167 -0
- package/ui/form/WizardForm/index.d.ts +2 -0
- package/ui/form/WizardForm/index.js +7 -0
- package/ui/form/WizardForm/utils.d.ts +12 -0
- package/ui/form/WizardForm/utils.js +111 -0
- package/ui/form/index.d.ts +3 -1
- package/ui/form/index.js +4 -1
- package/ui/layout/ProgressBar/ProgressBar.js +8 -2
- package/ui/layout/Skeleton/Skeleton.d.ts +3 -1
- package/ui/layout/Tooltip/Tooltip.d.ts +4 -1
- package/ui/list/ControlsColumn/ControlsColumn.d.ts +17 -3
- package/ui/list/FlexGrid/FlexGrid.d.ts +11 -1
- package/ui/list/Grid/Grid.d.ts +42 -6
- package/ui/list/Grid/Grid.js +1 -2
- package/ui/list/LayoutNames/LayoutNames.d.ts +11 -1
- package/ui/list/Steps/Steps.d.ts +19 -7
- package/ui/list/Steps/Steps.js +46 -26
- package/ui/list/TreeTable/TreeTable.d.ts +34 -33
- package/ui/list/TreeTable/TreeTable.js +19 -8
- package/ui/modal/Modal/Modal.d.ts +7 -1
- package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +11 -1
- package/ui/nav/ButtonGroup/ButtonGroup.d.ts +13 -4
- package/ui/nav/Controls/Controls.d.ts +7 -1
- package/ui/nav/Link/Link.d.ts +1 -1
- package/ui/nav/Nav/Nav.d.ts +19 -4
- package/ui/nav/Router/Router.d.ts +19 -3
- package/ui/nav/Router/Router.js +11 -6
- package/ui/nav/Router/helpers.d.ts +2 -2
- package/ui/nav/Router/helpers.js +39 -7
- package/ui/nav/Tree/Tree.d.ts +32 -62
- package/ui/nav/Tree/Tree.js +18 -165
- package/utils/calculateComponentAbsolutePosition.js +74 -24
- package/utils/calendar.d.ts +8 -0
- package/utils/calendar.js +76 -1
- package/utils/data.js +1 -0
- package/utils/form.d.ts +1 -0
- package/utils/form.js +16 -1
- package/ui/content/CalendarSystem/hooks/useWeekCalendar.js +0 -86
- package/utils/list.d.ts +0 -1
- package/utils/list.js +0 -5
package/ui/nav/Tree/Tree.js
CHANGED
|
@@ -10,178 +10,31 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
13
|
exports.__esModule = true;
|
|
40
|
-
var React = __importStar(require("react"));
|
|
41
|
-
var isString_1 = __importDefault(require("lodash-es/isString"));
|
|
42
|
-
var omit_1 = __importDefault(require("lodash-es/omit"));
|
|
43
|
-
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
44
|
-
var keys_1 = __importDefault(require("lodash-es/keys"));
|
|
45
|
-
var react_1 = require("react");
|
|
46
|
-
var list_1 = require("../../../utils/list");
|
|
47
14
|
var hooks_1 = require("../../../hooks");
|
|
48
|
-
var router_1 = require("../../../reducers/router");
|
|
49
15
|
function Tree(props) {
|
|
50
16
|
var components = (0, hooks_1.useComponents)();
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
if (routes) {
|
|
64
|
-
var routeToItem_1 = function (route) {
|
|
65
|
-
var routeItems = (Array.isArray(route.items)
|
|
66
|
-
? route.items.map(function (r) { return routeToItem_1(r); })
|
|
67
|
-
: Object.keys(route.items || {}).map(function (id) { return routeToItem_1(route.items[id]); })).filter(function (r) { return r.visible; });
|
|
68
|
-
return {
|
|
69
|
-
id: route.id.toLowerCase(),
|
|
70
|
-
label: route.label || route.title,
|
|
71
|
-
visible: route.isNavVisible !== false,
|
|
72
|
-
toRoute: routeItems.length === 0 ? route.id : null,
|
|
73
|
-
toRouteParams: routeItems.length === 0 ? props.routerParams : null,
|
|
74
|
-
items: routeItems,
|
|
75
|
-
icon: route.icon
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
return routes.map(function (route) { return routeToItem_1(route); }).filter(function (r) { return r.visible; });
|
|
79
|
-
}
|
|
80
|
-
if (Array.isArray(props.items)) {
|
|
81
|
-
return props.items;
|
|
82
|
-
}
|
|
83
|
-
return [];
|
|
84
|
-
}, [props.items, props.routerParams, routes]);
|
|
85
|
-
var findChildById = function (sourceItems, itemId, parentId, level) {
|
|
86
|
-
if (parentId === void 0) { parentId = ''; }
|
|
87
|
-
if (level === void 0) { level = 1; }
|
|
88
|
-
var foundItem = null;
|
|
89
|
-
if ((0, isString_1["default"])(sourceItems)) {
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
(sourceItems || []).forEach(function (item, index) {
|
|
93
|
-
var uniqId = (0, list_1.getTreeItemUniqId)(item, index, parentId);
|
|
94
|
-
if (!foundItem && (item.id === itemId || uniqId === itemId)) {
|
|
95
|
-
foundItem = __assign(__assign({}, item), { uniqId: uniqId, level: level });
|
|
96
|
-
}
|
|
97
|
-
if (!foundItem) {
|
|
98
|
-
foundItem = findChildById(item[props.itemsKey], itemId, uniqId, level + 1);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
return foundItem;
|
|
102
|
-
};
|
|
103
|
-
var autoOpen = function (sourceItems, parentId, level) {
|
|
104
|
-
if (parentId === void 0) { parentId = ''; }
|
|
105
|
-
if (level === void 0) { level = 1; }
|
|
106
|
-
var opened = {};
|
|
107
|
-
(sourceItems || []).forEach(function (item, index) {
|
|
108
|
-
var uniqId = (0, list_1.getTreeItemUniqId)(item, index, parentId);
|
|
109
|
-
if (props.autoOpenLevels >= level) {
|
|
110
|
-
opened[uniqId] = true;
|
|
111
|
-
}
|
|
112
|
-
if (selectedItemId === item.id) {
|
|
113
|
-
opened[uniqId] = true;
|
|
114
|
-
}
|
|
115
|
-
if (selectedItemId) {
|
|
116
|
-
var finedItem = findChildById(item[props.itemsKey], selectedItemId);
|
|
117
|
-
if (finedItem) {
|
|
118
|
-
opened[uniqId] = true;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
opened = __assign(__assign({}, opened), autoOpen(item[props.itemsKey], uniqId, level + 1));
|
|
122
|
-
});
|
|
123
|
-
return opened;
|
|
124
|
-
};
|
|
125
|
-
// Initial opened items
|
|
126
|
-
React.useEffect(function () {
|
|
127
|
-
// TODO add clientStorage
|
|
128
|
-
// const key = STORAGE_KEY_PREFIX + props.id;
|
|
129
|
-
// const opened = !this.state && this.props.clientStorage.get(key) && this.props.autoSave
|
|
130
|
-
// ? JSON.parse(this.props.clientStorage.get(key))
|
|
131
|
-
// : this._autoOpen(this.props._items);
|
|
132
|
-
var opened = autoOpen(items);
|
|
133
|
-
setOpenedItems(opened);
|
|
134
|
-
var selectedItem = findChildById(items, selectedItemId);
|
|
135
|
-
setSelectedUniqId(selectedItem ? selectedItem.uniqId : null);
|
|
136
|
-
}, [items]);
|
|
137
|
-
var onItemClick = (0, react_1.useCallback)(function (e, uniqId, item) {
|
|
138
|
-
var _a;
|
|
139
|
-
var _b;
|
|
140
|
-
e.preventDefault();
|
|
141
|
-
if (props.onItemClick) {
|
|
142
|
-
props.onItemClick.call(null, e, item);
|
|
143
|
-
}
|
|
144
|
-
setSelectedUniqId(selectedUniqId === uniqId ? null : uniqId);
|
|
145
|
-
if (((_b = item.items) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
146
|
-
var newItems = __assign(__assign({}, openedItems), (_a = {}, _a[uniqId] = !openedItems[uniqId], _a));
|
|
147
|
-
setOpenedItems(newItems);
|
|
148
|
-
// TODO add clientStorage
|
|
149
|
-
// const key = STORAGE_KEY_PREFIX + this.props.id;
|
|
150
|
-
// this.props.clientStorage.set(key, JSON.stringify(this.state.opened));
|
|
151
|
-
}
|
|
152
|
-
}, [openedItems, props.onItemClick, selectedUniqId]);
|
|
153
|
-
var resultItems = (0, react_1.useMemo)(function () {
|
|
154
|
-
var getItems = function (sourceItems, parentId, level) {
|
|
155
|
-
if (parentId === void 0) { parentId = ''; }
|
|
156
|
-
if (level === void 0) { level = 0; }
|
|
157
|
-
var result = [];
|
|
158
|
-
if (props.level && level === props.level) {
|
|
159
|
-
return [];
|
|
160
|
-
}
|
|
161
|
-
(sourceItems || []).forEach(function (item, index) {
|
|
162
|
-
var uniqId = (0, list_1.getTreeItemUniqId)(item, index, parentId);
|
|
163
|
-
var isOpened = props.alwaysOpened || !!openedItems[uniqId];
|
|
164
|
-
var hasItems = item[props.itemsKey] && item[props.itemsKey].length > 0;
|
|
165
|
-
if (props.level && (level === props.level - 1)) {
|
|
166
|
-
hasItems = false;
|
|
167
|
-
}
|
|
168
|
-
result.push(__assign(__assign({}, item), { uniqId: uniqId, index: index, level: level, isOpened: isOpened, isSelected: selectedUniqId === uniqId
|
|
169
|
-
|| (activeRouteIds.includes(item.toRoute)
|
|
170
|
-
&& (0, isEqual_1["default"])(item.toRouteParams || {}, (0, omit_1["default"])(routerParams, (0, keys_1["default"])(item.toRouteParams)))), hasItems: hasItems, onClick: function (e) { return onItemClick(e, uniqId, item); } }));
|
|
171
|
-
if (isOpened) {
|
|
172
|
-
result = result.concat(getItems(item[props.itemsKey], uniqId, level + 1)).filter(Boolean);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
return result;
|
|
176
|
-
};
|
|
177
|
-
return getItems(items);
|
|
178
|
-
}, [activeRouteIds, items, onItemClick, openedItems, props.alwaysOpened, props.itemsKey, props.level, routerParams, selectedUniqId]);
|
|
179
|
-
return components.ui.renderView(props.view || 'nav.TreeView', __assign(__assign({}, props), { items: resultItems }));
|
|
17
|
+
var treeItems = (0, hooks_1.useTree)({
|
|
18
|
+
items: props.items,
|
|
19
|
+
selectedItemId: props.selectedItemId,
|
|
20
|
+
routerParams: props.routerParams,
|
|
21
|
+
itemsKey: props.itemsKey,
|
|
22
|
+
autoOpenLevels: props.autoOpenLevels,
|
|
23
|
+
onExpand: props.onItemClick,
|
|
24
|
+
level: props.level,
|
|
25
|
+
alwaysOpened: props.alwaysOpened,
|
|
26
|
+
useSameSelectedItemId: props.useSameSelectedItemId
|
|
27
|
+
}).treeItems;
|
|
28
|
+
return components.ui.renderView(props.view || 'nav.TreeView', __assign(__assign({}, props), { items: treeItems }));
|
|
180
29
|
}
|
|
30
|
+
exports["default"] = Tree;
|
|
181
31
|
Tree.defaultProps = {
|
|
182
32
|
itemsKey: 'items',
|
|
183
33
|
autoOpenLevels: 1,
|
|
184
34
|
autoSave: false,
|
|
185
|
-
level: 0
|
|
35
|
+
level: 0,
|
|
36
|
+
levelPadding: 32,
|
|
37
|
+
hasIconExpandOnly: false,
|
|
38
|
+
useSameSelectedItemId: true,
|
|
39
|
+
showIcon: true
|
|
186
40
|
};
|
|
187
|
-
exports["default"] = Tree;
|
|
@@ -1,26 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
exports.__esModule = true;
|
|
3
|
+
/* eslint-disable implicit-arrow-linebreak */
|
|
3
4
|
var useAbsolutePositioning_1 = require("../hooks/useAbsolutePositioning");
|
|
5
|
+
var isComponentBeyondTop = function (parentDimensions, componentSize, gap) {
|
|
6
|
+
return (parentDimensions.top - window.scrollY) <= Math.round(componentSize.height + gap);
|
|
7
|
+
};
|
|
8
|
+
var isComponentBeyondLeft = function (parentDimensions, componentSize, gap) {
|
|
9
|
+
return parentDimensions.left <= Math.round(componentSize.width + gap);
|
|
10
|
+
};
|
|
11
|
+
var isComponentBeyondRight = function (parentDimensions, componentSize, gap) {
|
|
12
|
+
return document.body.clientWidth - parentDimensions.right <= Math.round(componentSize.width + gap);
|
|
13
|
+
};
|
|
14
|
+
var isComponentBeyondBottom = function (parentDimensions, componentSize, gap) {
|
|
15
|
+
return (window.innerHeight - (parentDimensions.top + parentDimensions.height - window.scrollY)) <= Math.round(componentSize.height + gap);
|
|
16
|
+
};
|
|
4
17
|
function calculateComponentAbsolutePosition(gap, position, parentRef, componentSize, arrowSize, hasAutoPositioning) {
|
|
5
18
|
if (arrowSize === void 0) { arrowSize = null; }
|
|
6
19
|
if (hasAutoPositioning === void 0) { hasAutoPositioning = true; }
|
|
7
20
|
if (process.env.IS_SSR) {
|
|
8
21
|
return null;
|
|
9
22
|
}
|
|
10
|
-
var style = {
|
|
23
|
+
var style = {
|
|
24
|
+
left: null,
|
|
25
|
+
right: null,
|
|
26
|
+
top: null
|
|
27
|
+
};
|
|
11
28
|
var arrowPosition = null;
|
|
12
29
|
var _a = parentRef.getBoundingClientRect(), top = _a.top, right = _a.right, left = _a.left, width = _a.width, height = _a.height;
|
|
13
|
-
var parentDimensions = {
|
|
30
|
+
var parentDimensions = {
|
|
31
|
+
top: top,
|
|
32
|
+
right: right,
|
|
33
|
+
left: left,
|
|
34
|
+
width: width,
|
|
35
|
+
height: height
|
|
36
|
+
};
|
|
14
37
|
parentDimensions.top += window.scrollY;
|
|
15
38
|
// eslint-disable-next-line default-case
|
|
16
39
|
switch (position) {
|
|
17
40
|
case useAbsolutePositioning_1.Position.TOP:
|
|
18
41
|
case useAbsolutePositioning_1.Position.TOP_LEFT:
|
|
19
42
|
case useAbsolutePositioning_1.Position.TOP_RIGHT:
|
|
20
|
-
// Проверка - выходит ли
|
|
43
|
+
// Проверка - выходит ли component за верхний край страницы?
|
|
21
44
|
// Если да - меняем позицию на bottom
|
|
22
|
-
if (hasAutoPositioning
|
|
23
|
-
&& ((parentDimensions.top - window.scrollY) <= Math.round(componentSize.height + gap))) {
|
|
45
|
+
if (hasAutoPositioning && isComponentBeyondTop(parentDimensions, componentSize, gap)) {
|
|
24
46
|
style.top = parentDimensions.top + parentDimensions.height;
|
|
25
47
|
position = position.replace(useAbsolutePositioning_1.Position.TOP, useAbsolutePositioning_1.Position.BOTTOM);
|
|
26
48
|
}
|
|
@@ -31,11 +53,9 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
31
53
|
case useAbsolutePositioning_1.Position.BOTTOM:
|
|
32
54
|
case useAbsolutePositioning_1.Position.BOTTOM_LEFT:
|
|
33
55
|
case useAbsolutePositioning_1.Position.BOTTOM_RIGHT:
|
|
34
|
-
/// Проверка - выходит ли
|
|
56
|
+
/// Проверка - выходит ли component за нижний край страницы?
|
|
35
57
|
// Если да - меняем позицию на top
|
|
36
|
-
if (hasAutoPositioning
|
|
37
|
-
&& ((window.innerHeight - (parentDimensions.top + parentDimensions.height - window.scrollY))
|
|
38
|
-
<= Math.round(componentSize.height + gap))) {
|
|
58
|
+
if (hasAutoPositioning && isComponentBeyondBottom(parentDimensions, componentSize, gap)) {
|
|
39
59
|
style.top = parentDimensions.top - componentSize.height;
|
|
40
60
|
position = position.replace(useAbsolutePositioning_1.Position.BOTTOM, useAbsolutePositioning_1.Position.TOP);
|
|
41
61
|
}
|
|
@@ -46,9 +66,9 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
46
66
|
case useAbsolutePositioning_1.Position.LEFT:
|
|
47
67
|
case useAbsolutePositioning_1.Position.LEFT_TOP:
|
|
48
68
|
case useAbsolutePositioning_1.Position.LEFT_BOTTOM:
|
|
49
|
-
// Проверка - выходит ли
|
|
69
|
+
// Проверка - выходит ли component за левый край страницы?
|
|
50
70
|
// Если да - меняем позицию на right
|
|
51
|
-
if (hasAutoPositioning && (parentDimensions
|
|
71
|
+
if (hasAutoPositioning && isComponentBeyondLeft(parentDimensions, componentSize, gap)) {
|
|
52
72
|
style.left = parentDimensions.right;
|
|
53
73
|
position = position.replace(useAbsolutePositioning_1.Position.LEFT, useAbsolutePositioning_1.Position.RIGHT);
|
|
54
74
|
}
|
|
@@ -59,10 +79,9 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
59
79
|
case useAbsolutePositioning_1.Position.RIGHT:
|
|
60
80
|
case useAbsolutePositioning_1.Position.RIGHT_TOP:
|
|
61
81
|
case useAbsolutePositioning_1.Position.RIGHT_BOTTOM:
|
|
62
|
-
// Проверка - выходит ли
|
|
82
|
+
// Проверка - выходит ли component за правый край страницы?
|
|
63
83
|
// Если да - меняем позицию на left
|
|
64
|
-
if (hasAutoPositioning
|
|
65
|
-
&& (document.body.clientWidth - parentDimensions.right <= Math.round(componentSize.width + gap))) {
|
|
84
|
+
if (hasAutoPositioning && isComponentBeyondRight(parentDimensions, componentSize, gap)) {
|
|
66
85
|
style.left = parentDimensions.left - componentSize.width;
|
|
67
86
|
position = position.replace(useAbsolutePositioning_1.Position.RIGHT, useAbsolutePositioning_1.Position.LEFT);
|
|
68
87
|
}
|
|
@@ -72,6 +91,31 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
72
91
|
break;
|
|
73
92
|
}
|
|
74
93
|
// eslint-disable-next-line default-case
|
|
94
|
+
switch (position) {
|
|
95
|
+
case useAbsolutePositioning_1.Position.LEFT:
|
|
96
|
+
case useAbsolutePositioning_1.Position.LEFT_TOP:
|
|
97
|
+
case useAbsolutePositioning_1.Position.LEFT_BOTTOM:
|
|
98
|
+
// Проверка - выходит ли component после изменения позиции на left за левый край страницы?
|
|
99
|
+
// Если да - меняем позицию на bottom
|
|
100
|
+
if (hasAutoPositioning && isComponentBeyondLeft(parentDimensions, componentSize, gap)) {
|
|
101
|
+
style.left = null;
|
|
102
|
+
style.top = parentDimensions.top + parentDimensions.height;
|
|
103
|
+
position = useAbsolutePositioning_1.Position.BOTTOM;
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
case useAbsolutePositioning_1.Position.RIGHT:
|
|
107
|
+
case useAbsolutePositioning_1.Position.RIGHT_TOP:
|
|
108
|
+
case useAbsolutePositioning_1.Position.RIGHT_BOTTOM:
|
|
109
|
+
// Проверка - выходит ли component после изменения позиции на right за правый край страницы?
|
|
110
|
+
// Если да - меняем позицию на bottom
|
|
111
|
+
if (hasAutoPositioning && isComponentBeyondRight(parentDimensions, componentSize, gap)) {
|
|
112
|
+
style.left = null;
|
|
113
|
+
style.top = parentDimensions.top + parentDimensions.height;
|
|
114
|
+
position = useAbsolutePositioning_1.Position.BOTTOM;
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
// eslint-disable-next-line default-case
|
|
75
119
|
switch (position) {
|
|
76
120
|
case useAbsolutePositioning_1.Position.TOP:
|
|
77
121
|
case useAbsolutePositioning_1.Position.BOTTOM:
|
|
@@ -80,7 +124,7 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
80
124
|
break;
|
|
81
125
|
case useAbsolutePositioning_1.Position.TOP_LEFT:
|
|
82
126
|
case useAbsolutePositioning_1.Position.BOTTOM_LEFT:
|
|
83
|
-
// Ширина
|
|
127
|
+
// Ширина component больше родителя - стрелка на середину родителя
|
|
84
128
|
style.left = parentDimensions.left;
|
|
85
129
|
if (arrowSize && (parentDimensions.width < componentSize.width)) {
|
|
86
130
|
arrowPosition = { left: parentDimensions.width / 2 };
|
|
@@ -88,7 +132,7 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
88
132
|
break;
|
|
89
133
|
case useAbsolutePositioning_1.Position.TOP_RIGHT:
|
|
90
134
|
case useAbsolutePositioning_1.Position.BOTTOM_RIGHT:
|
|
91
|
-
// Ширина
|
|
135
|
+
// Ширина component больше родителя - стрелка на середину родителя
|
|
92
136
|
style.left = parentDimensions.right - componentSize.width;
|
|
93
137
|
if (arrowSize && (parentDimensions.width < componentSize.width)) {
|
|
94
138
|
arrowPosition = {
|
|
@@ -118,13 +162,13 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
118
162
|
}
|
|
119
163
|
break;
|
|
120
164
|
}
|
|
121
|
-
|
|
165
|
+
//Проверка - при позиционировании top/bottom component не выходит за пределы страницы по горизонтали
|
|
122
166
|
if (position.includes('top') || position.includes('bottom')) {
|
|
123
167
|
if (!position.includes('Left')
|
|
124
|
-
&& (
|
|
168
|
+
&& (parentDimensions.left <= Math.round((componentSize.width - parentDimensions.width) + gap))) {
|
|
125
169
|
style.right = null;
|
|
126
170
|
position = position.replace('Right', 'Left');
|
|
127
|
-
// Если ширина
|
|
171
|
+
// Если ширина component больше ширины родителя - выставить стрелку на середину родителя
|
|
128
172
|
if (parentDimensions.left < componentSize.width) {
|
|
129
173
|
arrowPosition = { left: parentDimensions.width / 2 };
|
|
130
174
|
}
|
|
@@ -144,15 +188,17 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
144
188
|
style.right = document.body.clientWidth - parentDimensions.right;
|
|
145
189
|
}
|
|
146
190
|
}
|
|
147
|
-
// Проверка - при позиционировании left/right
|
|
191
|
+
// Проверка - при позиционировании left/right component не выходит за пределы страницы по вертикали
|
|
148
192
|
if (position.includes('left') || position.includes('right')) {
|
|
149
193
|
if (!position.includes('Top')
|
|
150
194
|
&& parentDimensions.top - window.scrollY <= Math.round((componentSize.height - parentDimensions.height) + gap)) {
|
|
151
195
|
position = position.replace('Bottom', 'Top');
|
|
152
|
-
if (parentDimensions.height < componentSize.height) {
|
|
153
|
-
arrowPosition = { top: parentDimensions.height / 2 };
|
|
154
|
-
}
|
|
155
196
|
style.top = parentDimensions.top;
|
|
197
|
+
if (arrowSize && parentDimensions.height < componentSize.height) {
|
|
198
|
+
arrowPosition = {
|
|
199
|
+
top: parentDimensions.height / 2
|
|
200
|
+
};
|
|
201
|
+
}
|
|
156
202
|
}
|
|
157
203
|
else if (!position.includes('Bottom')
|
|
158
204
|
&& (window.innerHeight - (parentDimensions.top + parentDimensions.height - window.scrollY)
|
|
@@ -166,6 +212,10 @@ function calculateComponentAbsolutePosition(gap, position, parentRef, componentS
|
|
|
166
212
|
style.top = parentDimensions.top + parentDimensions.height - componentSize.height;
|
|
167
213
|
}
|
|
168
214
|
}
|
|
169
|
-
return {
|
|
215
|
+
return {
|
|
216
|
+
style: style,
|
|
217
|
+
position: position,
|
|
218
|
+
arrowPosition: arrowPosition
|
|
219
|
+
};
|
|
170
220
|
}
|
|
171
221
|
exports["default"] = calculateComponentAbsolutePosition;
|
package/utils/calendar.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
export declare const convertDate: (date: string | Date, fromFormats: string | string[], toFormat?: string, isUtc?: boolean, dateInUtc?: boolean) => any;
|
|
2
|
+
export declare const customLocaleUtils: {
|
|
3
|
+
formatDay: (day: Date, locale?: string) => string;
|
|
4
|
+
formatMonthTitle: (month: Date, locale?: string) => string;
|
|
5
|
+
formatWeekdayShort: (weekday: number, locale?: string) => any;
|
|
6
|
+
formatWeekdayLong: (weekday: number, locale?: string) => any;
|
|
7
|
+
getFirstDayOfWeek: (locale?: string) => any;
|
|
8
|
+
getMonths: (locale?: string) => any;
|
|
9
|
+
};
|
|
2
10
|
/**
|
|
3
11
|
* Регулярка проверяет соответствие введенной строки формату 'hh:mm'
|
|
4
12
|
* Максимальная величина - 23:59
|
package/utils/calendar.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.convertDate = void 0;
|
|
6
|
+
exports.customLocaleUtils = exports.convertDate = void 0;
|
|
7
7
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
8
8
|
/* eslint-disable import/prefer-default-export */
|
|
9
9
|
var dayjs_1 = __importDefault(require("dayjs"));
|
|
@@ -45,6 +45,81 @@ var convertDate = function (date, fromFormats, toFormat, isUtc, dateInUtc) {
|
|
|
45
45
|
return toFormat ? dayjsDate.format(toFormat) : dayjsDate.toDate();
|
|
46
46
|
};
|
|
47
47
|
exports.convertDate = convertDate;
|
|
48
|
+
/**
|
|
49
|
+
* Функции форматирования для локализации Day Picker.
|
|
50
|
+
*/
|
|
51
|
+
var WEEKDAYS_LONG = {
|
|
52
|
+
en: [
|
|
53
|
+
'Sunday',
|
|
54
|
+
'Monday',
|
|
55
|
+
'Tuesday',
|
|
56
|
+
'Wednesday',
|
|
57
|
+
'Thursday',
|
|
58
|
+
'Friday',
|
|
59
|
+
'Saturday',
|
|
60
|
+
],
|
|
61
|
+
ru: [
|
|
62
|
+
'Понедельник',
|
|
63
|
+
'Вторник',
|
|
64
|
+
'Среда',
|
|
65
|
+
'Четверг',
|
|
66
|
+
'Пятница',
|
|
67
|
+
'Суббота',
|
|
68
|
+
'Воскресенье',
|
|
69
|
+
]
|
|
70
|
+
};
|
|
71
|
+
var WEEKDAYS_SHORT = {
|
|
72
|
+
en: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
|
73
|
+
ru: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']
|
|
74
|
+
};
|
|
75
|
+
var MONTHS = {
|
|
76
|
+
en: [
|
|
77
|
+
'January',
|
|
78
|
+
'February',
|
|
79
|
+
'March',
|
|
80
|
+
'April',
|
|
81
|
+
'May',
|
|
82
|
+
'June',
|
|
83
|
+
'July',
|
|
84
|
+
'August',
|
|
85
|
+
'September',
|
|
86
|
+
'October',
|
|
87
|
+
'November',
|
|
88
|
+
'December',
|
|
89
|
+
],
|
|
90
|
+
ru: [
|
|
91
|
+
'Январь',
|
|
92
|
+
'Февраль',
|
|
93
|
+
'Март',
|
|
94
|
+
'Апрель',
|
|
95
|
+
'Май',
|
|
96
|
+
'Июнь',
|
|
97
|
+
'Июль',
|
|
98
|
+
'Август',
|
|
99
|
+
'Сентябрь',
|
|
100
|
+
'Октябрь',
|
|
101
|
+
'Ноябрь',
|
|
102
|
+
'Декабрь',
|
|
103
|
+
]
|
|
104
|
+
};
|
|
105
|
+
var FIRST_DAY = {
|
|
106
|
+
en: 0,
|
|
107
|
+
ru: 1
|
|
108
|
+
};
|
|
109
|
+
var formatDay = function (day, locale) { return "".concat(WEEKDAYS_LONG[locale][day.getDay()], ", ").concat(day.getDate(), " ").concat(MONTHS[locale][day.getMonth()], " ").concat(day.getFullYear()); };
|
|
110
|
+
var formatMonthTitle = function (month, locale) { return "".concat(MONTHS[locale][month.getMonth()], " ").concat(month.getFullYear()); };
|
|
111
|
+
var formatWeekdayShort = function (weekday, locale) { return WEEKDAYS_SHORT[locale][weekday]; };
|
|
112
|
+
var formatWeekdayLong = function (weekday, locale) { return WEEKDAYS_SHORT[locale][weekday]; };
|
|
113
|
+
var getFirstDayOfWeek = function (locale) { return FIRST_DAY[locale]; };
|
|
114
|
+
var getMonths = function (locale) { return MONTHS[locale]; };
|
|
115
|
+
exports.customLocaleUtils = {
|
|
116
|
+
formatDay: formatDay,
|
|
117
|
+
formatMonthTitle: formatMonthTitle,
|
|
118
|
+
formatWeekdayShort: formatWeekdayShort,
|
|
119
|
+
formatWeekdayLong: formatWeekdayLong,
|
|
120
|
+
getFirstDayOfWeek: getFirstDayOfWeek,
|
|
121
|
+
getMonths: getMonths
|
|
122
|
+
};
|
|
48
123
|
/**
|
|
49
124
|
* Регулярка проверяет соответствие введенной строки формату 'hh:mm'
|
|
50
125
|
* Максимальная величина - 23:59
|
package/utils/data.js
CHANGED
|
@@ -144,6 +144,7 @@ var shouldUpdate = function (objA, objB, deepPaths) {
|
|
|
144
144
|
? (0, exports.shouldUpdate)(objA[key], objB[key], deepPath)
|
|
145
145
|
: (0, exports.shouldUpdateSingle)(objA[key], objB[key]);
|
|
146
146
|
if (hasChanges) {
|
|
147
|
+
// eslint-disable-next-line no-console
|
|
147
148
|
console.log(0, 'shouldUpdate changed key:', key, objA[key], objB[key]);
|
|
148
149
|
return { value: true };
|
|
149
150
|
}
|
package/utils/form.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
export declare const setInWithPath: (state: any, value: any, path: string[], pathIndex?: number) => any;
|
|
3
3
|
export declare const cleanEmptyObject: (object: any) => any;
|
|
4
|
+
export declare const clearErrors: (values: any, prevValues: any, errors: any, setErrors: any) => void;
|
|
4
5
|
export declare const providers: {
|
|
5
6
|
redux: {
|
|
6
7
|
useForm: (formId: any, initialValues: any) => any;
|
package/utils/form.js
CHANGED
|
@@ -14,11 +14,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
16
|
exports.__esModule = true;
|
|
17
|
-
exports.providers = exports.cleanEmptyObject = exports.setInWithPath = void 0;
|
|
17
|
+
exports.providers = exports.clearErrors = exports.cleanEmptyObject = exports.setInWithPath = void 0;
|
|
18
18
|
var isPlainObject_1 = __importDefault(require("lodash-es/isPlainObject"));
|
|
19
19
|
var isArray_1 = __importDefault(require("lodash-es/isArray"));
|
|
20
20
|
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
21
21
|
var get_1 = __importDefault(require("lodash-es/get"));
|
|
22
|
+
var differenceWith_1 = __importDefault(require("lodash-es/differenceWith"));
|
|
23
|
+
var toPairs_1 = __importDefault(require("lodash-es/toPairs"));
|
|
24
|
+
var omit_1 = __importDefault(require("lodash-es/omit"));
|
|
25
|
+
var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
|
|
22
26
|
var react_1 = require("react");
|
|
23
27
|
var react_use_1 = require("react-use");
|
|
24
28
|
var useDispatch_1 = __importDefault(require("../hooks/useDispatch"));
|
|
@@ -75,6 +79,17 @@ var cleanEmptyObject = function (object) {
|
|
|
75
79
|
return object;
|
|
76
80
|
};
|
|
77
81
|
exports.cleanEmptyObject = cleanEmptyObject;
|
|
82
|
+
var clearErrors = function (values, prevValues, errors, setErrors) {
|
|
83
|
+
if (!(0, isEmpty_1["default"])(errors) && !(0, isEqual_1["default"])(prevValues || {}, values)) {
|
|
84
|
+
// compare arrays of key-value pairs in previous and new field objects to identify the changed field
|
|
85
|
+
var changedField = (0, differenceWith_1["default"])((0, toPairs_1["default"])(values), (0, toPairs_1["default"])(prevValues), isEqual_1["default"]);
|
|
86
|
+
if (!(0, isEmpty_1["default"])(changedField)) {
|
|
87
|
+
var cleanedErrors = (0, omit_1["default"])(errors, changedField[0]);
|
|
88
|
+
setErrors((0, isEmpty_1["default"])(cleanedErrors) ? null : cleanedErrors);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
exports.clearErrors = clearErrors;
|
|
78
93
|
// Form state providers
|
|
79
94
|
exports.providers = {
|
|
80
95
|
// Redux
|
|
@@ -1,86 +0,0 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
|
-
exports.__esModule = true;
|
|
17
|
-
var react_1 = __importDefault(require("react"));
|
|
18
|
-
var calendar_1 = require("../../../../utils/calendar");
|
|
19
|
-
var DateControlType_1 = __importDefault(require("../enums/DateControlType"));
|
|
20
|
-
var useCalendarControls_1 = require("./useCalendarControls");
|
|
21
|
-
var utils_1 = require("../utils/utils");
|
|
22
|
-
var WEEK_DAY_FORMAT = 'dd, D MMM';
|
|
23
|
-
var ONE_DAY = 1;
|
|
24
|
-
var getFormattedWeekFromDate = function (fromDate) {
|
|
25
|
-
if (fromDate === void 0) { fromDate = null; }
|
|
26
|
-
var currentWeek = (0, utils_1.getWeekDaysFromDate)(fromDate || new Date());
|
|
27
|
-
return currentWeek.map(function (dayOfWeek) {
|
|
28
|
-
var copyOfDayWeek = __assign({}, dayOfWeek);
|
|
29
|
-
copyOfDayWeek.formattedDisplay = (0, calendar_1.convertDate)(dayOfWeek.date, null, WEEK_DAY_FORMAT);
|
|
30
|
-
// eslint-disable-next-line no-unused-expressions
|
|
31
|
-
(0, utils_1.isDateIsToday)(copyOfDayWeek.date) ? copyOfDayWeek.isToday = true : copyOfDayWeek.isToday = false;
|
|
32
|
-
return copyOfDayWeek;
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
var useWeekCalendar = function (currentMonthDate) {
|
|
36
|
-
var _a;
|
|
37
|
-
var _b = react_1["default"].useState(getFormattedWeekFromDate()), currentWeek = _b[0], setCurrentWeek = _b[1];
|
|
38
|
-
var forceUpdateWeekOnMonthChange = react_1["default"].useCallback(function (newMonthDate) {
|
|
39
|
-
setCurrentWeek(getFormattedWeekFromDate(newMonthDate));
|
|
40
|
-
}, []);
|
|
41
|
-
var changeMonthAfterWeekChanged = react_1["default"].useCallback(function (formattedWeek) {
|
|
42
|
-
var firstDayOfWeek = formattedWeek[0].date;
|
|
43
|
-
var currentMonthNumber = currentMonthDate.getMonth();
|
|
44
|
-
var isWeekOutOfMonth = formattedWeek.every(function (dayOfWeek) { return dayOfWeek.date.getMonth() !== currentMonthNumber; });
|
|
45
|
-
if (!isWeekOutOfMonth) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
if (currentMonthNumber - firstDayOfWeek.getMonth() === 1) {
|
|
49
|
-
var lastDayOfWeekInNewMonth = formattedWeek[formattedWeek.length - 1].date;
|
|
50
|
-
var prevMonthControl = (0, useCalendarControls_1.getSourceCalendarControl)(DateControlType_1["default"].PREV_ONE);
|
|
51
|
-
prevMonthControl.click();
|
|
52
|
-
forceUpdateWeekOnMonthChange(lastDayOfWeekInNewMonth);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
var firstDayOfWeekInNewMonth = formattedWeek[0].date;
|
|
56
|
-
var nextMonthControl = (0, useCalendarControls_1.getSourceCalendarControl)(DateControlType_1["default"].NEXT_ONE);
|
|
57
|
-
nextMonthControl.click();
|
|
58
|
-
forceUpdateWeekOnMonthChange(firstDayOfWeekInNewMonth);
|
|
59
|
-
}
|
|
60
|
-
}, [currentMonthDate, forceUpdateWeekOnMonthChange]);
|
|
61
|
-
var setNextWeek = react_1["default"].useCallback(function () {
|
|
62
|
-
var lastDayOfWeek = currentWeek[currentWeek.length - 1].date;
|
|
63
|
-
lastDayOfWeek.setDate(lastDayOfWeek.getDate() + ONE_DAY);
|
|
64
|
-
var formattedNextWeek = getFormattedWeekFromDate(lastDayOfWeek);
|
|
65
|
-
setCurrentWeek(formattedNextWeek);
|
|
66
|
-
changeMonthAfterWeekChanged(formattedNextWeek);
|
|
67
|
-
}, [currentWeek, changeMonthAfterWeekChanged]);
|
|
68
|
-
var setPrevWeek = react_1["default"].useCallback(function () {
|
|
69
|
-
var firstDayOfWeek = currentWeek[0].date;
|
|
70
|
-
firstDayOfWeek.setDate(firstDayOfWeek.getDate() - ONE_DAY);
|
|
71
|
-
var formattedPrevWeek = getFormattedWeekFromDate(firstDayOfWeek);
|
|
72
|
-
setCurrentWeek(formattedPrevWeek);
|
|
73
|
-
changeMonthAfterWeekChanged(formattedPrevWeek);
|
|
74
|
-
}, [currentWeek, changeMonthAfterWeekChanged]);
|
|
75
|
-
return {
|
|
76
|
-
currentWeek: currentWeek,
|
|
77
|
-
weekControls: (_a = {},
|
|
78
|
-
_a[DateControlType_1["default"].NEXT_DOUBLE] = DateControlType_1["default"].NEXT_ONE,
|
|
79
|
-
_a[DateControlType_1["default"].NEXT_ONE] = setNextWeek,
|
|
80
|
-
_a[DateControlType_1["default"].PREV_ONE] = setPrevWeek,
|
|
81
|
-
_a[DateControlType_1["default"].PREV_DOUBLE] = DateControlType_1["default"].PREV_ONE,
|
|
82
|
-
_a),
|
|
83
|
-
forceUpdateWeekOnMonthChange: forceUpdateWeekOnMonthChange
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
exports["default"] = useWeekCalendar;
|
package/utils/list.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const getTreeItemUniqId: (item: any, index: any, parentId: any) => string;
|
package/utils/list.js
DELETED