udp-react-enterprise-component-library 25.1.0-beta.9 → 25.1.1-beta.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/dist/{AmbientGridTemplate-BqlMt5Su.js → AmbientGridTemplate-6xfwTiz-.js} +24 -62
- package/dist/AmbientGridTemplate-6xfwTiz-.js.map +1 -0
- package/dist/ClientSideUdpGrid-CEhDqIId.js +56 -0
- package/dist/ClientSideUdpGrid-CEhDqIId.js.map +1 -0
- package/dist/{EnvironmentRibbon-DaDmKAPO.js → EnvironmentRibbon-oEmbWjEq.js} +4 -148
- package/dist/EnvironmentRibbon-oEmbWjEq.js.map +1 -0
- package/dist/{MenuPage-CO6_GWwB.js → MenuPage-CZHpoopY.js} +12 -13
- package/dist/{MenuPage-CO6_GWwB.js.map → MenuPage-CZHpoopY.js.map} +1 -1
- package/dist/{MyExportsPage-CX9tzqHk.js → MyExportsPage-CS2Bw2mF.js} +56 -69
- package/dist/{MyExportsPage-CX9tzqHk.js.map → MyExportsPage-CS2Bw2mF.js.map} +1 -1
- package/dist/MyExportsPage-hyX42CN6.js +11 -0
- package/dist/{PageContainer-k8KCfGsM.js → PageContainer-BPHLFGju.js} +12 -17
- package/dist/PageContainer-BPHLFGju.js.map +1 -0
- package/dist/{PageNotFoundRoute-CxYZNEhN.js → PageNotFoundRoute-D9dLbM_w.js} +1 -1
- package/dist/{PageNotFoundRoute-CxYZNEhN.js.map → PageNotFoundRoute-D9dLbM_w.js.map} +1 -1
- package/dist/PageNotFoundRoute-DUj0Q9J8.js +3 -0
- package/dist/{PasswordResetRedirect-BHnkAW40.js → PasswordResetRedirect-C3g8L0vA.js} +2 -3
- package/dist/{PasswordResetRedirect-BHnkAW40.js.map → PasswordResetRedirect-C3g8L0vA.js.map} +1 -1
- package/dist/PasswordResetRedirect-Dh-S5Ril.js +3 -0
- package/dist/{SearchUtilities-Bor3HbfB.js → SearchUtilities-Btugro8y.js} +11 -20
- package/dist/{SearchUtilities-Bor3HbfB.js.map → SearchUtilities-Btugro8y.js.map} +1 -1
- package/dist/{SideSheet-DUsxG1FN.js → SideSheet-BsDoeNmq.js} +7 -47
- package/dist/SideSheet-BsDoeNmq.js.map +1 -0
- package/dist/UdpMaintenanceConfigPage-DcHntunS.js +88 -0
- package/dist/UdpMaintenanceConfigPage-DcHntunS.js.map +1 -0
- package/dist/UdpPublicForm-DTt-lMfk.js +4 -0
- package/dist/{UdpPublicForm-Caa1tH6z.js → UdpPublicForm-LDSuOwV2.js} +2 -2
- package/dist/{UdpPublicForm-Caa1tH6z.js.map → UdpPublicForm-LDSuOwV2.js.map} +1 -1
- package/dist/{UtilitySideBar-D4CXGtW2.js → UtilitySideBar-95k0edSA.js} +45 -89
- package/dist/{UtilitySideBar-D4CXGtW2.js.map → UtilitySideBar-95k0edSA.js.map} +1 -1
- package/dist/{VirtualBrowser-BXL0hdy0.js → VirtualBrowser-_epMjUkE.js} +23 -29
- package/dist/{VirtualBrowser-BXL0hdy0.js.map → VirtualBrowser-_epMjUkE.js.map} +1 -1
- package/dist/{WorkflowContainer-DrqzuQtU.js → WorkflowContainer-ClPvY2mG.js} +14 -20
- package/dist/{WorkflowContainer-DrqzuQtU.js.map → WorkflowContainer-ClPvY2mG.js.map} +1 -1
- package/dist/WorkflowContainer-D0QUOc-f.js +11 -0
- package/dist/{apiHelpers-DZots3og.js → apiHelpers-CmM6DWAT.js} +7 -12
- package/dist/{apiHelpers-DZots3og.js.map → apiHelpers-CmM6DWAT.js.map} +1 -1
- package/dist/entityUtilities-Dy-jsB5c.js +22 -0
- package/dist/entityUtilities-Dy-jsB5c.js.map +1 -0
- package/dist/index.js +1528 -2114
- package/dist/index.js.map +1 -1
- package/dist/{propertyTypeEnums-Civy7RJv.js → propertyTypeEnums-BCCGQqVB.js} +2 -2
- package/dist/{propertyTypeEnums-Civy7RJv.js.map → propertyTypeEnums-BCCGQqVB.js.map} +1 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/maintenanceEngine/crudBrowser/CrudTableColumnDefs.d.ts +1 -9
- package/dist/types/maintenanceEngine/crudBrowser/crudHelper.d.ts +1 -0
- package/dist/types/menuPage/MenuPage.d.ts +2 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/udp/pages/UdpMaintenanceConfigPage.d.ts +2 -1
- package/dist/useAxiosGet-Dh5pVURP.js +144 -0
- package/dist/useAxiosGet-Dh5pVURP.js.map +1 -0
- package/dist/useAxiosMutate-DlG255x9.js +43 -0
- package/dist/useAxiosMutate-DlG255x9.js.map +1 -0
- package/package.json +2 -2
- package/dist/AmbientGridTemplate-BqlMt5Su.js.map +0 -1
- package/dist/EnvironmentRibbon-DaDmKAPO.js.map +0 -1
- package/dist/MyExportsPage-CkzQ0MRq.js +0 -8
- package/dist/PageContainer-k8KCfGsM.js.map +0 -1
- package/dist/PageNotFoundRoute-BbBtA9Cz.js +0 -3
- package/dist/PasswordResetRedirect-tUV2yEkH.js +0 -3
- package/dist/SideSheet-DUsxG1FN.js.map +0 -1
- package/dist/UdpPublicForm-Cvw5tOHe.js +0 -4
- package/dist/WorkflowContainer-Q8gtuaB7.js +0 -9
- package/dist/types/maintenanceEngine/crudBrowser/CrudTableActionRender.d.ts +0 -3
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { getAccessToken, getMergedConfig, handleResponseErrors, whitelistedPaths } from "./apiHelpers-CmM6DWAT.js";
|
|
2
|
+
import { createContext, useContext, useEffect, useMemo } from "react";
|
|
3
|
+
import useAxios from "axios-hooks";
|
|
4
|
+
import Axios from "axios";
|
|
5
|
+
|
|
6
|
+
//#region src/utilities/axiosInterceptors.js
|
|
7
|
+
const axiosInterceptors = () => {
|
|
8
|
+
Axios.interceptors.request.use(async (config) => {
|
|
9
|
+
if (!whitelistedPaths.includes(window.location.pathname)) {
|
|
10
|
+
let accessToken = "";
|
|
11
|
+
if (!config?.headers?.Authorization) accessToken = await getAccessToken();
|
|
12
|
+
return getMergedConfig(accessToken, config);
|
|
13
|
+
}
|
|
14
|
+
return config;
|
|
15
|
+
}, (error) => Promise.reject(error));
|
|
16
|
+
Axios.interceptors.response.use((response) => response, async (error) => {
|
|
17
|
+
const config = error?.config;
|
|
18
|
+
if (error?.response?.status === 401 && !config?._retry && !whitelistedPaths.includes(window.location.pathname)) {
|
|
19
|
+
config.headers.Authorization = `Bearer ${await getAccessToken()}`;
|
|
20
|
+
config._retry = true;
|
|
21
|
+
return Axios(config);
|
|
22
|
+
}
|
|
23
|
+
return Promise.reject(error);
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var axiosInterceptors_default = axiosInterceptors;
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/utilities/auth/internal.ts
|
|
30
|
+
const UserContext = createContext(null);
|
|
31
|
+
const UserDispatchContext = createContext(null);
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/utilities/auth/useUser.ts
|
|
35
|
+
/**
|
|
36
|
+
* Get the current User object (or null if not logged in)
|
|
37
|
+
*
|
|
38
|
+
* Does not redirect to login
|
|
39
|
+
* @see {@link useAuthedUser}
|
|
40
|
+
*/
|
|
41
|
+
function useUser() {
|
|
42
|
+
return useContext(UserContext);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/utilities/input/StringUtilities.js
|
|
47
|
+
const removeWhiteSpace = (str) => {
|
|
48
|
+
if (!str) return "";
|
|
49
|
+
return str.replace(/\s/g, "");
|
|
50
|
+
};
|
|
51
|
+
const camelToPascalCaseWithSpace = (str) => {
|
|
52
|
+
return (str.charAt(0).toUpperCase() + str.slice(1)).replace(/([a-z0-9])([A-Z])/g, "$1 $2");
|
|
53
|
+
};
|
|
54
|
+
const trimStringAfter = (str, character) => {
|
|
55
|
+
const lastIndex = str.lastIndexOf(character);
|
|
56
|
+
return str.substring(0, lastIndex === -1 ? str.length : lastIndex);
|
|
57
|
+
};
|
|
58
|
+
const toLowerFirstChar = (field) => {
|
|
59
|
+
return field?.charAt(0)?.toLowerCase() + field?.slice(1);
|
|
60
|
+
};
|
|
61
|
+
const toUpperFirstChar = (field) => {
|
|
62
|
+
return field?.charAt(0)?.toUpperCase() + field?.slice(1);
|
|
63
|
+
};
|
|
64
|
+
const toTitleCase = (str) => {
|
|
65
|
+
const result = str.replace(/([A-Z][a-z]+)/g, " $1").replace(/([A-Z]+)\b/g, " $1").replace(/_/g, " ").trim();
|
|
66
|
+
return result.charAt(0).toUpperCase() + result.slice(1);
|
|
67
|
+
};
|
|
68
|
+
const pluralize = (str) => {
|
|
69
|
+
if (str.charAt(str.length - 1) === "s") return str;
|
|
70
|
+
else return `${str}s`;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/utilities/useAxiosGet.js
|
|
75
|
+
axiosInterceptors_default();
|
|
76
|
+
/**
|
|
77
|
+
* A custom hook for making GET requests with query parameters.
|
|
78
|
+
* @template T - The expected type of the response data.
|
|
79
|
+
* @param {string} url - The URL for the request.
|
|
80
|
+
* @param {object} [params] - Optional object for query parameters.
|
|
81
|
+
* @param {import('axios').AxiosRequestConfig} [config] - Optional Axios request config.
|
|
82
|
+
* @param {boolean} [isManual] - If true, the request is not made automatically.
|
|
83
|
+
* @returns {import('axios-hooks').AxiosHooksResult<T>}
|
|
84
|
+
*/
|
|
85
|
+
const useAxiosGetQuery = (url, params, config, isManual) => {
|
|
86
|
+
const user = useUser();
|
|
87
|
+
if (!user?.accessToken) isManual = true;
|
|
88
|
+
config.headers = useMemo(() => {
|
|
89
|
+
const currentHeaders = config.headers ?? {};
|
|
90
|
+
currentHeaders.currentTenantId ||= user?.currentTenantId ?? "";
|
|
91
|
+
return currentHeaders;
|
|
92
|
+
}, [user, config]);
|
|
93
|
+
const [{ data, loading, error }, refetch] = useAxios({
|
|
94
|
+
url,
|
|
95
|
+
params,
|
|
96
|
+
...config
|
|
97
|
+
}, { manual: isManual });
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
handleResponseErrors(error);
|
|
100
|
+
}, [error]);
|
|
101
|
+
return [{
|
|
102
|
+
data,
|
|
103
|
+
loading,
|
|
104
|
+
error
|
|
105
|
+
}, refetch];
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* A custom hook for making GET requests with Axios.
|
|
109
|
+
* @template T - The expected type of the response data.
|
|
110
|
+
* @param {string} baseURL - The base URL for the request.
|
|
111
|
+
* @param {string} url - The URL path for the request.
|
|
112
|
+
* @param {import('axios').AxiosRequestConfig} [config={}] - Optional Axios request config.
|
|
113
|
+
* @param {boolean} [isManual] - If true, the request is not made automatically.
|
|
114
|
+
* @param {boolean} [useCache=true] - If true, caching is enabled.
|
|
115
|
+
* @returns {import('axios-hooks').AxiosHooksResult<T>}
|
|
116
|
+
*/
|
|
117
|
+
const useAxiosGet = (baseURL, url, config = {}, isManual, useCache = true) => {
|
|
118
|
+
const user = useUser();
|
|
119
|
+
config.headers = useMemo(() => {
|
|
120
|
+
const currentHeaders = config.headers ?? {};
|
|
121
|
+
currentHeaders.currentTenantId ||= user?.currentTenantId ?? "";
|
|
122
|
+
return currentHeaders;
|
|
123
|
+
}, [user, config]);
|
|
124
|
+
const fullURL = { url: `${baseURL}/${url}` };
|
|
125
|
+
const [{ data, loading, error }, refetch] = useAxios({
|
|
126
|
+
...fullURL,
|
|
127
|
+
...config
|
|
128
|
+
}, {
|
|
129
|
+
manual: isManual,
|
|
130
|
+
useCache
|
|
131
|
+
});
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
handleResponseErrors(error);
|
|
134
|
+
}, [error]);
|
|
135
|
+
return [{
|
|
136
|
+
data,
|
|
137
|
+
loading,
|
|
138
|
+
error
|
|
139
|
+
}, refetch];
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
//#endregion
|
|
143
|
+
export { UserContext, UserDispatchContext, axiosInterceptors_default, camelToPascalCaseWithSpace, pluralize, removeWhiteSpace, toLowerFirstChar, toTitleCase, toUpperFirstChar, trimStringAfter, useAxiosGet, useAxiosGetQuery, useUser };
|
|
144
|
+
//# sourceMappingURL=useAxiosGet-Dh5pVURP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAxiosGet-Dh5pVURP.js","names":["UserContext: React.Context<User | null>","UserDispatchContext: React.Context<Dispatch | null>","enableAxiosInterceptors"],"sources":["../src/utilities/axiosInterceptors.js","../src/utilities/auth/internal.ts","../src/utilities/auth/useUser.ts","../src/utilities/input/StringUtilities.js","../src/utilities/useAxiosGet.js"],"sourcesContent":["import Axios from 'axios';\nimport { getAccessToken, getMergedConfig } from './apiHelpers';\nimport { whitelistedPaths } from './auth/whitelistedPaths';\n\nconst axiosInterceptors = () => {\n Axios.interceptors.request.use(\n async (config) => {\n // don't want to change the access token if it's already there, this rule is already applied in getMergedConfig\n // we don't want to call getAccessToken until it is actually need it because it might log the user out\n if (!whitelistedPaths.includes(window.location.pathname)) {\n let accessToken = '';\n if(!config?.headers?.Authorization){\n accessToken = await getAccessToken()\n }\n return getMergedConfig(accessToken, config);\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n Axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const config = error?.config;\n if (\n error?.response?.status === 401 &&\n !config?._retry &&\n !whitelistedPaths.includes(window.location.pathname)\n ) {\n config.headers.Authorization = `Bearer ${await getAccessToken()}`;\n config._retry = true;\n\n return Axios(config);\n }\n\n return Promise.reject(error);\n }\n );\n};\n\nexport default axiosInterceptors;\n","import { createContext } from 'react';\nimport { User } from './user';\n\nexport type UserAction = { type: 'SET_USER' };\nexport type AccessTokenAction = { type: 'SET_ACCESS_TOKEN' };\nexport type Dispatch = (action: UserAction | AccessTokenAction) => void;\nexport const UserContext: React.Context<User | null> = createContext<User | null>(null);\nexport const UserDispatchContext: React.Context<Dispatch | null> = createContext<Dispatch | null>(null);\n","import { useContext } from 'react';\nimport { UserContext } from './internal';\nimport { User } from './user';\n\n/**\n * Get the current User object (or null if not logged in)\n *\n * Does not redirect to login\n * @see {@link useAuthedUser}\n */\nexport function useUser(): User | null {\n return useContext(UserContext);\n}\n","export const removeWhiteSpace = (str) => {\n if (!str) {\n return '';\n }\n return str.replace(/\\s/g, '');\n};\n\nexport const camelToPascalCaseWithSpace = (str) => {\n const capitalizedStr = str.charAt(0).toUpperCase() + str.slice(1);\n return capitalizedStr.replace(/([a-z0-9])([A-Z])/g, '$1 $2');\n};\n\nexport const trimStringAfter = (str, character) => {\n const lastIndex = str.lastIndexOf(character);\n return str.substring(0, lastIndex === -1 ? str.length : lastIndex);\n};\n\nexport const toLowerFirstChar = (field) => {\n return field?.charAt(0)?.toLowerCase() + field?.slice(1);\n};\n\nexport const toUpperFirstChar = (field) => {\n return field?.charAt(0)?.toUpperCase() + field?.slice(1);\n};\n\nexport const toTitleCase = (str) => {\n const result = str\n .replace(/([A-Z][a-z]+)/g, ' $1')\n .replace(/([A-Z]+)\\b/g, ' $1')\n .replace(/_/g, ' ')\n .trim();\n return result.charAt(0).toUpperCase() + result.slice(1);\n};\n\nexport const pluralize = (str) => {\n const last = str.charAt(str.length - 1);\n if (last === 's') {\n return str;\n } else {\n return `${str}s`;\n }\n};\n","import { useEffect, useMemo } from 'react';\nimport useAxios from 'axios-hooks';\nimport { handleResponseErrors, getMergedConfig } from './apiHelpers';\nimport enableAxiosInterceptors from './axiosInterceptors';\nimport { useUser } from './auth/useUser';\nimport { getStoredTenant } from './storage/UnitySessionStorage';\n\nenableAxiosInterceptors();\n/**\n * A custom hook for making GET requests with query parameters.\n * @template T - The expected type of the response data.\n * @param {string} url - The URL for the request.\n * @param {object} [params] - Optional object for query parameters.\n * @param {import('axios').AxiosRequestConfig} [config] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGetQuery = (url, params, config, isManual) => {\n const user = useUser();\n\n if (!user?.accessToken) {\n isManual = true;\n }\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const [{ data, loading, error }, refetch] = useAxios(\n { url, params, ...config },\n { manual: isManual }\n );\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n/**\n * A custom hook for making GET requests with Axios.\n * @template T - The expected type of the response data.\n * @param {string} baseURL - The base URL for the request.\n * @param {string} url - The URL path for the request.\n * @param {import('axios').AxiosRequestConfig} [config={}] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @param {boolean} [useCache=true] - If true, caching is enabled.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGet = (\n baseURL,\n url,\n config = {},\n isManual,\n useCache = true\n) => {\n const user = useUser();\n\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const fullURL = { url: `${baseURL}/${url}` };\n const [{ data, loading, error }, refetch] = useAxios(\n { ...fullURL, ...config },\n { manual: isManual, useCache: useCache }\n );\n\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n"],"mappings":";;;;;;AAIA,MAAM,0BAA0B;AAC9B,OAAM,aAAa,QAAQ,IACzB,OAAO,WAAW;AAGhB,MAAI,CAAC,iBAAiB,SAAS,OAAO,SAAS,SAAS,EAAE;GACxD,IAAI,cAAc;AAClB,OAAG,CAAC,QAAQ,SAAS,cACnB,eAAc,MAAM,gBAAgB;AAEtC,UAAO,gBAAgB,aAAa,OAAO;;AAE7C,SAAO;KAER,UAAU,QAAQ,OAAO,MAAM,CACjC;AAED,OAAM,aAAa,SAAS,KACzB,aAAa,UACd,OAAO,UAAU;EACf,MAAM,SAAS,OAAO;AACtB,MACE,OAAO,UAAU,WAAW,OAC5B,CAAC,QAAQ,UACT,CAAC,iBAAiB,SAAS,OAAO,SAAS,SAAS,EACpD;AACA,UAAO,QAAQ,gBAAgB,UAAU,MAAM,gBAAgB;AAC/D,UAAO,SAAS;AAEhB,UAAO,MAAM,OAAO;;AAGtB,SAAO,QAAQ,OAAO,MAAM;GAE/B;;AAGH,gCAAe;;;;ACnCf,MAAaA,cAA0C,cAA2B,KAAK;AACvF,MAAaC,sBAAsD,cAA+B,KAAK;;;;;;;;;;ACGvG,SAAgB,UAAuB;AACrC,QAAO,WAAW,YAAY;;;;;ACXhC,MAAa,oBAAoB,QAAQ;AACvC,KAAI,CAAC,IACH,QAAO;AAET,QAAO,IAAI,QAAQ,OAAO,GAAG;;AAG/B,MAAa,8BAA8B,QAAQ;AAEjD,SADuB,IAAI,OAAO,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE,EAC3C,QAAQ,sBAAsB,QAAQ;;AAG9D,MAAa,mBAAmB,KAAK,cAAc;CACjD,MAAM,YAAY,IAAI,YAAY,UAAU;AAC5C,QAAO,IAAI,UAAU,GAAG,cAAc,KAAK,IAAI,SAAS,UAAU;;AAGpE,MAAa,oBAAoB,UAAU;AACzC,QAAO,OAAO,OAAO,EAAE,EAAE,aAAa,GAAG,OAAO,MAAM,EAAE;;AAG1D,MAAa,oBAAoB,UAAU;AACzC,QAAO,OAAO,OAAO,EAAE,EAAE,aAAa,GAAG,OAAO,MAAM,EAAE;;AAG1D,MAAa,eAAe,QAAQ;CAClC,MAAM,SAAS,IACZ,QAAQ,kBAAkB,MAAM,CAChC,QAAQ,eAAe,MAAM,CAC7B,QAAQ,MAAM,IAAI,CAClB,MAAM;AACT,QAAO,OAAO,OAAO,EAAE,CAAC,aAAa,GAAG,OAAO,MAAM,EAAE;;AAGzD,MAAa,aAAa,QAAQ;AAEhC,KADa,IAAI,OAAO,IAAI,SAAS,EAAE,KAC1B,IACX,QAAO;KAEP,QAAO,GAAG,IAAI;;;;;AChClBC,2BAAyB;;;;;;;;;;AAUzB,MAAa,oBAAoB,KAAK,QAAQ,QAAQ,aAAa;CACjE,MAAM,OAAO,SAAS;AAEtB,KAAI,CAAC,MAAM,YACT,YAAW;AAOb,QAAO,UALS,cAAc;EAC5B,MAAM,iBAAiB,OAAO,WAAW,EAAE;AAC3C,iBAAe,oBAAoB,MAAM,mBAAmB;AAC5D,SAAO;IACN,CAAC,MAAM,OAAO,CAAC;CAGlB,MAAM,CAAC,EAAE,MAAM,SAAS,SAAS,WAAW,SAC1C;EAAE;EAAK;EAAQ,GAAG;EAAQ,EAC1B,EAAE,QAAQ,UAAU,CACrB;AACD,iBAAgB;AACd,uBAAqB,MAAM;IAC1B,CAAC,MAAM,CAAC;AAEX,QAAO,CAAC;EAAE;EAAM;EAAS;EAAO,EAAE,QAAQ;;;;;;;;;;;;AAY5C,MAAa,eACX,SACA,KACA,SAAS,EAAE,EACX,UACA,WAAW,SACR;CACH,MAAM,OAAO,SAAS;AAOtB,QAAO,UALS,cAAc;EAC5B,MAAM,iBAAiB,OAAO,WAAW,EAAE;AAC3C,iBAAe,oBAAoB,MAAM,mBAAmB;AAC5D,SAAO;IACN,CAAC,MAAM,OAAO,CAAC;CAGlB,MAAM,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO;CAC5C,MAAM,CAAC,EAAE,MAAM,SAAS,SAAS,WAAW,SAC1C;EAAE,GAAG;EAAS,GAAG;EAAQ,EACzB;EAAE,QAAQ;EAAoB;EAAU,CACzC;AAED,iBAAgB;AACd,uBAAqB,MAAM;IAC1B,CAAC,MAAM,CAAC;AAEX,QAAO,CAAC;EAAE;EAAM;EAAS;EAAO,EAAE,QAAQ"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getAccessToken, getMergedConfig, handleResponseErrors } from "./apiHelpers-CmM6DWAT.js";
|
|
2
|
+
import { axiosInterceptors_default, useUser } from "./useAxiosGet-Dh5pVURP.js";
|
|
3
|
+
import { useEffect, useMemo } from "react";
|
|
4
|
+
import useAxios from "axios-hooks";
|
|
5
|
+
import Axios from "axios";
|
|
6
|
+
|
|
7
|
+
//#region src/utilities/useAxiosMutate.js
|
|
8
|
+
axiosInterceptors_default();
|
|
9
|
+
const useAxiosMutate = (baseURL, url, config) => {
|
|
10
|
+
const fullURL = { url: `${baseURL}/${url}` };
|
|
11
|
+
const user = useUser();
|
|
12
|
+
config.headers = useMemo(() => {
|
|
13
|
+
const currentHeaders = config.headers ?? {};
|
|
14
|
+
currentHeaders.currentTenantId ||= user?.currentTenantId ?? "";
|
|
15
|
+
return currentHeaders;
|
|
16
|
+
}, [user, config]);
|
|
17
|
+
const [{ data, loading, error }, execute] = useAxios({
|
|
18
|
+
...fullURL,
|
|
19
|
+
...config
|
|
20
|
+
}, { manual: true });
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
handleResponseErrors(error);
|
|
23
|
+
}, [error]);
|
|
24
|
+
return [{
|
|
25
|
+
data,
|
|
26
|
+
loading,
|
|
27
|
+
error
|
|
28
|
+
}, execute];
|
|
29
|
+
};
|
|
30
|
+
const apiMutate = async (baseURL, url, config, data) => {
|
|
31
|
+
const fullURL = { url: `${baseURL}/${url}` };
|
|
32
|
+
const accessToken = await getAccessToken();
|
|
33
|
+
const mergedConfig = getMergedConfig(accessToken, config);
|
|
34
|
+
return Axios({
|
|
35
|
+
...fullURL,
|
|
36
|
+
...mergedConfig,
|
|
37
|
+
...data
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { apiMutate, useAxiosMutate };
|
|
43
|
+
//# sourceMappingURL=useAxiosMutate-DlG255x9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAxiosMutate-DlG255x9.js","names":["enableAxiosInterceptors"],"sources":["../src/utilities/useAxiosMutate.js"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport useAxios from 'axios-hooks';\nimport Axios from 'axios';\nimport {\n handleResponseErrors,\n getMergedConfig,\n getAccessToken\n} from './apiHelpers';\nimport enableAxiosInterceptors from './axiosInterceptors';\nimport { useUser } from './auth/useUser';\n\nenableAxiosInterceptors();\n\nexport const useAxiosMutate = (baseURL, url, config) => {\n\n const fullURL = { url: `${baseURL}/${url}` };\n const user = useUser()\n\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const [{ data, loading, error }, execute] = useAxios(\n { ...fullURL, ...config },\n { manual: true }\n );\n\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, execute];\n};\n\nexport const apiMutate = async (baseURL, url, config, data) => {\n const fullURL = { url: `${baseURL}/${url}` };\n const accessToken = await getAccessToken();\n const mergedConfig = getMergedConfig(accessToken, config);\n return Axios({ ...fullURL, ...mergedConfig, ...data });\n};\n"],"mappings":";;;;;;;AAWAA,2BAAyB;AAEzB,MAAa,kBAAkB,SAAS,KAAK,WAAW;CAEtD,MAAM,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO;CAC5C,MAAM,OAAO,SAAS;AAOtB,QAAO,UALS,cAAc;EAC5B,MAAM,iBAAiB,OAAO,WAAW,EAAE;AAC3C,iBAAe,oBAAoB,MAAM,mBAAmB;AAC5D,SAAO;IACN,CAAC,MAAM,OAAO,CAAC;CAGlB,MAAM,CAAC,EAAE,MAAM,SAAS,SAAS,WAAW,SAC1C;EAAE,GAAG;EAAS,GAAG;EAAQ,EACzB,EAAE,QAAQ,MAAM,CACjB;AAED,iBAAgB;AACd,uBAAqB,MAAM;IAC1B,CAAC,MAAM,CAAC;AAEX,QAAO,CAAC;EAAE;EAAM;EAAS;EAAO,EAAE,QAAQ;;AAG5C,MAAa,YAAY,OAAO,SAAS,KAAK,QAAQ,SAAS;CAC7D,MAAM,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO;CAC5C,MAAM,cAAc,MAAM,gBAAgB;CAC1C,MAAM,eAAe,gBAAgB,aAAa,OAAO;AACzD,QAAO,MAAM;EAAE,GAAG;EAAS,GAAG;EAAc,GAAG;EAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "udp-react-enterprise-component-library",
|
|
3
|
-
"version": "25.1.
|
|
3
|
+
"version": "25.1.1-beta.1",
|
|
4
4
|
"description": "React-based UI component library implementing Fluent UI design for Univerus internal projects",
|
|
5
5
|
"author": "Univerus",
|
|
6
6
|
"license": "MIT",
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
"warning": "^4.0.3",
|
|
162
162
|
"xlsx": "^0.18.5",
|
|
163
163
|
"zustand": "^4.3.7",
|
|
164
|
-
"udp-react-stencil-component-library": "25.1.
|
|
164
|
+
"udp-react-stencil-component-library": "25.1.1-beta.1"
|
|
165
165
|
},
|
|
166
166
|
"publishConfig": {
|
|
167
167
|
"tag": "beta"
|