@qoretechnologies/reqraft 0.1.0 → 0.2.1
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/__tests__/ mock.ts +44 -0
- package/__tests__/utils.ts +11 -0
- package/dist/components/menu/Menu.d.ts +31 -0
- package/dist/components/menu/Menu.d.ts.map +1 -0
- package/dist/components/menu/Menu.js +130 -0
- package/dist/components/menu/Menu.js.map +1 -0
- package/dist/contexts/FetchContext.d.ts +10 -0
- package/dist/contexts/FetchContext.d.ts.map +1 -0
- package/dist/contexts/FetchContext.js +63 -0
- package/dist/contexts/FetchContext.js.map +1 -0
- package/dist/contexts/ReqraftContext.d.ts +9 -0
- package/dist/contexts/ReqraftContext.d.ts.map +1 -0
- package/dist/contexts/ReqraftContext.js +11 -0
- package/dist/contexts/ReqraftContext.js.map +1 -0
- package/dist/contexts/StorageContext.d.ts +11 -0
- package/dist/contexts/StorageContext.d.ts.map +1 -0
- package/dist/contexts/StorageContext.js +17 -0
- package/dist/contexts/StorageContext.js.map +1 -0
- package/dist/hooks/useFetch/useFetch.d.ts +21 -0
- package/dist/hooks/useFetch/useFetch.d.ts.map +1 -0
- package/dist/hooks/useFetch/useFetch.js +106 -0
- package/dist/hooks/useFetch/useFetch.js.map +1 -0
- package/dist/hooks/useReqraftProperty.d.ts +3 -0
- package/dist/hooks/useReqraftProperty.d.ts.map +1 -0
- package/dist/hooks/useReqraftProperty.js +16 -0
- package/dist/hooks/useReqraftProperty.js.map +1 -0
- package/dist/hooks/useStorage/useStorage.d.ts +8 -0
- package/dist/hooks/useStorage/useStorage.d.ts.map +1 -0
- package/dist/hooks/useStorage/useStorage.js +22 -0
- package/dist/hooks/useStorage/useStorage.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/FetchProvider.d.ts +6 -0
- package/dist/providers/FetchProvider.d.ts.map +1 -0
- package/dist/providers/FetchProvider.js +112 -0
- package/dist/providers/FetchProvider.js.map +1 -0
- package/dist/providers/ReqraftProvider.d.ts +10 -0
- package/dist/providers/ReqraftProvider.d.ts.map +1 -0
- package/dist/providers/ReqraftProvider.js +15 -0
- package/dist/providers/ReqraftProvider.js.map +1 -0
- package/dist/providers/StorageProvider.d.ts +6 -0
- package/dist/providers/StorageProvider.d.ts.map +1 -0
- package/dist/providers/StorageProvider.js +55 -0
- package/dist/providers/StorageProvider.js.map +1 -0
- package/dist/utils/fetch.d.ts +22 -0
- package/dist/utils/fetch.d.ts.map +1 -0
- package/dist/utils/fetch.js +140 -0
- package/dist/utils/fetch.js.map +1 -0
- package/package.json +8 -3
- package/src/components/menu/Menu.stories.tsx +73 -0
- package/src/components/menu/Menu.tsx +244 -0
- package/src/contexts/FetchContext.tsx +25 -0
- package/src/contexts/ReqraftContext.tsx +16 -0
- package/src/contexts/StorageContext.tsx +33 -0
- package/src/hooks/useFetch/useFetch.stories.tsx +123 -0
- package/src/hooks/useFetch/useFetch.tsx +71 -0
- package/src/hooks/useReqraftProperty.ts +16 -0
- package/src/hooks/useStorage/useStorage.stories.tsx +84 -0
- package/src/hooks/useStorage/useStorage.ts +30 -0
- package/src/index.tsx +11 -0
- package/src/providers/FetchProvider.tsx +62 -0
- package/src/providers/ReqraftProvider.tsx +33 -0
- package/src/providers/StorageProvider.tsx +80 -0
- package/src/utils/fetch.ts +121 -0
- package/.eslintrc.js +0 -40
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/ISSUE_TEMPLATE/new-component.md +0 -20
- package/.github/ISSUE_TEMPLATE/visual-bug-report.md +0 -38
- package/.github/workflows/beta_release.yml +0 -108
- package/.github/workflows/tests.yml +0 -120
- package/.prettierrc +0 -7
- package/build-storybook.log +0 -28
- package/dist/components/form/fields/string/String.stories.d.ts +0 -10
- package/dist/components/form/fields/string/String.stories.d.ts.map +0 -1
- package/dist/components/form/fields/string/String.stories.js +0 -21
- package/dist/components/form/fields/string/String.stories.js.map +0 -1
- package/public/logo-dark.png +0 -0
- package/public/logo.png +0 -0
- package/public/q-symbol-small.png +0 -0
- package/public/q-symbol.png +0 -0
- package/public/qoreLogo-dark.png +0 -0
- package/public/qoreLogo.png +0 -0
- package/src/icons.json +0 -2295
- package/tests.json +0 -1
- package/tsconfig.prod.json +0 -26
package/dist/index.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FormStringField = void 0;
|
|
3
|
+
exports.query = exports.ReqraftQueryClient = exports.ReqraftProvider = exports.useFetch = exports.FormStringField = exports.ReqraftMenu = void 0;
|
|
4
|
+
var Menu_1 = require("./components/menu/Menu");
|
|
5
|
+
Object.defineProperty(exports, "ReqraftMenu", { enumerable: true, get: function () { return Menu_1.ReqraftMenu; } });
|
|
4
6
|
var String_1 = require("./components/form/fields/string/String");
|
|
5
7
|
Object.defineProperty(exports, "FormStringField", { enumerable: true, get: function () { return String_1.FormStringField; } });
|
|
8
|
+
var useFetch_1 = require("./hooks/useFetch/useFetch");
|
|
9
|
+
Object.defineProperty(exports, "useFetch", { enumerable: true, get: function () { return useFetch_1.useFetch; } });
|
|
10
|
+
var ReqraftProvider_1 = require("./providers/ReqraftProvider");
|
|
11
|
+
Object.defineProperty(exports, "ReqraftProvider", { enumerable: true, get: function () { return ReqraftProvider_1.ReqraftProvider; } });
|
|
12
|
+
Object.defineProperty(exports, "ReqraftQueryClient", { enumerable: true, get: function () { return ReqraftProvider_1.ReqraftQueryClient; } });
|
|
13
|
+
var fetch_1 = require("./utils/fetch");
|
|
14
|
+
Object.defineProperty(exports, "query", { enumerable: true, get: function () { return fetch_1.query; } });
|
|
6
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;AAAA,iEAAgG;AAAvF,yGAAA,eAAe,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;AAAA,+CAMgC;AAH9B,mGAAA,WAAW,OAAA;AAKb,iEAAgG;AAAvF,yGAAA,eAAe,OAAA;AACxB,sDAAuE;AAA5C,oGAAA,QAAQ,OAAA;AACnC,+DAAkF;AAAzE,kHAAA,eAAe,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAC5C,uCAAsC;AAA7B,8FAAA,KAAK,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface IReqraftFetchProviderProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
}
|
|
5
|
+
export declare const ReqraftFetchProvider: ({ children }: IReqraftFetchProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=FetchProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FetchProvider.d.ts","sourceRoot":"","sources":["../../src/providers/FetchProvider.tsx"],"names":[],"mappings":";AAOA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,iBAAkB,0BAA0B,4CAkD5E,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.ReqraftFetchProvider = void 0;
|
|
51
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
52
|
+
var react_query_1 = require("@tanstack/react-query");
|
|
53
|
+
var react_1 = require("react");
|
|
54
|
+
var react_use_1 = require("react-use");
|
|
55
|
+
var FetchContext_1 = require("../contexts/FetchContext");
|
|
56
|
+
var useReqraftProperty_1 = require("../hooks/useReqraftProperty");
|
|
57
|
+
var fetch_1 = require("../utils/fetch");
|
|
58
|
+
var ReqraftFetchProvider = function (_a) {
|
|
59
|
+
var children = _a.children;
|
|
60
|
+
var queryClient = (0, react_query_1.useQueryClient)();
|
|
61
|
+
var instance = (0, useReqraftProperty_1.useReqraftProperty)('instance');
|
|
62
|
+
var instanceToken = (0, useReqraftProperty_1.useReqraftProperty)('instanceToken');
|
|
63
|
+
var instanceUnauthorizedRedirect = (0, useReqraftProperty_1.useReqraftProperty)('instanceUnauthorizedRedirect');
|
|
64
|
+
var _b = (0, react_1.useState)(false), ready = _b[0], setReady = _b[1];
|
|
65
|
+
(0, react_use_1.useEffectOnce)(function () {
|
|
66
|
+
(0, fetch_1.setupFetch)({
|
|
67
|
+
instance: instance,
|
|
68
|
+
instanceToken: instanceToken,
|
|
69
|
+
unauthorizedRedirect: instanceUnauthorizedRedirect,
|
|
70
|
+
});
|
|
71
|
+
setReady(true);
|
|
72
|
+
});
|
|
73
|
+
if (!ready) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
function get(config) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
78
|
+
return __generator(this, function (_a) {
|
|
79
|
+
return [2 /*return*/, (0, fetch_1.query)(__assign(__assign({ queryClient: queryClient }, config), { method: 'GET' }))];
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function post(config) {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
85
|
+
return __generator(this, function (_a) {
|
|
86
|
+
return [2 /*return*/, (0, fetch_1.query)(__assign(__assign({ queryClient: queryClient }, config), { method: 'POST' }))];
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function put(config) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
92
|
+
return __generator(this, function (_a) {
|
|
93
|
+
return [2 /*return*/, (0, fetch_1.query)(__assign(__assign({ queryClient: queryClient }, config), { method: 'PUT' }))];
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function del(config) {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
99
|
+
return __generator(this, function (_a) {
|
|
100
|
+
return [2 /*return*/, (0, fetch_1.query)(__assign(__assign({ queryClient: queryClient }, config), { method: 'DELETE' }))];
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return ((0, jsx_runtime_1.jsx)(FetchContext_1.FetchContext.Provider, { value: {
|
|
105
|
+
get: get,
|
|
106
|
+
post: post,
|
|
107
|
+
put: put,
|
|
108
|
+
del: del,
|
|
109
|
+
}, children: children }));
|
|
110
|
+
};
|
|
111
|
+
exports.ReqraftFetchProvider = ReqraftFetchProvider;
|
|
112
|
+
//# sourceMappingURL=FetchProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FetchProvider.js","sourceRoot":"","sources":["../../src/providers/FetchProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAuD;AACvD,+BAAiC;AACjC,uCAA0C;AAC1C,yDAAoF;AACpF,kEAAiE;AACjE,wCAAmD;AAM5C,IAAM,oBAAoB,GAAG,UAAC,EAAwC;QAAtC,QAAQ,cAAA;IAC7C,IAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAC;IACrC,IAAM,QAAQ,GAAG,IAAA,uCAAkB,EAAC,UAAU,CAAC,CAAC;IAChD,IAAM,aAAa,GAAG,IAAA,uCAAkB,EAAC,eAAe,CAAC,CAAC;IAC1D,IAAM,4BAA4B,GAAG,IAAA,uCAAkB,EAAC,8BAA8B,CAAC,CAAC;IAElF,IAAA,KAAoB,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAlC,KAAK,QAAA,EAAE,QAAQ,QAAmB,CAAC;IAE1C,IAAA,yBAAa,EAAC;QACZ,IAAA,kBAAU,EAAC;YACT,QAAQ,UAAA;YACR,aAAa,eAAA;YACb,oBAAoB,EAAE,4BAA4B;SACnD,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAe,GAAG,CAAI,MAAkC;;;gBACtD,sBAAO,IAAA,aAAK,sBAAM,WAAW,aAAA,IAAK,MAAM,KAAE,MAAM,EAAE,KAAK,IAAG,EAAC;;;KAC5D;IAED,SAAe,IAAI,CAAI,MAAkC;;;gBACvD,sBAAO,IAAA,aAAK,sBAAM,WAAW,aAAA,IAAK,MAAM,KAAE,MAAM,EAAE,MAAM,IAAG,EAAC;;;KAC7D;IAED,SAAe,GAAG,CAAI,MAAkC;;;gBACtD,sBAAO,IAAA,aAAK,sBAAM,WAAW,aAAA,IAAK,MAAM,KAAE,MAAM,EAAE,KAAK,IAAG,EAAC;;;KAC5D;IAED,SAAe,GAAG,CAAI,MAAkC;;;gBACtD,sBAAO,IAAA,aAAK,sBAAM,WAAW,aAAA,IAAK,MAAM,KAAE,MAAM,EAAE,QAAQ,IAAG,EAAC;;;KAC/D;IAED,OAAO,CACL,uBAAC,2BAAY,CAAC,QAAQ,IACpB,KAAK,EAAE;YACL,GAAG,KAAA;YACH,IAAI,MAAA;YACJ,GAAG,KAAA;YACH,GAAG,KAAA;SACJ,YAEA,QAAQ,GACa,CACzB,CAAC;AACJ,CAAC,CAAC;AAlDW,QAAA,oBAAoB,wBAkD/B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { IReqraftContext } from '../contexts/ReqraftContext';
|
|
4
|
+
export declare const ReqraftQueryClient: QueryClient;
|
|
5
|
+
export interface IReqraftProviderProps extends IReqraftContext {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
reactQueryClient?: QueryClient;
|
|
8
|
+
}
|
|
9
|
+
export declare const ReqraftProvider: ({ appName, children, instance, instanceToken, instanceUnauthorizedRedirect, reactQueryClient, }: IReqraftProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=ReqraftProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReqraftProvider.d.ts","sourceRoot":"","sources":["../../src/providers/ReqraftProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,eAAe,EAAkB,MAAM,4BAA4B,CAAC;AAI7E,eAAO,MAAM,kBAAkB,aAAoB,CAAC;AAEpD,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,eAAO,MAAM,eAAe,oGAOzB,qBAAqB,4CAYvB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReqraftProvider = exports.ReqraftQueryClient = void 0;
|
|
4
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
var react_query_1 = require("@tanstack/react-query");
|
|
6
|
+
var ReqraftContext_1 = require("../contexts/ReqraftContext");
|
|
7
|
+
var FetchProvider_1 = require("./FetchProvider");
|
|
8
|
+
var StorageProvider_1 = require("./StorageProvider");
|
|
9
|
+
exports.ReqraftQueryClient = new react_query_1.QueryClient();
|
|
10
|
+
var ReqraftProvider = function (_a) {
|
|
11
|
+
var appName = _a.appName, children = _a.children, instance = _a.instance, instanceToken = _a.instanceToken, instanceUnauthorizedRedirect = _a.instanceUnauthorizedRedirect, reactQueryClient = _a.reactQueryClient;
|
|
12
|
+
return ((0, jsx_runtime_1.jsx)(ReqraftContext_1.ReqraftContext.Provider, { value: { appName: appName, instanceToken: instanceToken, instance: instance, instanceUnauthorizedRedirect: instanceUnauthorizedRedirect }, children: (0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: reactQueryClient || exports.ReqraftQueryClient, children: (0, jsx_runtime_1.jsx)(FetchProvider_1.ReqraftFetchProvider, { children: (0, jsx_runtime_1.jsx)(StorageProvider_1.ReqraftStorageProvider, { children: children }) }) }) }));
|
|
13
|
+
};
|
|
14
|
+
exports.ReqraftProvider = ReqraftProvider;
|
|
15
|
+
//# sourceMappingURL=ReqraftProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReqraftProvider.js","sourceRoot":"","sources":["../../src/providers/ReqraftProvider.tsx"],"names":[],"mappings":";;;;AAAA,qDAAyE;AAEzE,6DAA6E;AAC7E,iDAAuD;AACvD,qDAA2D;AAE9C,QAAA,kBAAkB,GAAG,IAAI,yBAAW,EAAE,CAAC;AAO7C,IAAM,eAAe,GAAG,UAAC,EAOR;QANtB,OAAO,aAAA,EACP,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,aAAa,mBAAA,EACb,4BAA4B,kCAAA,EAC5B,gBAAgB,sBAAA;IAEhB,OAAO,CACL,uBAAC,+BAAc,CAAC,QAAQ,IACtB,KAAK,EAAE,EAAE,OAAO,SAAA,EAAE,aAAa,eAAA,EAAE,QAAQ,UAAA,EAAE,4BAA4B,8BAAA,EAAE,YAEzE,uBAAC,iCAAmB,IAAC,MAAM,EAAE,gBAAgB,IAAI,0BAAkB,YACjE,uBAAC,oCAAoB,cACnB,uBAAC,wCAAsB,cAAE,QAAQ,GAA0B,GACtC,GACH,GACE,CAC3B,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,eAAe,mBAmB1B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface IReqraftStorageProviderProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
}
|
|
5
|
+
export declare const ReqraftStorageProvider: ({ children }: IReqraftStorageProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=StorageProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageProvider.d.ts","sourceRoot":"","sources":["../../src/providers/StorageProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAOvD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,sBAAsB,iBAAkB,4BAA4B,4CAmEhF,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReqraftStorageProvider = void 0;
|
|
4
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
var lodash_1 = require("lodash");
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var StorageContext_1 = require("../contexts/StorageContext");
|
|
8
|
+
var useFetch_1 = require("../hooks/useFetch/useFetch");
|
|
9
|
+
var useReqraftProperty_1 = require("../hooks/useReqraftProperty");
|
|
10
|
+
var ReqraftStorageProvider = function (_a) {
|
|
11
|
+
var children = _a.children;
|
|
12
|
+
var appName = (0, useReqraftProperty_1.useReqraftProperty)('appName');
|
|
13
|
+
var _b = (0, useFetch_1.useFetch)({
|
|
14
|
+
url: 'users/_current_/storage',
|
|
15
|
+
cache: false,
|
|
16
|
+
loadOnMount: true,
|
|
17
|
+
}), data = _b.data, loading = _b.loading;
|
|
18
|
+
var load = (0, useFetch_1.useFetch)({
|
|
19
|
+
url: 'users/_current_/',
|
|
20
|
+
method: 'PUT',
|
|
21
|
+
cache: false,
|
|
22
|
+
}).load;
|
|
23
|
+
var _c = (0, react_1.useState)(data), storage = _c[0], setStorage = _c[1];
|
|
24
|
+
(0, react_1.useEffect)(function () {
|
|
25
|
+
if (data) {
|
|
26
|
+
setStorage(data);
|
|
27
|
+
}
|
|
28
|
+
}, [data]);
|
|
29
|
+
var getStorage = function (path, defaultValue, includeAppPrefix) {
|
|
30
|
+
var _a;
|
|
31
|
+
if (includeAppPrefix === void 0) { includeAppPrefix = true; }
|
|
32
|
+
var _path = includeAppPrefix ? "".concat(appName, ".").concat(path) : path;
|
|
33
|
+
return (_a = (0, lodash_1.get)(storage, _path)) !== null && _a !== void 0 ? _a : defaultValue;
|
|
34
|
+
};
|
|
35
|
+
var updateStorage = function (path, value, includeAppPrefix) {
|
|
36
|
+
if (includeAppPrefix === void 0) { includeAppPrefix = true; }
|
|
37
|
+
var _path = includeAppPrefix ? "".concat(appName, ".").concat(path) : path;
|
|
38
|
+
var updatedStorage = (0, lodash_1.set)((0, lodash_1.cloneDeep)(storage), _path, value);
|
|
39
|
+
setStorage(updatedStorage);
|
|
40
|
+
load({ body: { storage: updatedStorage } });
|
|
41
|
+
};
|
|
42
|
+
var removeStorageValue = function (path, includeAppPrefix) {
|
|
43
|
+
if (includeAppPrefix === void 0) { includeAppPrefix = true; }
|
|
44
|
+
var _path = includeAppPrefix ? "".concat(appName, ".").concat(path) : path;
|
|
45
|
+
var updatedStorage = (0, lodash_1.set)((0, lodash_1.cloneDeep)(storage), _path, null);
|
|
46
|
+
setStorage(updatedStorage);
|
|
47
|
+
load({ body: { storage_path: _path } });
|
|
48
|
+
};
|
|
49
|
+
if (loading || !storage) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return ((0, jsx_runtime_1.jsx)(StorageContext_1.ReqraftStorageContext.Provider, { value: { storage: storage, getStorage: getStorage, updateStorage: updateStorage, removeStorageValue: removeStorageValue }, children: children }));
|
|
53
|
+
};
|
|
54
|
+
exports.ReqraftStorageProvider = ReqraftStorageProvider;
|
|
55
|
+
//# sourceMappingURL=StorageProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageProvider.js","sourceRoot":"","sources":["../../src/providers/StorageProvider.tsx"],"names":[],"mappings":";;;;AAAA,iCAA6C;AAC7C,+BAAuD;AAEvD,6DAAoF;AACpF,uDAAsD;AACtD,kEAAiE;AAO1D,IAAM,sBAAsB,GAAG,UAAC,EAA0C;QAAxC,QAAQ,cAAA;IAC/C,IAAM,OAAO,GAAG,IAAA,uCAAkB,EAAC,SAAS,CAAC,CAAC;IAExC,IAAA,KAAoB,IAAA,mBAAQ,EAAC;QACjC,GAAG,EAAE,yBAAyB;QAC9B,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,IAAI;KAClB,CAAC,EAJM,IAAI,UAAA,EAAE,OAAO,aAInB,CAAC;IAEK,IAAA,IAAI,GAAK,IAAA,mBAAQ,EAAC;QACxB,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;KACb,CAAC,KAJU,CAIT;IAEG,IAAA,KAAwB,IAAA,gBAAQ,EAAkB,IAAI,CAAC,EAAtD,OAAO,QAAA,EAAE,UAAU,QAAmC,CAAC;IAE9D,IAAA,iBAAS,EAAC;QACR,IAAI,IAAI,EAAE,CAAC;YACT,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAM,UAAU,GAAG,UACjB,IAAY,EACZ,YAAe,EACf,gBAAgC;;QAAhC,iCAAA,EAAA,uBAAgC;QAEhC,IAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAG,OAAO,cAAI,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,OAAO,MAAA,IAAA,YAAG,EAAC,OAAO,EAAE,KAAK,CAAC,mCAAI,YAAY,CAAC;IAC7C,CAAC,CAAC;IAEF,IAAM,aAAa,GAAG,UACpB,IAAY,EACZ,KAAQ,EACR,gBAAgC;QAAhC,iCAAA,EAAA,uBAAgC;QAEhC,IAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAG,OAAO,cAAI,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,IAAM,cAAc,GAAG,IAAA,YAAG,EAAC,IAAA,kBAAS,EAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAE7D,UAAU,CAAC,cAAc,CAAC,CAAC;QAE3B,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG,UAAU,IAAY,EAAE,gBAAgC;QAAhC,iCAAA,EAAA,uBAAgC;QACjF,IAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAG,OAAO,cAAI,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,IAAM,cAAc,GAAG,IAAA,YAAG,EAAC,IAAA,kBAAS,EAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5D,UAAU,CAAC,cAAc,CAAC,CAAC;QAE3B,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,uBAAC,sCAAqB,CAAC,QAAQ,IAC7B,KAAK,EAAE,EAAE,OAAO,SAAA,EAAE,UAAU,YAAA,EAAE,aAAa,eAAA,EAAE,kBAAkB,oBAAA,EAAE,YAEhE,QAAQ,GACsB,CAClC,CAAC;AACJ,CAAC,CAAC;AAnEW,QAAA,sBAAsB,0BAmEjC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
2
|
+
export interface IReqraftFetchConfig {
|
|
3
|
+
instance: string;
|
|
4
|
+
instanceToken: string;
|
|
5
|
+
unauthorizedRedirect?: (pathname: string) => string;
|
|
6
|
+
}
|
|
7
|
+
export interface IReqraftFetchResponse<T> {
|
|
8
|
+
data: T;
|
|
9
|
+
ok: boolean;
|
|
10
|
+
code?: number;
|
|
11
|
+
error?: any;
|
|
12
|
+
}
|
|
13
|
+
export declare const setupFetch: ({ instance, instanceToken, unauthorizedRedirect, }: IReqraftFetchConfig) => void;
|
|
14
|
+
export interface IReqraftQueryConfig {
|
|
15
|
+
url: string;
|
|
16
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
17
|
+
body?: Record<string | number, any>;
|
|
18
|
+
cache?: boolean;
|
|
19
|
+
queryClient?: QueryClient;
|
|
20
|
+
}
|
|
21
|
+
export declare function query<T>({ url, method, body, cache, queryClient, }: IReqraftQueryConfig): Promise<IReqraftFetchResponse<T>>;
|
|
22
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACrD;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAUD,eAAO,MAAM,UAAU,uDAIpB,mBAAmB,SAOrB,CAAC;AA6BF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAsB,KAAK,CAAC,CAAC,EAAE,EAC7B,GAAG,EACH,MAAc,EACd,IAAI,EACJ,KAAY,EACZ,WAAgC,GACjC,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CA0CzD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.query = exports.setupFetch = void 0;
|
|
40
|
+
var ReqraftProvider_1 = require("../providers/ReqraftProvider");
|
|
41
|
+
var fetchConfig = {
|
|
42
|
+
instance: window.location.origin + '/',
|
|
43
|
+
instanceToken: '',
|
|
44
|
+
unauthorizedRedirect: function (pathname) { return "/?next=".concat(pathname); },
|
|
45
|
+
};
|
|
46
|
+
var CACHE_EXPIRATION_TIME = 5 * 60 * 1000; // 5 minutes
|
|
47
|
+
var setupFetch = function (_a) {
|
|
48
|
+
var instance = _a.instance, instanceToken = _a.instanceToken, unauthorizedRedirect = _a.unauthorizedRedirect;
|
|
49
|
+
fetchConfig.instance = instance;
|
|
50
|
+
fetchConfig.instanceToken = instanceToken;
|
|
51
|
+
if (unauthorizedRedirect) {
|
|
52
|
+
fetchConfig.unauthorizedRedirect = unauthorizedRedirect;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.setupFetch = setupFetch;
|
|
56
|
+
function doFetchData(url_1) {
|
|
57
|
+
return __awaiter(this, arguments, void 0, function (url, method, body) {
|
|
58
|
+
if (method === void 0) { method = 'GET'; }
|
|
59
|
+
return __generator(this, function (_a) {
|
|
60
|
+
if (!fetchConfig.instanceToken) {
|
|
61
|
+
return [2 /*return*/, new Response(JSON.stringify({}), {
|
|
62
|
+
status: 401,
|
|
63
|
+
statusText: 'Unauthorized',
|
|
64
|
+
})];
|
|
65
|
+
}
|
|
66
|
+
return [2 /*return*/, fetch("".concat(fetchConfig.instance, "api/latest/").concat(url), {
|
|
67
|
+
method: method,
|
|
68
|
+
headers: {
|
|
69
|
+
'Content-Type': 'application/json',
|
|
70
|
+
Authorization: "Bearer ".concat(fetchConfig.instanceToken),
|
|
71
|
+
},
|
|
72
|
+
body: JSON.stringify(body),
|
|
73
|
+
}).catch(function (error) {
|
|
74
|
+
return new Response(JSON.stringify({}), {
|
|
75
|
+
status: 500,
|
|
76
|
+
statusText: "Request failed ".concat(error.message),
|
|
77
|
+
});
|
|
78
|
+
})];
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function query(_a) {
|
|
83
|
+
return __awaiter(this, arguments, void 0, function (_b) {
|
|
84
|
+
var shouldCache, cacheKey, requestData;
|
|
85
|
+
var _this = this;
|
|
86
|
+
var url = _b.url, _c = _b.method, method = _c === void 0 ? 'GET' : _c, body = _b.body, _d = _b.cache, cache = _d === void 0 ? true : _d, _e = _b.queryClient, queryClient = _e === void 0 ? ReqraftProvider_1.ReqraftQueryClient : _e;
|
|
87
|
+
return __generator(this, function (_f) {
|
|
88
|
+
switch (_f.label) {
|
|
89
|
+
case 0:
|
|
90
|
+
shouldCache = method === 'DELETE' || method === 'POST' ? false : cache;
|
|
91
|
+
cacheKey = "".concat(url, ":").concat(method, ":").concat(JSON.stringify(body || {}));
|
|
92
|
+
return [4 /*yield*/, queryClient.fetchQuery({
|
|
93
|
+
queryKey: [cacheKey],
|
|
94
|
+
queryFn: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
95
|
+
var response, clone, json;
|
|
96
|
+
return __generator(this, function (_a) {
|
|
97
|
+
switch (_a.label) {
|
|
98
|
+
case 0: return [4 /*yield*/, doFetchData(url, method, body)];
|
|
99
|
+
case 1:
|
|
100
|
+
response = _a.sent();
|
|
101
|
+
clone = response.clone();
|
|
102
|
+
return [4 /*yield*/, clone.json()];
|
|
103
|
+
case 2:
|
|
104
|
+
json = _a.sent();
|
|
105
|
+
if (response.status === 401) {
|
|
106
|
+
window.location.href = fetchConfig.unauthorizedRedirect(window.location.pathname);
|
|
107
|
+
}
|
|
108
|
+
return [2 /*return*/, {
|
|
109
|
+
data: json,
|
|
110
|
+
ok: response.ok,
|
|
111
|
+
status: response.status,
|
|
112
|
+
statusText: response.statusText,
|
|
113
|
+
}];
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}); },
|
|
117
|
+
staleTime: shouldCache ? CACHE_EXPIRATION_TIME : 0,
|
|
118
|
+
})];
|
|
119
|
+
case 1:
|
|
120
|
+
requestData = _f.sent();
|
|
121
|
+
if (!requestData.ok) {
|
|
122
|
+
queryClient.invalidateQueries({ queryKey: [cacheKey] });
|
|
123
|
+
return [2 /*return*/, {
|
|
124
|
+
data: null,
|
|
125
|
+
ok: false,
|
|
126
|
+
code: requestData.status,
|
|
127
|
+
error: requestData.statusText,
|
|
128
|
+
}];
|
|
129
|
+
}
|
|
130
|
+
return [2 /*return*/, {
|
|
131
|
+
data: requestData.data,
|
|
132
|
+
ok: true,
|
|
133
|
+
code: requestData.status,
|
|
134
|
+
}];
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
exports.query = query;
|
|
140
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qoretechnologies/reqraft",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "ReQraft is a collection of React components and hooks that are used across Qore Technologies' products made using the ReQore component library from Qore.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
"test": "./node_modules/.bin/jest --passWithNoTests",
|
|
10
10
|
"test:watch": "./node_modules/.bin/jest --watch --passWithNoTests",
|
|
11
11
|
"test:ci": "./node_modules/.bin/jest --silent --json --outputFile=tests.json --passWithNoTests",
|
|
12
|
+
"precheck": "yarn run lint && yarn run test && yarn build:test:prod",
|
|
12
13
|
"build": "./node_modules/typescript/bin/tsc --project tsconfig.prod.json",
|
|
13
14
|
"build:test": "./node_modules/typescript/bin/tsc --noEmit",
|
|
14
15
|
"build:test:prod": "./node_modules/typescript/bin/tsc --project tsconfig.prod.json --noEmit",
|
|
15
16
|
"lint": "yarn run eslint ./src/",
|
|
16
17
|
"storybook": "storybook dev -p 6008",
|
|
18
|
+
"update-reqore": "yarn add @qoretechnologies/reqore@beta",
|
|
17
19
|
"test-storybook": "DEBUG_PRINT_LIMIT=0 test-storybook --url http://localhost:6008",
|
|
18
20
|
"install-playwright": "npx playwright install --with-deps",
|
|
19
21
|
"build-storybook": "storybook build",
|
|
@@ -32,7 +34,6 @@
|
|
|
32
34
|
"qorus"
|
|
33
35
|
],
|
|
34
36
|
"pre-push": [
|
|
35
|
-
"source",
|
|
36
37
|
"build:test:prod",
|
|
37
38
|
"lint",
|
|
38
39
|
"test"
|
|
@@ -51,7 +52,7 @@
|
|
|
51
52
|
"@babel/preset-react": "^7.12.10",
|
|
52
53
|
"@babel/preset-typescript": "^7.12.7",
|
|
53
54
|
"@chromatic-com/storybook": "^1",
|
|
54
|
-
"@qoretechnologies/reqore": "^0.
|
|
55
|
+
"@qoretechnologies/reqore": "^0.43.0",
|
|
55
56
|
"@storybook/addon-actions": "^8.0.9",
|
|
56
57
|
"@storybook/addon-essentials": "^8.0.9",
|
|
57
58
|
"@storybook/addon-interactions": "^8.0.9",
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
"@types/node": "^14.14.14",
|
|
72
73
|
"@types/react": "^18.3.1",
|
|
73
74
|
"@types/react-dom": "^18.3.0",
|
|
75
|
+
"@types/react-query": "^1.2.9",
|
|
74
76
|
"@typescript-eslint/eslint-plugin": "^7.8.0",
|
|
75
77
|
"@typescript-eslint/parser": "^7.8.0",
|
|
76
78
|
"babel-jest": "^29.7.0",
|
|
@@ -89,8 +91,10 @@
|
|
|
89
91
|
"react-intersection-observer": "^9.4.2",
|
|
90
92
|
"react-test-renderer": "^18.2.0",
|
|
91
93
|
"storybook": "^8.0.9",
|
|
94
|
+
"storybook-addon-mock": "^5.0.0",
|
|
92
95
|
"ts-jest": "^29.1.2",
|
|
93
96
|
"ts-node": "^9.1.1",
|
|
97
|
+
"type-fest": "^4.18.2",
|
|
94
98
|
"typescript": "^5.4.5"
|
|
95
99
|
},
|
|
96
100
|
"peerDependencies": {
|
|
@@ -99,6 +103,7 @@
|
|
|
99
103
|
"react-dom": "^18.3.1"
|
|
100
104
|
},
|
|
101
105
|
"dependencies": {
|
|
106
|
+
"@tanstack/react-query": "^5.35.5",
|
|
102
107
|
"classnames": "^2.2.6",
|
|
103
108
|
"epoch-timeago": "^1.1.9",
|
|
104
109
|
"lodash": "^4.17.21",
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { expect, fireEvent, fn, waitFor } from '@storybook/test';
|
|
3
|
+
import { storiesStorageMock, storiesStorageMockEmpty } from '../../../__tests__/ mock';
|
|
4
|
+
import { testsWaitForText } from '../../../__tests__/utils';
|
|
5
|
+
import menu from '../../../mock/menu';
|
|
6
|
+
import { StoryMeta } from '../../types';
|
|
7
|
+
import { ReqraftMenu, TReqraftMenu } from './Menu';
|
|
8
|
+
|
|
9
|
+
const typedMenu = menu as TReqraftMenu;
|
|
10
|
+
|
|
11
|
+
const meta = {
|
|
12
|
+
component: ReqraftMenu,
|
|
13
|
+
title: 'Components/Menu',
|
|
14
|
+
render: (props) => <ReqraftMenu {...props} />,
|
|
15
|
+
parameters: {
|
|
16
|
+
mockData: [...storiesStorageMockEmpty],
|
|
17
|
+
},
|
|
18
|
+
} as StoryMeta<typeof ReqraftMenu>;
|
|
19
|
+
|
|
20
|
+
export default meta;
|
|
21
|
+
export type Story = StoryObj<typeof meta>;
|
|
22
|
+
|
|
23
|
+
export const Basic: Story = {
|
|
24
|
+
args: {
|
|
25
|
+
menu: typedMenu,
|
|
26
|
+
},
|
|
27
|
+
play: async () => {
|
|
28
|
+
await testsWaitForText('Developer Portal');
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
export const ActivePath: Story = {
|
|
32
|
+
args: {
|
|
33
|
+
path: '/Interfaces/mapper',
|
|
34
|
+
menu: typedMenu,
|
|
35
|
+
},
|
|
36
|
+
play: async () => {
|
|
37
|
+
await testsWaitForText('Developer Portal');
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export const WithDefaultQuery: Story = {
|
|
42
|
+
args: {
|
|
43
|
+
menu: typedMenu,
|
|
44
|
+
defaultQuery: 'mapper',
|
|
45
|
+
},
|
|
46
|
+
play: async () => {
|
|
47
|
+
await testsWaitForText('Developer Portal');
|
|
48
|
+
await expect(document.querySelector('.reqore-input')).toHaveValue('mapper');
|
|
49
|
+
await expect(document.querySelectorAll('.reqore-menu-item')).toHaveLength(2);
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const Filtered: Story = {
|
|
54
|
+
args: {
|
|
55
|
+
menu: typedMenu,
|
|
56
|
+
onQueryChange: fn(),
|
|
57
|
+
},
|
|
58
|
+
play: async () => {
|
|
59
|
+
await testsWaitForText('Developer Portal');
|
|
60
|
+
await fireEvent.change(document.querySelector('.reqore-input'), { target: { value: 'step' } });
|
|
61
|
+
|
|
62
|
+
await waitFor(() => expect(document.querySelectorAll('.reqore-menu-item')).toHaveLength(2), {
|
|
63
|
+
timeout: 1000,
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const WidthFromStorage: Story = {
|
|
69
|
+
...ActivePath,
|
|
70
|
+
parameters: {
|
|
71
|
+
mockData: [...storiesStorageMock],
|
|
72
|
+
},
|
|
73
|
+
};
|