@michalrakus/x-react-web-lib 1.21.0 → 1.23.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/XFormHeader.d.ts +3 -0
- package/XFormHeader.js +5 -0
- package/XMultiSelect.d.ts +3 -0
- package/XMultiSelect.js +5 -0
- package/XMultiSelectBase.d.ts +3 -0
- package/XMultiSelectBase.js +5 -0
- package/gulpfile.js +3 -0
- package/lib/administration/XBrowseMetaBrowse.d.ts +2 -2
- package/lib/administration/XBrowseMetaForm.d.ts +2 -2
- package/lib/administration/XParamBrowse.d.ts +2 -2
- package/lib/administration/XParamBrowse.js +1 -1
- package/lib/administration/XParamForm.d.ts +2 -2
- package/lib/administration/XParamForm.js +2 -0
- package/lib/administration/XUserBrowse.d.ts +2 -2
- package/lib/administration/XUserBrowse.js +1 -1
- package/lib/administration/XUserForm.d.ts +2 -2
- package/lib/administration/XUserForm.js +12 -9
- package/lib/components/SourceCodeLinkEntity.d.ts +2 -2
- package/lib/components/XAutoComplete.d.ts +2 -1
- package/lib/components/XAutoComplete.js +2 -2
- package/lib/components/XAutoCompleteBase.d.ts +5 -11
- package/lib/components/XAutoCompleteBase.js +28 -11
- package/lib/components/XAutoCompleteDT.d.ts +1 -1
- package/lib/components/XButton.d.ts +1 -1
- package/lib/components/XButtonIconMedium.d.ts +1 -1
- package/lib/components/XButtonIconNarrow.d.ts +1 -1
- package/lib/components/XButtonIconSmall.d.ts +1 -1
- package/lib/components/XCalendar.d.ts +16 -9
- package/lib/components/XCalendar.js +21 -2
- package/lib/components/XChangePasswordForm.d.ts +2 -2
- package/lib/components/XCheckboxDT.d.ts +2 -2
- package/lib/components/XDataTable.d.ts +2 -2
- package/lib/components/XDropdown.d.ts +2 -2
- package/lib/components/XDropdown.js +1 -1
- package/lib/components/XDropdownDT.d.ts +2 -2
- package/lib/components/XDropdownDTFilter.d.ts +2 -2
- package/lib/components/XDropdownForEntity.d.ts +2 -2
- package/lib/components/XDropdownForEntity.js +1 -1
- package/lib/components/XDropdownFormDTFilter.d.ts +2 -2
- package/lib/components/XEditBrowse.d.ts +2 -2
- package/lib/components/XEditColumnDialog.d.ts +2 -2
- package/lib/components/XEditor.d.ts +1 -1
- package/lib/components/XEditorBase.d.ts +1 -1
- package/lib/components/XEditorBase.js +1 -1
- package/lib/components/XFieldSelector.d.ts +2 -2
- package/lib/components/XFormComponent.d.ts +1 -0
- package/lib/components/XFormDataTable2.d.ts +1 -1
- package/lib/components/XFormFooter.d.ts +2 -2
- package/lib/components/XFormHeader.d.ts +4 -0
- package/lib/components/XFormHeader.js +11 -0
- package/lib/components/XFormNavigator3.d.ts +2 -2
- package/lib/components/XFormRowCol/XFormCol.d.ts +1 -1
- package/lib/components/XFormRowCol/XFormInlineRow.d.ts +1 -1
- package/lib/components/XFormRowCol/XFormRow.d.ts +1 -1
- package/lib/components/XFormRowCol/XFormRowCol.d.ts +1 -1
- package/lib/components/XFtsInput.d.ts +2 -2
- package/lib/components/XHolders.d.ts +3 -3
- package/lib/components/XInputDate.d.ts +2 -2
- package/lib/components/XInputDate.js +1 -1
- package/lib/components/XInputDateDT.d.ts +2 -2
- package/lib/components/XInputDateDT.js +1 -1
- package/lib/components/XInputDecimal.d.ts +1 -1
- package/lib/components/XInputDecimalBase.d.ts +2 -2
- package/lib/components/XInputDecimalDT.d.ts +2 -2
- package/lib/components/XInputDecimalDT.js +1 -1
- package/lib/components/XInputFileList.d.ts +2 -1
- package/lib/components/XInputInterval.d.ts +1 -1
- package/lib/components/XInputIntervalBase.d.ts +2 -2
- package/lib/components/XInputIntervalBase.js +1 -1
- package/lib/components/XInputIntervalDT.d.ts +2 -2
- package/lib/components/XInputText.d.ts +2 -2
- package/lib/components/XInputText.js +14 -3
- package/lib/components/XInputTextDT.d.ts +2 -2
- package/lib/components/XInputTextarea.d.ts +1 -1
- package/lib/components/XInputTextarea.js +13 -3
- package/lib/components/XInputTextareaBase.d.ts +3 -1
- package/lib/components/XInputTextareaBase.js +1 -1
- package/lib/components/XInputTextareaDT.d.ts +2 -2
- package/lib/components/XLazyDataTable/XExportRowsDialog.d.ts +12 -7
- package/lib/components/XLazyDataTable/XExportRowsDialog.js +79 -44
- package/lib/components/XLazyDataTable/XLazyDataTable.d.ts +2 -1
- package/lib/components/XLazyDataTable/XLazyDataTable.js +55 -24
- package/lib/components/XLazyDataTable/XMultilineSwitch.d.ts +2 -2
- package/lib/components/XLazyDataTable/XMultilineSwitch.js +1 -1
- package/lib/components/XLazyDataTable/XOcfDropdown.d.ts +2 -2
- package/lib/components/XLazyDataTable/XOcfDropdown.js +1 -0
- package/lib/components/XLoginDialog.d.ts +2 -2
- package/lib/components/XLoginForm.d.ts +2 -2
- package/lib/components/XMultiSelect.d.ts +25 -0
- package/lib/components/XMultiSelect.js +97 -0
- package/lib/components/XMultiSelectBase.d.ts +27 -0
- package/lib/components/XMultiSelectBase.js +145 -0
- package/lib/components/XSearchBrowseParams.d.ts +1 -1
- package/lib/components/XSearchButton.d.ts +1 -1
- package/lib/components/XSearchButtonDT.d.ts +2 -2
- package/lib/components/XSearchButtonOld.d.ts +1 -1
- package/lib/components/XToOneAssocButton.d.ts +2 -2
- package/lib/components/XToken.d.ts +1 -1
- package/lib/components/XUtils.d.ts +12 -3
- package/lib/components/XUtils.js +83 -31
- package/lib/components/locale/x-en.json +1 -0
- package/lib/serverApi/ExportImportParam.d.ts +28 -11
- package/lib/serverApi/ExportImportParam.js +11 -1
- package/lib/serverApi/XUtilsCommon.d.ts +1 -0
- package/lib/serverApi/XUtilsCommon.js +12 -0
- package/lib/serverApi/XUtilsConversions.d.ts +11 -5
- package/lib/serverApi/XUtilsConversions.js +95 -24
- package/lib/serverApi/XUtilsMetadataCommon.d.ts +4 -1
- package/lib/serverApi/XUtilsMetadataCommon.js +26 -3
- package/package.json +3 -3
|
@@ -27,7 +27,7 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
27
27
|
return ar;
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.convertValueBase = exports.convertValue = exports.convertObject = exports.AsUIType = exports.booleanAsUIText = exports.intervalAsUI = exports.intervalFromUI = exports.datetimeFormatUI = exports.dateFormatCalendar = exports.dateFormatUI = exports.timeFromModel = exports.datetimeAsUI = exports.dateAsUI = exports.dateFromUI = exports.dateFromModel = exports.numberFromModel = exports.numberAsUI = exports.intFromUI = exports.stringAsDB = exports.stringAsUI = exports.stringFromUI = void 0;
|
|
30
|
+
exports.convertValueBase = exports.convertValue = exports.convertObject = exports.AsUIType = exports.booleanAsUIText = exports.intervalAsUI = exports.intervalFromUI = exports.datetimeFormatUI = exports.dateFormatCalendar = exports.dateFormatUI = exports.timeFromModel = exports.datetimeAsUI = exports.dateAsUI = exports.dateFromUI = exports.dateFromModel = exports.XDateScale = exports.numberFromString = exports.numberFromModel = exports.numberAsUI = exports.intFromUI = exports.stringAsDB = exports.stringAsUI = exports.stringFromUI = void 0;
|
|
31
31
|
var XUtilsCommon_1 = require("./XUtilsCommon");
|
|
32
32
|
var XLocale_1 = require("../components/XLocale");
|
|
33
33
|
var XUtilsMetadataCommon_1 = require("./XUtilsMetadataCommon");
|
|
@@ -95,6 +95,23 @@ function numberFromModel(value) {
|
|
|
95
95
|
return numberValue;
|
|
96
96
|
}
|
|
97
97
|
exports.numberFromModel = numberFromModel;
|
|
98
|
+
// konvertuje hodnotu napr. 12.34
|
|
99
|
+
function numberFromString(valueString) {
|
|
100
|
+
var numberValue = parseFloat(valueString);
|
|
101
|
+
if (isNaN(numberValue)) {
|
|
102
|
+
numberValue = null;
|
|
103
|
+
}
|
|
104
|
+
return numberValue;
|
|
105
|
+
}
|
|
106
|
+
exports.numberFromString = numberFromString;
|
|
107
|
+
// upresnenie typu datumu - pouzivame typ number, lebo zneuzivame atribut scale v TypeORM na zadanie upresnenia
|
|
108
|
+
var XDateScale;
|
|
109
|
+
(function (XDateScale) {
|
|
110
|
+
XDateScale[XDateScale["Date"] = 1] = "Date";
|
|
111
|
+
XDateScale[XDateScale["Month"] = 2] = "Month";
|
|
112
|
+
XDateScale[XDateScale["Year"] = 3] = "Year"; // yyyy
|
|
113
|
+
})(XDateScale = exports.XDateScale || (exports.XDateScale = {}));
|
|
114
|
+
//export type XDateType = "month" | "year" | "date";
|
|
98
115
|
// v modeli na klientovi by mal byt vzdy Date, teraz je tam niekedy string (z json-u zo servera) a niekedy Date (z komponentu)
|
|
99
116
|
// provizorne zatial takato konverzia
|
|
100
117
|
function dateFromModel(value) {
|
|
@@ -108,9 +125,10 @@ function dateFromModel(value) {
|
|
|
108
125
|
return dateValue;
|
|
109
126
|
}
|
|
110
127
|
exports.dateFromModel = dateFromModel;
|
|
111
|
-
function dateFromUI(valueString) {
|
|
128
|
+
function dateFromUI(valueString, dateScale) {
|
|
129
|
+
if (dateScale === void 0) { dateScale = XDateScale.Date; }
|
|
112
130
|
// converts valueString (e.g. 21.2.2024) into Date
|
|
113
|
-
// if
|
|
131
|
+
// if valueString is invalid, returns undefined
|
|
114
132
|
var valueDate = undefined;
|
|
115
133
|
if (valueString === '') {
|
|
116
134
|
valueDate = null;
|
|
@@ -120,22 +138,46 @@ function dateFromUI(valueString) {
|
|
|
120
138
|
var day = void 0;
|
|
121
139
|
var month = null;
|
|
122
140
|
var year = null;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
141
|
+
if (dateScale === XDateScale.Date) {
|
|
142
|
+
// format "dd.mm.yyyy"
|
|
143
|
+
var posDot = valueString.indexOf('.');
|
|
144
|
+
if (posDot === -1) {
|
|
145
|
+
day = intFromUI(valueString);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
day = intFromUI(valueString.substring(0, posDot));
|
|
149
|
+
var rest = valueString.substring(posDot + 1);
|
|
150
|
+
var posDot2 = rest.indexOf('.');
|
|
151
|
+
if (posDot2 === -1) {
|
|
152
|
+
month = intFromUI(rest);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
month = intFromUI(rest.substring(0, posDot2));
|
|
156
|
+
year = intFromUI(rest.substring(posDot2 + 1));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
126
159
|
}
|
|
127
|
-
else {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
var
|
|
131
|
-
if (
|
|
132
|
-
month = intFromUI(
|
|
160
|
+
else if (dateScale === XDateScale.Month) {
|
|
161
|
+
// format "mm.yyyy"
|
|
162
|
+
day = 1;
|
|
163
|
+
var posDot = valueString.indexOf('.');
|
|
164
|
+
if (posDot === -1) {
|
|
165
|
+
month = intFromUI(valueString);
|
|
133
166
|
}
|
|
134
167
|
else {
|
|
135
|
-
month = intFromUI(
|
|
136
|
-
year = intFromUI(
|
|
168
|
+
month = intFromUI(valueString.substring(0, posDot));
|
|
169
|
+
year = intFromUI(valueString.substring(posDot + 1));
|
|
137
170
|
}
|
|
138
171
|
}
|
|
172
|
+
else if (dateScale === XDateScale.Year) {
|
|
173
|
+
// format "yyyy"
|
|
174
|
+
day = 1;
|
|
175
|
+
month = 1;
|
|
176
|
+
year = intFromUI(valueString);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
throw "Unimplemented dateScale = " + dateScale;
|
|
180
|
+
}
|
|
139
181
|
// doplnime mesiac a rok ak uzivatel nezadal (ak mame undefined, tak umyselne nedoplname)
|
|
140
182
|
if (month === null) {
|
|
141
183
|
month = XUtilsCommon_1.XUtilsCommon.today().getMonth() + 1; // o 1 mesiac viac (januar je 0)
|
|
@@ -163,9 +205,10 @@ function dateFromUI(valueString) {
|
|
|
163
205
|
return valueDate;
|
|
164
206
|
}
|
|
165
207
|
exports.dateFromUI = dateFromUI;
|
|
166
|
-
function dateAsUI(value) {
|
|
208
|
+
function dateAsUI(value, dateScale) {
|
|
209
|
+
if (dateScale === void 0) { dateScale = XDateScale.Date; }
|
|
167
210
|
if (value !== null) {
|
|
168
|
-
return (0, XUtilsCommon_1.dateFormat)(value, dateFormatUI());
|
|
211
|
+
return (0, XUtilsCommon_1.dateFormat)(value, dateFormatUI(dateScale));
|
|
169
212
|
}
|
|
170
213
|
else {
|
|
171
214
|
return "";
|
|
@@ -208,12 +251,40 @@ function timeFromModel(value) {
|
|
|
208
251
|
return timeValue;
|
|
209
252
|
}
|
|
210
253
|
exports.timeFromModel = timeFromModel;
|
|
211
|
-
function dateFormatUI() {
|
|
212
|
-
|
|
254
|
+
function dateFormatUI(dateScale) {
|
|
255
|
+
if (dateScale === void 0) { dateScale = XDateScale.Date; }
|
|
256
|
+
var format;
|
|
257
|
+
if (dateScale === XDateScale.Date) {
|
|
258
|
+
format = "dd.mm.yyyy";
|
|
259
|
+
}
|
|
260
|
+
else if (dateScale === XDateScale.Month) {
|
|
261
|
+
format = "mm.yyyy";
|
|
262
|
+
}
|
|
263
|
+
else if (dateScale === XDateScale.Year) {
|
|
264
|
+
format = "yyyy";
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
throw "Unimplemented dateScale = " + dateScale;
|
|
268
|
+
}
|
|
269
|
+
return format;
|
|
213
270
|
}
|
|
214
271
|
exports.dateFormatUI = dateFormatUI;
|
|
215
|
-
function dateFormatCalendar() {
|
|
216
|
-
|
|
272
|
+
function dateFormatCalendar(dateScale) {
|
|
273
|
+
if (dateScale === void 0) { dateScale = XDateScale.Date; }
|
|
274
|
+
var format;
|
|
275
|
+
if (dateScale === XDateScale.Date) {
|
|
276
|
+
format = "dd.mm.yy";
|
|
277
|
+
}
|
|
278
|
+
else if (dateScale === XDateScale.Month) {
|
|
279
|
+
format = "mm.yy";
|
|
280
|
+
}
|
|
281
|
+
else if (dateScale === XDateScale.Year) {
|
|
282
|
+
format = "yy";
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
throw "Unimplemented dateScale = " + dateScale;
|
|
286
|
+
}
|
|
287
|
+
return format;
|
|
217
288
|
}
|
|
218
289
|
exports.dateFormatCalendar = dateFormatCalendar;
|
|
219
290
|
function datetimeFormatUI() {
|
|
@@ -349,21 +420,21 @@ function convertValue(xField, value, fromModel, asUI) {
|
|
|
349
420
|
return convertValueBase(xField.type, xField.scale, value, fromModel, asUI);
|
|
350
421
|
}
|
|
351
422
|
exports.convertValue = convertValue;
|
|
352
|
-
function convertValueBase(fieldType,
|
|
423
|
+
function convertValueBase(fieldType, scale, value, fromModel, asUI) {
|
|
353
424
|
if (fieldType === "decimal") {
|
|
354
425
|
if (fromModel) {
|
|
355
426
|
value = numberFromModel(value);
|
|
356
427
|
}
|
|
357
428
|
if (asUI && asUI !== AsUIType.Excel) {
|
|
358
|
-
value = numberAsUI(value,
|
|
429
|
+
value = numberAsUI(value, scale);
|
|
359
430
|
}
|
|
360
431
|
}
|
|
361
432
|
else if (fieldType === "date") {
|
|
362
433
|
if (fromModel) {
|
|
363
434
|
value = dateFromModel(value);
|
|
364
435
|
}
|
|
365
|
-
if (asUI && asUI !== AsUIType.Excel) {
|
|
366
|
-
value = dateAsUI(value);
|
|
436
|
+
if (asUI && (asUI !== AsUIType.Excel || scale === XDateScale.Month || scale === XDateScale.Year)) {
|
|
437
|
+
value = dateAsUI(value, scale);
|
|
367
438
|
}
|
|
368
439
|
}
|
|
369
440
|
else if (fieldType === "datetime") {
|
|
@@ -13,9 +13,12 @@ export declare class XUtilsMetadataCommon {
|
|
|
13
13
|
static getXField(xEntity: XEntity, field: string): XField;
|
|
14
14
|
static getXFieldByPathBase(xEntity: XEntity, path: string): XField | undefined;
|
|
15
15
|
static getXFieldByPath(xEntity: XEntity, path: string): XField;
|
|
16
|
+
static hasPathToManyAssoc(xEntity: XEntity, path: string): boolean;
|
|
16
17
|
static getXFieldByPathStr(entity: string, path: string): XField;
|
|
17
18
|
static getXAssocBase(xEntity: XEntity, assocField: string): XAssoc | undefined;
|
|
18
|
-
static
|
|
19
|
+
static getXAssocToOneByPath(xEntity: XEntity, path: string): XAssoc;
|
|
20
|
+
static getXAssocToManyByPath(xEntity: XEntity, path: string): XAssoc;
|
|
21
|
+
static getXAssocByPath(xEntity: XEntity, path: string, relationTypeList?: XRelationType[]): XAssoc;
|
|
19
22
|
static getLastXAssocByPath(xEntity: XEntity, path: string): XAssoc;
|
|
20
23
|
static getXAssocToOne(xEntity: XEntity, assocField: string): XAssoc;
|
|
21
24
|
static getXAssocToMany(xEntity: XEntity, assocField: string): XAssoc;
|
|
@@ -91,21 +91,44 @@ var XUtilsMetadataCommon = /** @class */ (function () {
|
|
|
91
91
|
return XUtilsMetadataCommon.getXFieldByPath(xAssocEntity, restPath);
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
|
+
// returns true if path contains some toMany assoc
|
|
95
|
+
XUtilsMetadataCommon.hasPathToManyAssoc = function (xEntity, path) {
|
|
96
|
+
var _a = __read(XUtilsCommon_1.XUtilsCommon.getFieldAndRestPath(path), 2), field = _a[0], restPath = _a[1];
|
|
97
|
+
if (restPath === null) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
var xAssoc = XUtilsMetadataCommon.getXAssoc(xEntity, field);
|
|
102
|
+
if (xAssoc.relationType === "one-to-many" || xAssoc.relationType === "many-to-many") {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
var xAssocEntity = XUtilsMetadataCommon.getXEntity(xAssoc.entityName);
|
|
107
|
+
return XUtilsMetadataCommon.hasPathToManyAssoc(xAssocEntity, restPath);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
94
111
|
XUtilsMetadataCommon.getXFieldByPathStr = function (entity, path) {
|
|
95
112
|
return XUtilsMetadataCommon.getXFieldByPath(XUtilsMetadataCommon.getXEntity(entity), path);
|
|
96
113
|
};
|
|
97
114
|
XUtilsMetadataCommon.getXAssocBase = function (xEntity, assocField) {
|
|
98
115
|
return xEntity.assocMap[assocField];
|
|
99
116
|
};
|
|
100
|
-
XUtilsMetadataCommon.
|
|
117
|
+
XUtilsMetadataCommon.getXAssocToOneByPath = function (xEntity, path) {
|
|
118
|
+
return XUtilsMetadataCommon.getXAssocByPath(xEntity, path, ["many-to-one", "one-to-one"]);
|
|
119
|
+
};
|
|
120
|
+
XUtilsMetadataCommon.getXAssocToManyByPath = function (xEntity, path) {
|
|
121
|
+
return XUtilsMetadataCommon.getXAssocByPath(xEntity, path, ["one-to-many", "many-to-many"]);
|
|
122
|
+
};
|
|
123
|
+
XUtilsMetadataCommon.getXAssocByPath = function (xEntity, path, relationTypeList) {
|
|
101
124
|
var _a = __read(XUtilsCommon_1.XUtilsCommon.getFieldAndRestPath(path), 2), field = _a[0], restPath = _a[1];
|
|
102
125
|
if (restPath === null) {
|
|
103
126
|
return XUtilsMetadataCommon.getXAssoc(xEntity, field);
|
|
104
127
|
}
|
|
105
128
|
else {
|
|
106
|
-
var xAssoc = XUtilsMetadataCommon.getXAssoc(xEntity, field);
|
|
129
|
+
var xAssoc = XUtilsMetadataCommon.getXAssoc(xEntity, field, relationTypeList);
|
|
107
130
|
var xAssocEntity = XUtilsMetadataCommon.getXEntity(xAssoc.entityName);
|
|
108
|
-
return XUtilsMetadataCommon.getXAssocByPath(xAssocEntity, restPath);
|
|
131
|
+
return XUtilsMetadataCommon.getXAssocByPath(xAssocEntity, restPath, relationTypeList);
|
|
109
132
|
}
|
|
110
133
|
};
|
|
111
134
|
// for path assoc1.assoc2.field returns assoc2 (last assoc before field)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@michalrakus/x-react-web-lib",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.23.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rimraf lib",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"primeflex": "^3.3.1",
|
|
42
|
-
"primeicons": "^
|
|
43
|
-
"primereact": "~10.
|
|
42
|
+
"primeicons": "^7.0.0",
|
|
43
|
+
"primereact": "~10.6.5",
|
|
44
44
|
"quill": "^1.3.7",
|
|
45
45
|
"react": "^18.2.0",
|
|
46
46
|
"react-dom": "^18.2.0",
|