@j2inn/fin5-ui-utils 1.0.5 → 1.0.6-beta.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/dist/fin5Top/useFin5AppURLHashParameter.d.ts +7 -1
- package/dist/fin5Top/useFin5AppURLHashParameter.js +56 -4
- package/dist/fin5Top/useFin5AppURLHashParameter.js.map +1 -1
- package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +7 -1
- package/dist_es/fin5Top/useFin5AppURLHashParameter.js +54 -3
- package/dist_es/fin5Top/useFin5AppURLHashParameter.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,4 +5,10 @@ export declare const getHashParameters: () => URLSearchParams;
|
|
|
5
5
|
* @param initialState initial state used if the parameter is not defined.
|
|
6
6
|
* @returns the parameter value and a function to update it.
|
|
7
7
|
*/
|
|
8
|
-
export declare const useFin5AppURLHashParameter: (name: string, initialState?: string) => [string | undefined, (newValue: string) => void];
|
|
8
|
+
export declare const useFin5AppURLHashParameter: (name: string, initialState?: string) => [string | undefined, (newValue: string) => Promise<void>];
|
|
9
|
+
/**
|
|
10
|
+
* Use all the parameters in the hash of a custom app running in FIN 5 as state.
|
|
11
|
+
* @param parameters the initial (optional) values for the parameters
|
|
12
|
+
* @returns the URL parameters and a function to patch the parameters.
|
|
13
|
+
*/
|
|
14
|
+
export declare const useFin5AppURLHashParameters: (parameters?: URLSearchParams) => [URLSearchParams, (newValues: URLSearchParams) => Promise<void>];
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.useFin5AppURLHashParameter = exports.getHashParameters = void 0;
|
|
6
|
+
exports.useFin5AppURLHashParameters = exports.useFin5AppURLHashParameter = exports.getHashParameters = void 0;
|
|
7
7
|
const react_1 = require("react");
|
|
8
8
|
const IN_IFRAME = window !== top;
|
|
9
9
|
const getTop = () => window.top ?? window;
|
|
@@ -20,7 +20,7 @@ const getHash = () => {
|
|
|
20
20
|
const fin5SkipHashUpdate = () => getApp()?.set('skipHashUpdate', true);
|
|
21
21
|
const setHash = (hash) => {
|
|
22
22
|
if (IN_IFRAME) {
|
|
23
|
-
fin5SkipHashUpdate()?.then(() => {
|
|
23
|
+
return fin5SkipHashUpdate()?.then(() => {
|
|
24
24
|
const frameParameters = getFin5HashFrameParameters();
|
|
25
25
|
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] + '#' + hash);
|
|
26
26
|
getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
@@ -28,6 +28,7 @@ const setHash = (hash) => {
|
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
30
|
window.location.hash = hash;
|
|
31
|
+
return Promise.resolve();
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
34
|
const getHashParameters = () => new URLSearchParams(getHash().slice(1));
|
|
@@ -40,7 +41,7 @@ exports.getHashParameters = getHashParameters;
|
|
|
40
41
|
*/
|
|
41
42
|
const useFin5AppURLHashParameter = (name, initialState) => {
|
|
42
43
|
const [paramValue, setParamValue] = (0, react_1.useState)((0, exports.getHashParameters)()?.get(name) ?? undefined);
|
|
43
|
-
const setHashParameter = (value) => {
|
|
44
|
+
const setHashParameter = async (value) => {
|
|
44
45
|
const params = (0, exports.getHashParameters)();
|
|
45
46
|
if (params.get(name) !== value) {
|
|
46
47
|
if (value === '' || value == null) {
|
|
@@ -49,7 +50,7 @@ const useFin5AppURLHashParameter = (name, initialState) => {
|
|
|
49
50
|
else {
|
|
50
51
|
params?.set(name, value);
|
|
51
52
|
}
|
|
52
|
-
setHash(params?.toString());
|
|
53
|
+
await setHash(params?.toString());
|
|
53
54
|
setParamValue(value);
|
|
54
55
|
}
|
|
55
56
|
};
|
|
@@ -70,4 +71,55 @@ const useFin5AppURLHashParameter = (name, initialState) => {
|
|
|
70
71
|
return [paramValue, setHashParameter];
|
|
71
72
|
};
|
|
72
73
|
exports.useFin5AppURLHashParameter = useFin5AppURLHashParameter;
|
|
74
|
+
/**
|
|
75
|
+
* Use all the parameters in the hash of a custom app running in FIN 5 as state.
|
|
76
|
+
* @param parameters the initial (optional) values for the parameters
|
|
77
|
+
* @returns the URL parameters and a function to patch the parameters.
|
|
78
|
+
*/
|
|
79
|
+
const useFin5AppURLHashParameters = (parameters) => {
|
|
80
|
+
const [paramValues, setParamValues] = (0, react_1.useState)((0, exports.getHashParameters)());
|
|
81
|
+
// Patch the parameters: this updates just the URL parameters passed.
|
|
82
|
+
// If there is a parameter in the hash and not in the function arg, that is left untouched.
|
|
83
|
+
// To remove a parameter in the hash, set it to null or empty string.
|
|
84
|
+
const setHashParameters = async (paramsToUpdate) => {
|
|
85
|
+
const params = (0, exports.getHashParameters)();
|
|
86
|
+
Array.from(paramsToUpdate.entries()).forEach(([paramKey, newParamValue]) => {
|
|
87
|
+
if (newParamValue !== params.get(paramKey)) {
|
|
88
|
+
if (newParamValue == null || newParamValue === '') {
|
|
89
|
+
params.delete(paramKey);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
params.set(paramKey, newParamValue);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
await setHash(params.toString());
|
|
97
|
+
setParamValues(params);
|
|
98
|
+
};
|
|
99
|
+
// Initial setup.
|
|
100
|
+
(0, react_1.useEffect)(() => {
|
|
101
|
+
const hashParameters = (0, exports.getHashParameters)();
|
|
102
|
+
if (parameters) {
|
|
103
|
+
Array.from(parameters.entries()).forEach(([paramKey, paramValue]) => {
|
|
104
|
+
if (!hashParameters.has(paramKey) &&
|
|
105
|
+
paramValue != null &&
|
|
106
|
+
paramValue !== '') {
|
|
107
|
+
hashParameters.set(paramKey, paramValue);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
setHashParameters(hashParameters);
|
|
111
|
+
}
|
|
112
|
+
}, []);
|
|
113
|
+
(0, react_1.useEffect)(() => {
|
|
114
|
+
const onHashChange = () => {
|
|
115
|
+
setParamValues((0, exports.getHashParameters)());
|
|
116
|
+
};
|
|
117
|
+
getTop().addEventListener('hashchange', onHashChange);
|
|
118
|
+
return () => {
|
|
119
|
+
getTop().removeEventListener('hashchange', onHashChange);
|
|
120
|
+
};
|
|
121
|
+
}, []);
|
|
122
|
+
return [paramValues, setHashParameters];
|
|
123
|
+
};
|
|
124
|
+
exports.useFin5AppURLHashParameters = useFin5AppURLHashParameters;
|
|
73
125
|
//# sourceMappingURL=useFin5AppURLHashParameter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFin5AppURLHashParameter.js","sourceRoot":"","sources":["../../src/fin5Top/useFin5AppURLHashParameter.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iCAA2C;AAE3C,MAAM,SAAS,GAAG,MAAM,KAAK,GAAG,CAAA;AAMhC,MAAM,MAAM,GAAG,GAA2B,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAA;AACjE,MAAM,MAAM,GAAG,GAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,CAAA;AACnD,MAAM,cAAc,GAAG,GAAa,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAA;AAExD,MAAM,0BAA0B,GAAG,GAAoB,EAAE,CACxD,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAElE,MAAM,eAAe,GAAG,GAAkB,EAAE,CAC3C,0BAA0B,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAExC,MAAM,yBAAyB,GAAG,CAAC,GAAkB,EAAU,EAAE,CAChE,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;AAE/B,MAAM,OAAO,GAAG,GAAW,EAAE;IAC5B,OAAO,SAAS;QACf,CAAC,CAAC,yBAAyB,CAAC,eAAe,EAAE,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,GAAmC,EAAE,CAC/D,MAAM,EAAE,EAAE,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;AAEtC,MAAM,OAAO,GAAG,CAAC,IAAY,
|
|
1
|
+
{"version":3,"file":"useFin5AppURLHashParameter.js","sourceRoot":"","sources":["../../src/fin5Top/useFin5AppURLHashParameter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,10 @@ export declare const getHashParameters: () => URLSearchParams;
|
|
|
5
5
|
* @param initialState initial state used if the parameter is not defined.
|
|
6
6
|
* @returns the parameter value and a function to update it.
|
|
7
7
|
*/
|
|
8
|
-
export declare const useFin5AppURLHashParameter: (name: string, initialState?: string) => [string | undefined, (newValue: string) => void];
|
|
8
|
+
export declare const useFin5AppURLHashParameter: (name: string, initialState?: string) => [string | undefined, (newValue: string) => Promise<void>];
|
|
9
|
+
/**
|
|
10
|
+
* Use all the parameters in the hash of a custom app running in FIN 5 as state.
|
|
11
|
+
* @param parameters the initial (optional) values for the parameters
|
|
12
|
+
* @returns the URL parameters and a function to patch the parameters.
|
|
13
|
+
*/
|
|
14
|
+
export declare const useFin5AppURLHashParameters: (parameters?: URLSearchParams) => [URLSearchParams, (newValues: URLSearchParams) => Promise<void>];
|
|
@@ -17,7 +17,7 @@ const getHash = () => {
|
|
|
17
17
|
const fin5SkipHashUpdate = () => getApp()?.set('skipHashUpdate', true);
|
|
18
18
|
const setHash = (hash) => {
|
|
19
19
|
if (IN_IFRAME) {
|
|
20
|
-
fin5SkipHashUpdate()?.then(() => {
|
|
20
|
+
return fin5SkipHashUpdate()?.then(() => {
|
|
21
21
|
const frameParameters = getFin5HashFrameParameters();
|
|
22
22
|
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] + '#' + hash);
|
|
23
23
|
getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
@@ -25,6 +25,7 @@ const setHash = (hash) => {
|
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
27
|
window.location.hash = hash;
|
|
28
|
+
return Promise.resolve();
|
|
28
29
|
}
|
|
29
30
|
};
|
|
30
31
|
export const getHashParameters = () => new URLSearchParams(getHash().slice(1));
|
|
@@ -36,7 +37,7 @@ export const getHashParameters = () => new URLSearchParams(getHash().slice(1));
|
|
|
36
37
|
*/
|
|
37
38
|
export const useFin5AppURLHashParameter = (name, initialState) => {
|
|
38
39
|
const [paramValue, setParamValue] = useState(getHashParameters()?.get(name) ?? undefined);
|
|
39
|
-
const setHashParameter = (value) => {
|
|
40
|
+
const setHashParameter = async (value) => {
|
|
40
41
|
const params = getHashParameters();
|
|
41
42
|
if (params.get(name) !== value) {
|
|
42
43
|
if (value === '' || value == null) {
|
|
@@ -45,7 +46,7 @@ export const useFin5AppURLHashParameter = (name, initialState) => {
|
|
|
45
46
|
else {
|
|
46
47
|
params?.set(name, value);
|
|
47
48
|
}
|
|
48
|
-
setHash(params?.toString());
|
|
49
|
+
await setHash(params?.toString());
|
|
49
50
|
setParamValue(value);
|
|
50
51
|
}
|
|
51
52
|
};
|
|
@@ -65,4 +66,54 @@ export const useFin5AppURLHashParameter = (name, initialState) => {
|
|
|
65
66
|
}, []);
|
|
66
67
|
return [paramValue, setHashParameter];
|
|
67
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* Use all the parameters in the hash of a custom app running in FIN 5 as state.
|
|
71
|
+
* @param parameters the initial (optional) values for the parameters
|
|
72
|
+
* @returns the URL parameters and a function to patch the parameters.
|
|
73
|
+
*/
|
|
74
|
+
export const useFin5AppURLHashParameters = (parameters) => {
|
|
75
|
+
const [paramValues, setParamValues] = useState(getHashParameters());
|
|
76
|
+
// Patch the parameters: this updates just the URL parameters passed.
|
|
77
|
+
// If there is a parameter in the hash and not in the function arg, that is left untouched.
|
|
78
|
+
// To remove a parameter in the hash, set it to null or empty string.
|
|
79
|
+
const setHashParameters = async (paramsToUpdate) => {
|
|
80
|
+
const params = getHashParameters();
|
|
81
|
+
Array.from(paramsToUpdate.entries()).forEach(([paramKey, newParamValue]) => {
|
|
82
|
+
if (newParamValue !== params.get(paramKey)) {
|
|
83
|
+
if (newParamValue == null || newParamValue === '') {
|
|
84
|
+
params.delete(paramKey);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
params.set(paramKey, newParamValue);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
await setHash(params.toString());
|
|
92
|
+
setParamValues(params);
|
|
93
|
+
};
|
|
94
|
+
// Initial setup.
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
const hashParameters = getHashParameters();
|
|
97
|
+
if (parameters) {
|
|
98
|
+
Array.from(parameters.entries()).forEach(([paramKey, paramValue]) => {
|
|
99
|
+
if (!hashParameters.has(paramKey) &&
|
|
100
|
+
paramValue != null &&
|
|
101
|
+
paramValue !== '') {
|
|
102
|
+
hashParameters.set(paramKey, paramValue);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
setHashParameters(hashParameters);
|
|
106
|
+
}
|
|
107
|
+
}, []);
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
const onHashChange = () => {
|
|
110
|
+
setParamValues(getHashParameters());
|
|
111
|
+
};
|
|
112
|
+
getTop().addEventListener('hashchange', onHashChange);
|
|
113
|
+
return () => {
|
|
114
|
+
getTop().removeEventListener('hashchange', onHashChange);
|
|
115
|
+
};
|
|
116
|
+
}, []);
|
|
117
|
+
return [paramValues, setHashParameters];
|
|
118
|
+
};
|
|
68
119
|
//# sourceMappingURL=useFin5AppURLHashParameter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFin5AppURLHashParameter.js","sourceRoot":"","sources":["../../src/fin5Top/useFin5AppURLHashParameter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,MAAM,SAAS,GAAG,MAAM,KAAK,GAAG,CAAA;AAMhC,MAAM,MAAM,GAAG,GAA2B,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAA;AACjE,MAAM,MAAM,GAAG,GAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,CAAA;AACnD,MAAM,cAAc,GAAG,GAAa,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAA;AAExD,MAAM,0BAA0B,GAAG,GAAoB,EAAE,CACxD,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAElE,MAAM,eAAe,GAAG,GAAkB,EAAE,CAC3C,0BAA0B,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAExC,MAAM,yBAAyB,GAAG,CAAC,GAAkB,EAAU,EAAE,CAChE,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;AAE/B,MAAM,OAAO,GAAG,GAAW,EAAE;IAC5B,OAAO,SAAS;QACf,CAAC,CAAC,yBAAyB,CAAC,eAAe,EAAE,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,GAAmC,EAAE,CAC/D,MAAM,EAAE,EAAE,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;AAEtC,MAAM,OAAO,GAAG,CAAC,IAAY,
|
|
1
|
+
{"version":3,"file":"useFin5AppURLHashParameter.js","sourceRoot":"","sources":["../../src/fin5Top/useFin5AppURLHashParameter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED