kui-utils 0.0.23 → 0.0.25
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/cjs/index.js +114 -5
- package/cjs/index.js.map +1 -1
- package/index.d.ts +10 -5
- package/index.js +110 -7
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DependencyList } from 'react';
|
|
3
|
+
import { Loader as Loader$1 } from 'kui-utils';
|
|
3
4
|
|
|
4
5
|
declare function useForkRef<Instance>(...refs: Array<React.Ref<Instance> | undefined>): React.RefCallback<Instance> | null;
|
|
5
6
|
|
|
@@ -127,10 +128,7 @@ declare class MultistepForm<T extends object, U extends readonly string[] = []>
|
|
|
127
128
|
updateFormFields: (fields: Partial<T>) => void;
|
|
128
129
|
replaceFieldInArray: <V>(fieldName: keyof T, newValue: V, index: number) => void;
|
|
129
130
|
addValueToField: (valueName: string, value: any, fieldName?: string | undefined) => void;
|
|
130
|
-
getNestedField: (fieldName?: string | undefined) =>
|
|
131
|
-
path: Partial<T>;
|
|
132
|
-
fields: Partial<T>;
|
|
133
|
-
};
|
|
131
|
+
getNestedField: (fieldName?: string | undefined) => Partial<T>;
|
|
134
132
|
nextStep: () => void;
|
|
135
133
|
prevStep: () => void;
|
|
136
134
|
setStage: (stage: Values<U>) => void;
|
|
@@ -155,6 +153,13 @@ declare const toNumber: (value?: string | number | null | undefined) => number |
|
|
|
155
153
|
|
|
156
154
|
declare const updateQueryParams: (newLink: string) => void;
|
|
157
155
|
|
|
156
|
+
declare function addToIndexDBWithQueue(db: any, storeName: string, data: any, loader: Loader$1): void;
|
|
157
|
+
declare const readFromIndexDB: (db: any, name: string, loader: Loader$1) => Promise<any>;
|
|
158
|
+
declare const initIndexDB: (dbName: string, onupgradeneeded: (db: any) => void, loader: Loader$1, setIndexDB: (db: any) => void) => void;
|
|
159
|
+
declare const addIndexDBStore: (db: any, name: string) => void;
|
|
160
|
+
declare const clearIndexStore: (db: any, name: string) => void;
|
|
161
|
+
declare const clearIndexStores: (db: any, stores: string[]) => void;
|
|
162
|
+
|
|
158
163
|
declare type CookieOptions = {
|
|
159
164
|
path?: string;
|
|
160
165
|
"max-age"?: number;
|
|
@@ -211,4 +216,4 @@ declare class KUIUtilsSettings {
|
|
|
211
216
|
}
|
|
212
217
|
declare const kuiUtilsSettings: KUIUtilsSettings;
|
|
213
218
|
|
|
214
|
-
export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, ObjectType, PaginationRes, Paginator, PhoneParams, ResHandlerParams, SortOrder, SortingFilter, Values, accountRegExp, addLeadZero, addToArrayByCondition, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearNotValidFields, copyInfo, corrAccountRegExp, _default as countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
|
|
219
|
+
export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, ObjectType, PaginationRes, Paginator, PhoneParams, ResHandlerParams, SortOrder, SortingFilter, Values, accountRegExp, addIndexDBStore, addLeadZero, addToArrayByCondition, addToIndexDBWithQueue, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearIndexStore, clearIndexStores, clearNotValidFields, copyInfo, corrAccountRegExp, _default as countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, initIndexDB, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, readFromIndexDB, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
|
package/index.js
CHANGED
|
@@ -2,7 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
import { useState, useMemo, useEffect } from 'react';
|
|
3
3
|
import _ from 'lodash';
|
|
4
4
|
import { useLocation } from 'react-router-dom';
|
|
5
|
-
import { makeAutoObservable } from 'mobx';
|
|
5
|
+
import { isObservable, toJS, makeAutoObservable } from 'mobx';
|
|
6
|
+
import { DateTime } from 'luxon';
|
|
6
7
|
|
|
7
8
|
function setRef(ref, value) {
|
|
8
9
|
if (typeof ref === "function") {
|
|
@@ -2018,6 +2019,110 @@ var updateQueryParams = function (newLink) {
|
|
|
2018
2019
|
window.history.pushState({ route: route }, "", route);
|
|
2019
2020
|
};
|
|
2020
2021
|
|
|
2022
|
+
function cleanObjectForIndexDB(value) {
|
|
2023
|
+
if (typeof value === "undefined")
|
|
2024
|
+
return null;
|
|
2025
|
+
if (value instanceof File)
|
|
2026
|
+
return value;
|
|
2027
|
+
if (value instanceof DateTime)
|
|
2028
|
+
return value.toISO();
|
|
2029
|
+
if (isObservable(value)) {
|
|
2030
|
+
return cleanObjectForIndexDB(toJS(value));
|
|
2031
|
+
}
|
|
2032
|
+
if (Array.isArray(value)) {
|
|
2033
|
+
return value.map(function (item) { return cleanObjectForIndexDB(item); });
|
|
2034
|
+
}
|
|
2035
|
+
if (value !== null && typeof value === "object") {
|
|
2036
|
+
var plainObject = {};
|
|
2037
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
2038
|
+
for (var key in value) {
|
|
2039
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
2040
|
+
if (value.hasOwnProperty(key)) {
|
|
2041
|
+
var objectValue = value[key];
|
|
2042
|
+
if (typeof objectValue !== "function" && objectValue !== undefined) {
|
|
2043
|
+
plainObject[key] = cleanObjectForIndexDB(objectValue);
|
|
2044
|
+
}
|
|
2045
|
+
}
|
|
2046
|
+
}
|
|
2047
|
+
return plainObject;
|
|
2048
|
+
}
|
|
2049
|
+
return value;
|
|
2050
|
+
}
|
|
2051
|
+
var transactionQueue = Promise.resolve();
|
|
2052
|
+
function addToIndexDBWithQueue(db, storeName, data, loader) {
|
|
2053
|
+
transactionQueue = transactionQueue
|
|
2054
|
+
.then(function () {
|
|
2055
|
+
return new Promise(function (resolve, reject) {
|
|
2056
|
+
if (db && db.objectStoreNames.contains(storeName) && data) {
|
|
2057
|
+
var transaction = db.transaction(storeName, "readwrite");
|
|
2058
|
+
var store = transaction.objectStore(storeName);
|
|
2059
|
+
// eslint-disable-next-line no-param-reassign
|
|
2060
|
+
data.id = 1;
|
|
2061
|
+
var formattedData = cleanObjectForIndexDB(data);
|
|
2062
|
+
var request_1 = store.put(formattedData);
|
|
2063
|
+
request_1.onsuccess = function () {
|
|
2064
|
+
resolve(request_1);
|
|
2065
|
+
};
|
|
2066
|
+
request_1.onerror = function () {
|
|
2067
|
+
loader.setError("Не удалось сохранить данные в локальное хранилище");
|
|
2068
|
+
reject();
|
|
2069
|
+
};
|
|
2070
|
+
}
|
|
2071
|
+
});
|
|
2072
|
+
})
|
|
2073
|
+
.catch(function (error) {
|
|
2074
|
+
console.error("Ошибка в очереди транзакций:", error);
|
|
2075
|
+
});
|
|
2076
|
+
}
|
|
2077
|
+
var readFromIndexDB = function (db, name, loader) { return __awaiter(void 0, void 0, void 0, function () {
|
|
2078
|
+
var transaction, request_2;
|
|
2079
|
+
return __generator(this, function (_a) {
|
|
2080
|
+
if (db.objectStoreNames.contains(name)) {
|
|
2081
|
+
transaction = db.transaction(name, "readonly").objectStore(name);
|
|
2082
|
+
request_2 = transaction.getAll();
|
|
2083
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
2084
|
+
request_2.onerror = function () {
|
|
2085
|
+
reject();
|
|
2086
|
+
loader.setError("Не удалось сохранить данные в локальное хранилище");
|
|
2087
|
+
};
|
|
2088
|
+
request_2.onsuccess = function () {
|
|
2089
|
+
var _a;
|
|
2090
|
+
resolve((_a = request_2.result) === null || _a === void 0 ? void 0 : _a[0]);
|
|
2091
|
+
};
|
|
2092
|
+
})];
|
|
2093
|
+
}
|
|
2094
|
+
return [2 /*return*/, null];
|
|
2095
|
+
});
|
|
2096
|
+
}); };
|
|
2097
|
+
var initIndexDB = function (dbName, onupgradeneeded, loader, setIndexDB) {
|
|
2098
|
+
var dbRequest = indexedDB.open(dbName, 1);
|
|
2099
|
+
dbRequest.onerror = function () {
|
|
2100
|
+
loader.setError("Ошибка при открытии хранилища на устройстве. Данные не будут сохраняться локально");
|
|
2101
|
+
};
|
|
2102
|
+
dbRequest.onsuccess = function () {
|
|
2103
|
+
var db = dbRequest.result;
|
|
2104
|
+
setIndexDB(db);
|
|
2105
|
+
};
|
|
2106
|
+
dbRequest.onupgradeneeded = function () { return onupgradeneeded(dbRequest.result); };
|
|
2107
|
+
};
|
|
2108
|
+
var addIndexDBStore = function (db, name) {
|
|
2109
|
+
if (db && !db.objectStoreNames.contains(name)) {
|
|
2110
|
+
db.createObjectStore(name, { keyPath: "id" });
|
|
2111
|
+
}
|
|
2112
|
+
};
|
|
2113
|
+
var clearIndexStore = function (db, name) {
|
|
2114
|
+
if (db) {
|
|
2115
|
+
var transaction = db.transaction(name, "readwrite");
|
|
2116
|
+
var objectStore = transaction.objectStore(name);
|
|
2117
|
+
objectStore.clear();
|
|
2118
|
+
}
|
|
2119
|
+
};
|
|
2120
|
+
var clearIndexStores = function (db, stores) {
|
|
2121
|
+
Array.from(stores).forEach(function (name) {
|
|
2122
|
+
clearIndexStore(db, name);
|
|
2123
|
+
});
|
|
2124
|
+
};
|
|
2125
|
+
|
|
2021
2126
|
function setCookie(name, value, options) {
|
|
2022
2127
|
if (options === void 0) { options = {}; }
|
|
2023
2128
|
var cookieOptions = __assign({ path: "/" }, options);
|
|
@@ -2238,9 +2343,8 @@ var MultistepForm = /** @class */ (function () {
|
|
|
2238
2343
|
this.addValueToField = function (valueName, value, fieldName) {
|
|
2239
2344
|
if (!_this.fields)
|
|
2240
2345
|
_this.fields = {};
|
|
2241
|
-
var
|
|
2346
|
+
var path = _this.getNestedField(fieldName);
|
|
2242
2347
|
path[valueName] = value;
|
|
2243
|
-
_this.fields = fields;
|
|
2244
2348
|
};
|
|
2245
2349
|
this.getNestedField = function (fieldName) {
|
|
2246
2350
|
if (!_this.fields)
|
|
@@ -2252,12 +2356,11 @@ var MultistepForm = /** @class */ (function () {
|
|
|
2252
2356
|
// @ts-ignore
|
|
2253
2357
|
_this.fields[fieldParts[0]] = [];
|
|
2254
2358
|
}
|
|
2255
|
-
var
|
|
2256
|
-
var path = fields;
|
|
2359
|
+
var path = _this.fields;
|
|
2257
2360
|
fieldParts === null || fieldParts === void 0 ? void 0 : fieldParts.forEach(function (part) {
|
|
2258
2361
|
path = path[part];
|
|
2259
2362
|
});
|
|
2260
|
-
return
|
|
2363
|
+
return path;
|
|
2261
2364
|
};
|
|
2262
2365
|
this.nextStep = function () {
|
|
2263
2366
|
_this.step += 1;
|
|
@@ -2337,5 +2440,5 @@ var simplePasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{10,
|
|
|
2337
2440
|
var mediumPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{12,}$/;
|
|
2338
2441
|
var strongPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{14,}$/;
|
|
2339
2442
|
|
|
2340
|
-
export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, Paginator, SortingFilter, accountRegExp, addLeadZero, addToArrayByCondition, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearNotValidFields, copyInfo, corrAccountRegExp, countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
|
|
2443
|
+
export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, Paginator, SortingFilter, accountRegExp, addIndexDBStore, addLeadZero, addToArrayByCondition, addToIndexDBWithQueue, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearIndexStore, clearIndexStores, clearNotValidFields, copyInfo, corrAccountRegExp, countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, initIndexDB, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, readFromIndexDB, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
|
|
2341
2444
|
//# sourceMappingURL=index.js.map
|