@steroidsjs/core 3.0.52 → 3.0.53
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 +32 -8
- package/hooks/useList.d.ts +1 -0
- package/hooks/useList.js +2 -1
- package/package.json +1 -1
- package/ui/form/DropDownField/DropDownField.d.ts +2 -1
- package/ui/form/DropDownField/DropDownField.js +14 -6
- package/ui/form/FieldList/FieldList.js +25 -3
- package/ui/list/Grid/Grid.js +4 -2
- package/ui/nav/Router/Router.js +3 -1
package/docs-autogen-result.json
CHANGED
|
@@ -4143,6 +4143,14 @@
|
|
|
4143
4143
|
"required": true,
|
|
4144
4144
|
"type": "Model",
|
|
4145
4145
|
"example": null
|
|
4146
|
+
},
|
|
4147
|
+
{
|
|
4148
|
+
"name": "sort",
|
|
4149
|
+
"decorators": [],
|
|
4150
|
+
"description": "",
|
|
4151
|
+
"required": false,
|
|
4152
|
+
"type": "string",
|
|
4153
|
+
"example": null
|
|
4146
4154
|
}
|
|
4147
4155
|
],
|
|
4148
4156
|
"methods": [
|
|
@@ -19451,6 +19459,14 @@
|
|
|
19451
19459
|
"type": "boolean | IAutoCompleteConfig",
|
|
19452
19460
|
"example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}"
|
|
19453
19461
|
},
|
|
19462
|
+
{
|
|
19463
|
+
"name": "autoCompleteInputForwardedRef",
|
|
19464
|
+
"decorators": [],
|
|
19465
|
+
"description": "",
|
|
19466
|
+
"required": true,
|
|
19467
|
+
"type": "MutableRefObject",
|
|
19468
|
+
"example": null
|
|
19469
|
+
},
|
|
19454
19470
|
{
|
|
19455
19471
|
"name": "autoCompleteInputRef",
|
|
19456
19472
|
"decorators": [],
|
|
@@ -19523,14 +19539,6 @@
|
|
|
19523
19539
|
"type": "string",
|
|
19524
19540
|
"example": null
|
|
19525
19541
|
},
|
|
19526
|
-
{
|
|
19527
|
-
"name": "forwardedInputRef",
|
|
19528
|
-
"decorators": [],
|
|
19529
|
-
"description": "",
|
|
19530
|
-
"required": true,
|
|
19531
|
-
"type": "MutableRefObject",
|
|
19532
|
-
"example": null
|
|
19533
|
-
},
|
|
19534
19542
|
{
|
|
19535
19543
|
"name": "forwardedRef",
|
|
19536
19544
|
"decorators": [],
|
|
@@ -19579,6 +19587,14 @@
|
|
|
19579
19587
|
"type": "any",
|
|
19580
19588
|
"example": null
|
|
19581
19589
|
},
|
|
19590
|
+
{
|
|
19591
|
+
"name": "inputRef",
|
|
19592
|
+
"decorators": [],
|
|
19593
|
+
"description": "",
|
|
19594
|
+
"required": true,
|
|
19595
|
+
"type": "MutableRefObject",
|
|
19596
|
+
"example": null
|
|
19597
|
+
},
|
|
19582
19598
|
{
|
|
19583
19599
|
"name": "inputValue",
|
|
19584
19600
|
"decorators": [],
|
|
@@ -36533,6 +36549,14 @@
|
|
|
36533
36549
|
"required": true,
|
|
36534
36550
|
"type": "Model",
|
|
36535
36551
|
"example": null
|
|
36552
|
+
},
|
|
36553
|
+
{
|
|
36554
|
+
"name": "sort",
|
|
36555
|
+
"decorators": [],
|
|
36556
|
+
"description": "",
|
|
36557
|
+
"required": false,
|
|
36558
|
+
"type": "string",
|
|
36559
|
+
"example": null
|
|
36536
36560
|
}
|
|
36537
36561
|
],
|
|
36538
36562
|
"methods": [
|
package/hooks/useList.d.ts
CHANGED
package/hooks/useList.js
CHANGED
|
@@ -310,7 +310,8 @@ function useList(config) {
|
|
|
310
310
|
renderSearchForm: renderSearchForm,
|
|
311
311
|
renderInfiniteScroll: renderInfiniteScroll,
|
|
312
312
|
onFetch: onFetch,
|
|
313
|
-
onSort: onSort
|
|
313
|
+
onSort: onSort,
|
|
314
|
+
sort: formValues === null || formValues === void 0 ? void 0 : formValues.sort
|
|
314
315
|
};
|
|
315
316
|
}
|
|
316
317
|
exports["default"] = useList;
|
package/package.json
CHANGED
|
@@ -165,7 +165,8 @@ export interface IDropDownFieldViewProps extends IDropDownFieldProps {
|
|
|
165
165
|
hoveredId: PrimaryKey | any;
|
|
166
166
|
selectedIds: (PrimaryKey | any)[];
|
|
167
167
|
forwardedRef: any;
|
|
168
|
-
|
|
168
|
+
autoCompleteInputForwardedRef: MutableRefObject<HTMLInputElement>;
|
|
169
|
+
inputRef: MutableRefObject<HTMLInputElement>;
|
|
169
170
|
searchInputProps: {
|
|
170
171
|
type: string;
|
|
171
172
|
name: string;
|
|
@@ -87,7 +87,8 @@ function DropDownField(props) {
|
|
|
87
87
|
var components = (0, hooks_1.useComponents)();
|
|
88
88
|
// Query state
|
|
89
89
|
var _a = (0, react_1.useState)(''), query = _a[0], setQuery = _a[1];
|
|
90
|
-
var
|
|
90
|
+
var autoCompleteInputForwardedRef = (0, react_1.useRef)(null);
|
|
91
|
+
var inputRef = (0, react_1.useRef)(null);
|
|
91
92
|
var hasGroup = !!props.groupAttribute;
|
|
92
93
|
var _b = react_1["default"].useState([]), selectedAccordionItems = _b[0], setSelectedAccordionItems = _b[1];
|
|
93
94
|
var normalizedItemToSelectAll = react_1["default"].useMemo(function () { return normalizeItemToSelectAll(props.itemToSelectAll); }, [props.itemToSelectAll]);
|
|
@@ -125,7 +126,7 @@ function DropDownField(props) {
|
|
|
125
126
|
items: items,
|
|
126
127
|
sourceItems: sourceItems,
|
|
127
128
|
inputValue: props.input.value,
|
|
128
|
-
autoCompleteInputRef:
|
|
129
|
+
autoCompleteInputRef: autoCompleteInputForwardedRef
|
|
129
130
|
}), isOpened = _d.isOpened, setIsOpened = _d.setIsOpened, setIsFocused = _d.setIsFocused, hoveredId = _d.hoveredId, setHoveredId = _d.setHoveredId, selectedIds = _d.selectedIds, setSelectedIds = _d.setSelectedIds, selectedItems = _d.selectedItems, setSelectedAll = _d.setSelectedAll, isSelectedAll = _d.isSelectedAll;
|
|
130
131
|
var onOpen = (0, react_1.useCallback)(function () {
|
|
131
132
|
setQuery('');
|
|
@@ -199,6 +200,13 @@ function DropDownField(props) {
|
|
|
199
200
|
onReset();
|
|
200
201
|
}
|
|
201
202
|
}, [onReset, prevInputValue, props.input.value, selectedIds.length]);
|
|
203
|
+
// Add required validation
|
|
204
|
+
(0, react_1.useEffect)(function () {
|
|
205
|
+
var _a;
|
|
206
|
+
var defaultValidity = __('Required Field');
|
|
207
|
+
var errorMessage = props.required && !selectedIds.length ? defaultValidity : '';
|
|
208
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.setCustomValidity(errorMessage);
|
|
209
|
+
}, [props.required, selectedIds.length]);
|
|
202
210
|
var renderItemView = function (item, type, src) { return components.ui.renderView(props.itemView || 'form.DropDownFieldItemView', {
|
|
203
211
|
item: __assign(__assign({}, item), { contentSrc: src, contentType: type }),
|
|
204
212
|
selectedIds: selectedIds,
|
|
@@ -216,7 +224,7 @@ function DropDownField(props) {
|
|
|
216
224
|
isItemToSelectAll: item.id === (normalizedItemToSelectAll === null || normalizedItemToSelectAll === void 0 ? void 0 : normalizedItemToSelectAll.id),
|
|
217
225
|
isSelectedAll: isSelectedAll
|
|
218
226
|
}); };
|
|
219
|
-
var renderItem = function (item) {
|
|
227
|
+
var renderItem = (0, react_1.useCallback)(function (item) {
|
|
220
228
|
if (hasGroup && Array.isArray(item[props.groupAttribute])) {
|
|
221
229
|
return renderItemView(item, 'group', item[props.groupAttribute]);
|
|
222
230
|
}
|
|
@@ -227,14 +235,14 @@ function DropDownField(props) {
|
|
|
227
235
|
return renderItemView(item, props.itemsContent.type, props.itemsContent.src);
|
|
228
236
|
}
|
|
229
237
|
return renderItemView(item, 'default', null);
|
|
230
|
-
};
|
|
231
|
-
var viewProps = (0, react_1.useMemo)(function () { return (__assign({ isAutoComplete: isAutoComplete, items: items, hoveredId: hoveredId, selectedIds: selectedIds, forwardedRef: forwardedRef,
|
|
238
|
+
}, [hasGroup, props.groupAttribute, props.itemsContent, renderItemView]);
|
|
239
|
+
var viewProps = (0, react_1.useMemo)(function () { return (__assign({ isAutoComplete: isAutoComplete, items: items, hoveredId: hoveredId, selectedIds: selectedIds, forwardedRef: forwardedRef, inputRef: inputRef, autoCompleteInputForwardedRef: autoCompleteInputForwardedRef, searchInputProps: searchInputProps, isOpened: isOpened, isLoading: isLoading, onOpen: onOpen, selectedItems: selectedItems,
|
|
232
240
|
// TODO onFocus
|
|
233
241
|
// TODO onBlur
|
|
234
242
|
onReset: onReset, onClose: onClose, renderItem: renderItem, onItemRemove: onItemRemove, hasGroup: hasGroup, multiple: props.multiple, isSearchAutoFocus: props.isSearchAutoFocus, itemToSelectAll: normalizedItemToSelectAll, className: props.className, viewProps: props.viewProps, style: props.style, size: props.size, color: props.color, outline: props.outline, placeholder: props.placeholder, showReset: props.showReset, showEllipses: props.showEllipses, errors: props.errors, disabled: props.disabled }, dataProvider)); }, [isAutoComplete, items, hoveredId, selectedIds, searchInputProps, isOpened, isLoading, onOpen, selectedItems, onReset, onClose,
|
|
235
243
|
renderItem, onItemRemove, hasGroup, props.multiple, props.isSearchAutoFocus, props.className, props.viewProps, props.style, props.size,
|
|
236
244
|
props.color, props.outline, props.placeholder, props.showReset, props.showEllipses, props.errors, props.disabled,
|
|
237
|
-
normalizedItemToSelectAll, dataProvider]);
|
|
245
|
+
normalizedItemToSelectAll, dataProvider, inputRef, autoCompleteInputForwardedRef, forwardedRef]);
|
|
238
246
|
return components.ui.renderView(props.view || 'form.DropDownFieldView', viewProps);
|
|
239
247
|
}
|
|
240
248
|
DropDownField.defaultProps = {
|
|
@@ -33,6 +33,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
33
|
__setModuleDefault(result, mod);
|
|
34
34
|
return result;
|
|
35
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
|
+
};
|
|
36
45
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
46
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
47
|
};
|
|
@@ -40,6 +49,8 @@ exports.__esModule = true;
|
|
|
40
49
|
var react_1 = __importStar(require("react"));
|
|
41
50
|
var isBoolean_1 = __importDefault(require("lodash-es/isBoolean"));
|
|
42
51
|
var range_1 = __importDefault(require("lodash-es/range"));
|
|
52
|
+
var concat_1 = __importDefault(require("lodash-es/concat"));
|
|
53
|
+
var last_1 = __importDefault(require("lodash-es/last"));
|
|
43
54
|
var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
|
|
44
55
|
var get_1 = __importDefault(require("lodash-es/get"));
|
|
45
56
|
var react_use_1 = require("react-use");
|
|
@@ -57,15 +68,26 @@ function FieldList(props) {
|
|
|
57
68
|
var isWithReduxForm = (0, hooks_1.useSelector)(function (state) { return (0, get_1["default"])(state, ['form', context.formId]) || null; });
|
|
58
69
|
var dispatch = context.provider.useDispatch();
|
|
59
70
|
// Mapper for preserving the correct sequence of rows on the UI
|
|
60
|
-
var
|
|
71
|
+
var _b = (0, react_1.useState)((0, range_1["default"])(props.input.value) || []), storeToRowIndexMap = _b[0], setStoreToRowIndexMap = _b[1];
|
|
72
|
+
var addRowIndexes = (0, react_1.useCallback)(function (rowsCount) {
|
|
73
|
+
setStoreToRowIndexMap(function (prevMap) {
|
|
74
|
+
var lastIndex = !(0, isEmpty_1["default"])(prevMap) ? (0, last_1["default"])(prevMap) + 1 : 0;
|
|
75
|
+
return (0, concat_1["default"])(prevMap, (0, range_1["default"])(lastIndex, lastIndex + rowsCount));
|
|
76
|
+
});
|
|
77
|
+
}, []);
|
|
78
|
+
var removeRowIndex = (0, react_1.useCallback)(function (rowIndex) {
|
|
79
|
+
setStoreToRowIndexMap(function (prevMap) { return __spreadArray(__spreadArray([], prevMap.slice(0, rowIndex), true), prevMap.slice(rowIndex + 1), true); });
|
|
80
|
+
}, []);
|
|
61
81
|
// Add and Remove handlers
|
|
62
82
|
var onAdd = (0, react_1.useCallback)(function (rowsCount) {
|
|
63
83
|
if (rowsCount === void 0) { rowsCount = 1; }
|
|
84
|
+
addRowIndexes(rowsCount);
|
|
64
85
|
dispatch((0, form_1.formArrayAdd)(context.formId, props.input.name, rowsCount, props.initialValues));
|
|
65
|
-
}, [context.formId, dispatch, props.initialValues, props.input.name]);
|
|
86
|
+
}, [addRowIndexes, context.formId, dispatch, props.initialValues, props.input.name]);
|
|
66
87
|
var onRemove = (0, react_1.useCallback)(function (rowIndex) {
|
|
88
|
+
removeRowIndex(rowIndex);
|
|
67
89
|
dispatch((0, form_1.formArrayRemove)(context.formId, props.input.name, rowIndex));
|
|
68
|
-
}, [context.formId, dispatch, props.input.name]);
|
|
90
|
+
}, [context.formId, dispatch, props.input.name, removeRowIndex]);
|
|
69
91
|
(0, react_use_1.useMount)(function () {
|
|
70
92
|
// Add initial rows
|
|
71
93
|
if (!props.input.value) {
|
package/ui/list/Grid/Grid.js
CHANGED
|
@@ -70,7 +70,7 @@ function Grid(props) {
|
|
|
70
70
|
initialItems: props.initialItems,
|
|
71
71
|
initialTotal: props.initialTotal,
|
|
72
72
|
autoFetchOnFormChanges: props.autoFetchOnFormChanges
|
|
73
|
-
}), list = _a.list, model = _a.model, searchModel = _a.searchModel, paginationPosition = _a.paginationPosition, paginationSizePosition = _a.paginationSizePosition, layoutNamesPosition = _a.layoutNamesPosition, renderList = _a.renderList, renderLoading = _a.renderLoading, renderEmpty = _a.renderEmpty, renderPagination = _a.renderPagination, renderPaginationSize = _a.renderPaginationSize, renderLayoutNames = _a.renderLayoutNames, renderSearchForm = _a.renderSearchForm, renderInfiniteScroll = _a.renderInfiniteScroll, onFetch = _a.onFetch, onSort = _a.onSort;
|
|
73
|
+
}), list = _a.list, model = _a.model, searchModel = _a.searchModel, paginationPosition = _a.paginationPosition, paginationSizePosition = _a.paginationSizePosition, layoutNamesPosition = _a.layoutNamesPosition, renderList = _a.renderList, renderLoading = _a.renderLoading, renderEmpty = _a.renderEmpty, renderPagination = _a.renderPagination, renderPaginationSize = _a.renderPaginationSize, renderLayoutNames = _a.renderLayoutNames, renderSearchForm = _a.renderSearchForm, renderInfiniteScroll = _a.renderInfiniteScroll, onFetch = _a.onFetch, onSort = _a.onSort, sort = _a.sort;
|
|
74
74
|
var renderLabel = (0, react_1.useCallback)(function (column) {
|
|
75
75
|
if (column.headerView) {
|
|
76
76
|
var HeaderView = column.headerView;
|
|
@@ -136,6 +136,7 @@ function Grid(props) {
|
|
|
136
136
|
columns: columns,
|
|
137
137
|
onFetch: onFetch,
|
|
138
138
|
onSort: onSort,
|
|
139
|
+
sort: sort,
|
|
139
140
|
items: (list === null || list === void 0 ? void 0 : list.items) || [],
|
|
140
141
|
searchForm: props.searchForm,
|
|
141
142
|
listId: props.listId,
|
|
@@ -146,7 +147,8 @@ function Grid(props) {
|
|
|
146
147
|
primaryKey: props.primaryKey
|
|
147
148
|
}); }, [list, paginationPosition, paginationSizePosition, layoutNamesPosition, renderList, renderLoading, renderEmpty,
|
|
148
149
|
renderPagination, renderPaginationSize, renderLayoutNames, renderSearchForm, renderInfiniteScroll, renderValue, columns,
|
|
149
|
-
onFetch, onSort, props.searchForm, props.listId, props.isLoading, props.size, props.hasAlternatingColors, props.className,
|
|
150
|
+
onFetch, onSort, sort, props.searchForm, props.listId, props.isLoading, props.size, props.hasAlternatingColors, props.className,
|
|
151
|
+
props.primaryKey]);
|
|
150
152
|
return components.ui.renderView(props.view || 'list.GridView', viewProps);
|
|
151
153
|
}
|
|
152
154
|
exports["default"] = Grid;
|
package/ui/nav/Router/Router.js
CHANGED
|
@@ -69,7 +69,9 @@ var renderComponent = function (route, activePath, routeProps, alwaysAppendParen
|
|
|
69
69
|
return null;
|
|
70
70
|
}
|
|
71
71
|
// Check already redirected
|
|
72
|
-
var toPath = (
|
|
72
|
+
var toPath = (alwaysAppendParentRoutePath
|
|
73
|
+
? redirectPath
|
|
74
|
+
: (0, router_2.buildUrl)(redirectPath, (_b = routeProps === null || routeProps === void 0 ? void 0 : routeProps.match) === null || _b === void 0 ? void 0 : _b.params));
|
|
73
75
|
if (activePath !== toPath) {
|
|
74
76
|
return (react_1["default"].createElement(react_router_1.Redirect, __assign({}, routeProps, { to: toPath }, route.componentProps)));
|
|
75
77
|
}
|