@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.
Files changed (175) hide show
  1. package/actions/notifications.js +7 -1
  2. package/actions/router.js +16 -2
  3. package/components/HttpComponent.d.ts +7 -7
  4. package/components/JwtHttpComponent.d.ts +2 -2
  5. package/components/LocaleComponent.d.ts +6 -6
  6. package/components/MetaComponent.d.ts +90 -1
  7. package/components/MetricsComponent.js +2 -1
  8. package/components/ResourceComponent.d.ts +4 -4
  9. package/components/UiComponent.d.ts +7 -7
  10. package/components/WebSocketComponent.d.ts +11 -11
  11. package/docs-autogen-result.json +15226 -6277
  12. package/en.json +151 -84
  13. package/hooks/index.d.ts +4 -3
  14. package/hooks/index.js +7 -5
  15. package/hooks/useAbsolutePositioning.js +0 -1
  16. package/hooks/useAddressBar.js +0 -1
  17. package/hooks/useApplication.js +8 -1
  18. package/hooks/useDataProvider.d.ts +17 -2
  19. package/hooks/useDataSelect.js +21 -4
  20. package/hooks/useFetch.js +6 -1
  21. package/hooks/useFile.d.ts +1 -0
  22. package/hooks/useFile.js +2 -0
  23. package/hooks/useList.d.ts +53 -14
  24. package/hooks/useList.js +31 -70
  25. package/hooks/useTree.d.ts +104 -0
  26. package/hooks/useTree.js +169 -0
  27. package/index.d.ts +3 -3
  28. package/package.json +94 -93
  29. package/reducers/router.d.ts +2 -1
  30. package/ui/content/Accordion/Accordion.d.ts +8 -5
  31. package/ui/content/Accordion/Accordion.js +6 -1
  32. package/ui/content/Accordion/AccordionItem.d.ts +2 -2
  33. package/ui/content/Accordion/AccordionItem.js +1 -12
  34. package/ui/content/Alert/Alert.d.ts +5 -2
  35. package/ui/content/Alert/Alert.js +13 -12
  36. package/ui/content/Avatar/Avatar.js +18 -12
  37. package/ui/content/Badge/Badge.d.ts +5 -1
  38. package/ui/content/Badge/Badge.js +14 -12
  39. package/ui/content/Calendar/Calendar.d.ts +6 -1
  40. package/ui/content/Calendar/Calendar.js +19 -12
  41. package/ui/content/CalendarSystem/CalendarSystem.d.ts +94 -17
  42. package/ui/content/CalendarSystem/CalendarSystem.js +66 -77
  43. package/ui/content/CalendarSystem/hooks/useCalendarControls.d.ts +1 -2
  44. package/ui/content/CalendarSystem/hooks/useCalendarControls.js +14 -17
  45. package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.d.ts +2 -1
  46. package/ui/content/CalendarSystem/hooks/useCalendarSystemEventGroupModals.js +13 -5
  47. package/ui/content/CalendarSystem/hooks/useCalendarSystemModals.js +2 -2
  48. package/ui/content/CalendarSystem/hooks/useCalendarType.d.ts +5 -0
  49. package/ui/content/CalendarSystem/hooks/useCalendarType.js +22 -0
  50. package/ui/content/CalendarSystem/hooks/useEventsFromDate.d.ts +5 -0
  51. package/ui/content/CalendarSystem/hooks/useEventsFromDate.js +49 -0
  52. package/ui/content/CalendarSystem/hooks/{useMonthCalendar.d.ts → useMonthGrid.d.ts} +4 -5
  53. package/ui/content/CalendarSystem/hooks/{useMonthCalendar.js → useMonthGrid.js} +24 -15
  54. package/ui/content/CalendarSystem/hooks/{useWeekCalendar.d.ts → useWeekGrid.d.ts} +6 -5
  55. package/ui/content/CalendarSystem/hooks/useWeekGrid.js +72 -0
  56. package/ui/content/CalendarSystem/utils/utils.d.ts +8 -0
  57. package/ui/content/CalendarSystem/utils/utils.js +27 -1
  58. package/ui/content/Card/Card.d.ts +33 -27
  59. package/ui/content/Card/Card.js +1 -12
  60. package/ui/content/Chart/Chart.d.ts +38 -8
  61. package/ui/content/Chart/Chart.js +16 -12
  62. package/ui/content/Chat/Chat.d.ts +109 -0
  63. package/ui/content/Chat/Chat.js +52 -0
  64. package/ui/content/Chat/constants/timeTemplatesAndUnits.d.ts +8 -0
  65. package/ui/content/Chat/constants/timeTemplatesAndUnits.js +11 -0
  66. package/ui/content/Chat/hooks/useChat.d.ts +12 -0
  67. package/ui/content/Chat/hooks/useChat.js +58 -0
  68. package/ui/content/Chat/index.d.ts +2 -0
  69. package/ui/content/Chat/index.js +7 -0
  70. package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.d.ts +5 -0
  71. package/ui/content/Chat/utils/addNewMessageIntoGroupedMessages.js +61 -0
  72. package/ui/content/Chat/utils/calculateMessageTimeAgo.d.ts +1 -0
  73. package/ui/content/Chat/utils/calculateMessageTimeAgo.js +26 -0
  74. package/ui/content/Chat/utils/getMessagesGroupedByDate.d.ts +4 -0
  75. package/ui/content/Chat/utils/getMessagesGroupedByDate.js +56 -0
  76. package/ui/content/Chat/utils/index.d.ts +5 -0
  77. package/ui/content/Chat/utils/index.js +12 -0
  78. package/ui/content/Chat/utils/isTodayMessage.d.ts +1 -0
  79. package/ui/content/Chat/utils/isTodayMessage.js +13 -0
  80. package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +3 -3
  81. package/ui/content/CopyToClipboard/CopyToClipboard.js +10 -12
  82. package/ui/content/Dashboard/Dashboard.d.ts +5 -2
  83. package/ui/content/Dashboard/Dashboard.js +27 -3
  84. package/ui/content/Detail/Detail.d.ts +15 -2
  85. package/ui/content/Detail/Detail.js +12 -1
  86. package/ui/content/DropDown/DropDown.d.ts +1 -1
  87. package/ui/content/DropDown/DropDown.js +16 -4
  88. package/ui/content/Icon/Icon.js +13 -15
  89. package/ui/content/Kanban/Kanban.d.ts +15 -4
  90. package/ui/content/Kanban/Kanban.js +8 -12
  91. package/ui/content/Kanban/hooks/useKanban.d.ts +33 -26
  92. package/ui/content/Menu/Menu.js +10 -12
  93. package/ui/content/Slider/Slider.js +1 -12
  94. package/ui/content/index.d.ts +2 -1
  95. package/ui/content/index.js +3 -1
  96. package/ui/crud/index.d.ts +3 -0
  97. package/ui/form/AutoCompleteField/AutoCompleteField.js +1 -1
  98. package/ui/form/Button/Button.js +8 -2
  99. package/ui/form/CheckboxField/CheckboxField.d.ts +1 -0
  100. package/ui/form/CheckboxField/CheckboxField.js +2 -2
  101. package/ui/form/CheckboxListField/CheckboxListField.d.ts +18 -2
  102. package/ui/form/CheckboxListField/CheckboxListField.js +1 -1
  103. package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +67 -0
  104. package/ui/form/CheckboxTreeField/CheckboxTreeField.js +126 -0
  105. package/ui/form/CheckboxTreeField/index.d.ts +2 -0
  106. package/ui/form/CheckboxTreeField/index.js +7 -0
  107. package/ui/form/DateField/DateField.js +4 -1
  108. package/ui/form/DateField/useDateRange.d.ts +1 -0
  109. package/ui/form/DateField/useDateRange.js +13 -2
  110. package/ui/form/DateRangeField/DateRangeField.d.ts +34 -1
  111. package/ui/form/DateRangeField/DateRangeField.js +59 -8
  112. package/ui/form/DateTimeField/DateTimeField.d.ts +10 -0
  113. package/ui/form/DateTimeField/DateTimeField.js +11 -3
  114. package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +25 -1
  115. package/ui/form/DateTimeRangeField/DateTimeRangeField.js +66 -13
  116. package/ui/form/DropDownField/DropDownField.d.ts +23 -3
  117. package/ui/form/DropDownField/DropDownField.js +1 -1
  118. package/ui/form/EmailField/EmailField.d.ts +6 -0
  119. package/ui/form/EmailField/EmailField.js +0 -4
  120. package/ui/form/Field/Field.d.ts +9 -1
  121. package/ui/form/Field/Field.js +1 -1
  122. package/ui/form/Field/fieldWrapper.d.ts +9 -1
  123. package/ui/form/FieldList/FieldList.d.ts +13 -7
  124. package/ui/form/FieldList/FieldList.js +30 -4
  125. package/ui/form/FileField/FileField.js +5 -0
  126. package/ui/form/Form/Form.d.ts +26 -3
  127. package/ui/form/Form/Form.js +5 -3
  128. package/ui/form/ImageField/ImageField.d.ts +9 -1
  129. package/ui/form/InputField/InputField.d.ts +5 -2
  130. package/ui/form/InputField/hooks/useInputFieldWarningByType.js +1 -0
  131. package/ui/form/NumberField/NumberField.js +34 -7
  132. package/ui/form/SliderField/SliderField.d.ts +10 -2
  133. package/ui/form/TimeRangeField/TimeRangeField.d.ts +10 -1
  134. package/ui/form/TimeRangeField/TimeRangeField.js +3 -1
  135. package/ui/form/WizardForm/WizardForm.d.ts +119 -0
  136. package/ui/form/WizardForm/WizardForm.js +167 -0
  137. package/ui/form/WizardForm/index.d.ts +2 -0
  138. package/ui/form/WizardForm/index.js +7 -0
  139. package/ui/form/WizardForm/utils.d.ts +12 -0
  140. package/ui/form/WizardForm/utils.js +111 -0
  141. package/ui/form/index.d.ts +3 -1
  142. package/ui/form/index.js +4 -1
  143. package/ui/layout/ProgressBar/ProgressBar.js +8 -2
  144. package/ui/layout/Skeleton/Skeleton.d.ts +3 -1
  145. package/ui/layout/Tooltip/Tooltip.d.ts +4 -1
  146. package/ui/list/ControlsColumn/ControlsColumn.d.ts +17 -3
  147. package/ui/list/FlexGrid/FlexGrid.d.ts +11 -1
  148. package/ui/list/Grid/Grid.d.ts +42 -6
  149. package/ui/list/Grid/Grid.js +1 -2
  150. package/ui/list/LayoutNames/LayoutNames.d.ts +11 -1
  151. package/ui/list/Steps/Steps.d.ts +19 -7
  152. package/ui/list/Steps/Steps.js +46 -26
  153. package/ui/list/TreeTable/TreeTable.d.ts +34 -33
  154. package/ui/list/TreeTable/TreeTable.js +19 -8
  155. package/ui/modal/Modal/Modal.d.ts +7 -1
  156. package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +11 -1
  157. package/ui/nav/ButtonGroup/ButtonGroup.d.ts +13 -4
  158. package/ui/nav/Controls/Controls.d.ts +7 -1
  159. package/ui/nav/Link/Link.d.ts +1 -1
  160. package/ui/nav/Nav/Nav.d.ts +19 -4
  161. package/ui/nav/Router/Router.d.ts +19 -3
  162. package/ui/nav/Router/Router.js +11 -6
  163. package/ui/nav/Router/helpers.d.ts +2 -2
  164. package/ui/nav/Router/helpers.js +39 -7
  165. package/ui/nav/Tree/Tree.d.ts +32 -62
  166. package/ui/nav/Tree/Tree.js +18 -165
  167. package/utils/calculateComponentAbsolutePosition.js +74 -24
  168. package/utils/calendar.d.ts +8 -0
  169. package/utils/calendar.js +76 -1
  170. package/utils/data.js +1 -0
  171. package/utils/form.d.ts +1 -0
  172. package/utils/form.js +16 -1
  173. package/ui/content/CalendarSystem/hooks/useWeekCalendar.js +0 -86
  174. package/utils/list.d.ts +0 -1
  175. package/utils/list.js +0 -5
@@ -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 STORAGE_KEY_PREFIX = 'tree_';
52
- //State
53
- var _a = (0, react_1.useState)(null), selectedUniqId = _a[0], setSelectedUniqId = _a[1];
54
- var _b = (0, react_1.useState)({}), openedItems = _b[0], setOpenedItems = _b[1];
55
- //Redux connection
56
- var _c = (0, hooks_1.useSelector)(function (state) { return ({
57
- routes: (0, isString_1["default"])(props.items) ? (0, router_1.getNavItems)(state, props.items) : null,
58
- selectedItemId: (0, isString_1["default"])(props.items) ? (0, router_1.getRouteId)(state) : props.selectedItemId,
59
- activeRouteIds: (0, router_1.getActiveRouteIds)(state),
60
- routerParams: (0, router_1.getRouterParams)(state)
61
- }); }), routes = _c.routes, selectedItemId = _c.selectedItemId, activeRouteIds = _c.activeRouteIds, routerParams = _c.routerParams;
62
- var items = (0, react_1.useMemo)(function () {
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 = { left: null, right: null, top: null };
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 = { top: top, right: right, left: left, width: width, height: height };
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
- // Проверка - выходит ли tooltip за верхний край страницы?
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
- /// Проверка - выходит ли tooltip за нижний край страницы?
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
- // Проверка - выходит ли tooltip за левый край страницы?
69
+ // Проверка - выходит ли component за левый край страницы?
50
70
  // Если да - меняем позицию на right
51
- if (hasAutoPositioning && (parentDimensions.left <= Math.round(componentSize.width + gap))) {
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
- // Проверка - выходит ли tooltip за правый край страницы?
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
- // Ширина tooltip больше родителя - стрелка на середину родителя
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
- // Ширина tooltip больше родителя - стрелка на середину родителя
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
- // Проверка - при позиционировании top/bottom tooltip не выходит за пределы страницы по горизонтали
165
+ //Проверка - при позиционировании top/bottom component не выходит за пределы страницы по горизонтали
122
166
  if (position.includes('top') || position.includes('bottom')) {
123
167
  if (!position.includes('Left')
124
- && (style.left < 0 || parentDimensions.left <= Math.round((componentSize.width - parentDimensions.width) + gap))) {
168
+ && (parentDimensions.left <= Math.round((componentSize.width - parentDimensions.width) + gap))) {
125
169
  style.right = null;
126
170
  position = position.replace('Right', 'Left');
127
- // Если ширина tooltip больше ширины родителя - выставить стрелку на середину родителя
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 tooltip не выходит за пределы страницы по вертикали
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 { style: style, position: position, arrowPosition: arrowPosition };
215
+ return {
216
+ style: style,
217
+ position: position,
218
+ arrowPosition: arrowPosition
219
+ };
170
220
  }
171
221
  exports["default"] = calculateComponentAbsolutePosition;
@@ -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
@@ -1,5 +0,0 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.getTreeItemUniqId = void 0;
4
- var getTreeItemUniqId = function (item, index, parentId) { return (parentId || '0') + '.' + String(item.id || index); };
5
- exports.getTreeItemUniqId = getTreeItemUniqId;