@kwiz/fluentui 1.0.188 → 1.0.190
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/helpers/block-nav.js +16 -15
- package/dist/helpers/block-nav.js.map +1 -1
- package/dist/helpers/hooks.d.ts +2 -0
- package/dist/helpers/hooks.js +20 -15
- package/dist/helpers/hooks.js.map +1 -1
- package/dist/helpers/use-track-changes.js +14 -9
- package/dist/helpers/use-track-changes.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { isNotEmptyArray, isNotEmptyString, isNullOrEmptyString, stringEqualsOrEmpty } from "@kwiz/common";
|
|
3
|
-
import { useCallback, useEffect } from "react";
|
|
3
|
+
import { useCallback, useEffect, useMemo } from "react";
|
|
4
4
|
import { Prompter } from "../controls/prompt";
|
|
5
5
|
import { useEffectOnlyOnMount, useStateEX } from "./hooks";
|
|
6
6
|
/** @deprecated replace with useTrackChanges
|
|
@@ -19,6 +19,16 @@ export function useBlockNav() {
|
|
|
19
19
|
const getMessages = useCallback(() => {
|
|
20
20
|
return getMessagesArr().join();
|
|
21
21
|
}, useEffectOnlyOnMount);
|
|
22
|
+
const setMessage = useCallback((id, message) => {
|
|
23
|
+
if (!stringEqualsOrEmpty(message, blockNavMessagesRef.current[id])) {
|
|
24
|
+
const current = Object.assign({}, blockNavMessagesRef.current);
|
|
25
|
+
if (isNotEmptyString(message))
|
|
26
|
+
current[id] = message;
|
|
27
|
+
else
|
|
28
|
+
delete current[id];
|
|
29
|
+
setBlockNavMessages(current);
|
|
30
|
+
}
|
|
31
|
+
}, [setBlockNavMessages]);
|
|
22
32
|
const onNav = useCallback((nav) => {
|
|
23
33
|
let messages = getMessagesArr();
|
|
24
34
|
if (isNotEmptyArray(messages)) {
|
|
@@ -59,20 +69,11 @@ export function useBlockNav() {
|
|
|
59
69
|
// Remove event listener on cleanup
|
|
60
70
|
return () => window.removeEventListener("beforeunload", handleBeforeUnload);
|
|
61
71
|
}, useEffectOnlyOnMount);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const current = Object.assign({}, blockNavMessagesRef.current);
|
|
66
|
-
if (isNotEmptyString(message))
|
|
67
|
-
current[id] = message;
|
|
68
|
-
else
|
|
69
|
-
delete current[id];
|
|
70
|
-
setBlockNavMessages(current);
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
/** single page applications, call this to navigate if ok */
|
|
72
|
+
const navPrompt = useMemo(() => _prompt ? _jsx(Prompter, Object.assign({}, _prompt)) : undefined, [_prompt]);
|
|
73
|
+
return useMemo(() => ({
|
|
74
|
+
setMessage,
|
|
74
75
|
onNav,
|
|
75
|
-
navPrompt
|
|
76
|
-
};
|
|
76
|
+
navPrompt
|
|
77
|
+
}), [setMessage, onNav, navPrompt]);
|
|
77
78
|
}
|
|
78
79
|
//# sourceMappingURL=block-nav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-nav.js","sourceRoot":"","sources":["../../src/helpers/block-nav.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAe,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"block-nav.js","sourceRoot":"","sources":["../../src/helpers/block-nav.tsx"],"names":[],"mappings":"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"}
|
package/dist/helpers/hooks.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { HTMLAttributes, MutableRefObject, SetStateAction } from "react";
|
|
|
2
2
|
/** Empty array ensures that effect is only run on mount */
|
|
3
3
|
export declare const useEffectOnlyOnMount: any[];
|
|
4
4
|
type stateExOptions<ValueType> = {
|
|
5
|
+
/** static: do not change between renders */
|
|
5
6
|
onChange?: (newValue: ValueType, isValueChanged: boolean) => ValueType;
|
|
7
|
+
/** static: do not change between renders. will not set state if value did not change */
|
|
6
8
|
skipUpdateIfSame?: boolean;
|
|
7
9
|
name?: string;
|
|
8
10
|
};
|
package/dist/helpers/hooks.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { makeStyles } from "@fluentui/react-components";
|
|
2
|
-
import { CommonLogger, isFunction, isNotEmptyArray, isNullOrEmptyString, isNullOrUndefined, isPrimitiveValue, jsonStringify, LoggerLevel, objectsEqual } from "@kwiz/common";
|
|
3
|
-
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { CommonLogger, isFunction, isNotEmptyArray, isNullOrEmptyString, isNullOrUndefined, isPrimitiveValue, jsonClone, jsonStringify, LoggerLevel, objectsEqual } from "@kwiz/common";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { mixins } from "../styles/styles";
|
|
5
5
|
/** Empty array ensures that effect is only run on mount */
|
|
6
6
|
export const useEffectOnlyOnMount = [];
|
|
@@ -28,9 +28,11 @@ function extractStringValue(e) {
|
|
|
28
28
|
export function useStateEX(initialValue, options) {
|
|
29
29
|
options = options || {};
|
|
30
30
|
const name = options.name || '';
|
|
31
|
-
let logger = new CommonLogger(`useStateWithTrack${isNullOrEmptyString(name) ? '' : ` ${name}`}`);
|
|
31
|
+
let logger = useMemo(() => new CommonLogger(`useStateWithTrack${isNullOrEmptyString(name) ? '' : ` ${name}`}`), [name]);
|
|
32
32
|
logger.i.setLevel(LoggerLevel.WARN);
|
|
33
33
|
const [value, setValueInState] = useState(initialValue);
|
|
34
|
+
//you can't flip those options between renders
|
|
35
|
+
const needToTrackChanges = useMemo(() => options.skipUpdateIfSame || isFunction(options.onChange), []);
|
|
34
36
|
const currentValue = useRef(initialValue); //must set initial value don't rely on useEffect to do it since some dependents might try to access it on first load
|
|
35
37
|
//json clone complex/ref values so we can compare if value changed, in case caller makes chagnes on the value object directly.
|
|
36
38
|
const currentValueForChecks = useRef();
|
|
@@ -39,6 +41,7 @@ export function useStateEX(initialValue, options) {
|
|
|
39
41
|
}, useEffectOnlyOnMount);
|
|
40
42
|
//keep a ref to onChange so the caller's latet state is accessible
|
|
41
43
|
const onChange = useRef(options.onChange);
|
|
44
|
+
//keep it in sync
|
|
42
45
|
onChange.current = options.onChange;
|
|
43
46
|
/** make this a collection in case several callers are awaiting the same propr update */
|
|
44
47
|
const resolveState = useRef([]);
|
|
@@ -49,18 +52,17 @@ export function useStateEX(initialValue, options) {
|
|
|
49
52
|
isMounted.current = false;
|
|
50
53
|
};
|
|
51
54
|
}, useEffectOnlyOnMount);
|
|
52
|
-
|
|
55
|
+
const resolvePromises = useCallback(() => {
|
|
53
56
|
if (isNotEmptyArray(resolveState.current)) {
|
|
54
57
|
let resolvers = resolveState.current.slice();
|
|
55
58
|
resolveState.current = []; //clear
|
|
56
59
|
resolvers.map(r => r(currentValue.current));
|
|
57
60
|
}
|
|
58
|
-
}
|
|
59
|
-
;
|
|
61
|
+
}, []);
|
|
60
62
|
useEffect(() => {
|
|
61
63
|
resolvePromises();
|
|
62
64
|
}, [value]);
|
|
63
|
-
|
|
65
|
+
const getIsValueChanged = useCallback((newValue) => {
|
|
64
66
|
let error = null;
|
|
65
67
|
let result;
|
|
66
68
|
try {
|
|
@@ -84,17 +86,20 @@ export function useStateEX(initialValue, options) {
|
|
|
84
86
|
}
|
|
85
87
|
return result;
|
|
86
88
|
});
|
|
87
|
-
}
|
|
88
|
-
;
|
|
89
|
+
}, []);
|
|
89
90
|
function updateCurrentRef(newValue) {
|
|
90
|
-
currentValue.current = newValue;
|
|
91
|
+
currentValue.current = newValue; //always update this ref- it is being used by callers
|
|
92
|
+
//this json clone on html elements for useRefWithState was killing our app
|
|
93
|
+
//we don't need to clone currentValueForChecks if we don't have to
|
|
94
|
+
if (!needToTrackChanges)
|
|
95
|
+
return;
|
|
91
96
|
currentValueForChecks.current = isPrimitiveValue(newValue) || isFunction(newValue)
|
|
92
97
|
? newValue
|
|
93
98
|
//fix skipUpdateIfSame for complex objects
|
|
94
99
|
//if we don't clone it, currentValue.current will be a ref to the value in the owner
|
|
95
100
|
//and will be treated as unchanged object, and it will be out of sync
|
|
96
101
|
//this leads to skipUpdateIfSame failing after just 1 unchanged update
|
|
97
|
-
:
|
|
102
|
+
: jsonClone(newValue);
|
|
98
103
|
}
|
|
99
104
|
const setValue = useCallback((newState) => new Promise(resolve => {
|
|
100
105
|
if (!isMounted.current) {
|
|
@@ -104,7 +109,7 @@ export function useStateEX(initialValue, options) {
|
|
|
104
109
|
}
|
|
105
110
|
else {
|
|
106
111
|
resolveState.current.push(resolve);
|
|
107
|
-
const isChanged =
|
|
112
|
+
const isChanged = needToTrackChanges
|
|
108
113
|
? getIsValueChanged(newState) //don't call this if there is no onChange handler and if we don't need to monitor skipUpdateIfSame
|
|
109
114
|
: true;
|
|
110
115
|
if (isFunction(onChange.current))
|
|
@@ -118,7 +123,7 @@ export function useStateEX(initialValue, options) {
|
|
|
118
123
|
resolvePromises();
|
|
119
124
|
}
|
|
120
125
|
}), useEffectOnlyOnMount);
|
|
121
|
-
return [value, setValue, currentValue];
|
|
126
|
+
return useMemo(() => [value, setValue, currentValue], [value, setValue, currentValue]);
|
|
122
127
|
}
|
|
123
128
|
/** use a ref, that can be tracked as useEffect dependency */
|
|
124
129
|
export function useRefWithState(initialValue, stateOptions = { skipUpdateIfSame: true, name: "useRefWithState" },
|
|
@@ -141,14 +146,14 @@ forwardRef) {
|
|
|
141
146
|
forwardRef.current = asRef.current;
|
|
142
147
|
}
|
|
143
148
|
}, [asState]);
|
|
144
|
-
return {
|
|
149
|
+
return useMemo(() => ({
|
|
145
150
|
/** ref object for getting latest value in handlers */
|
|
146
151
|
ref: asRef,
|
|
147
152
|
/** for useEffect dependency */
|
|
148
153
|
value: asState,
|
|
149
154
|
/** for setting on element: ref={e.set} */
|
|
150
155
|
set: setRef
|
|
151
|
-
};
|
|
156
|
+
}), [asRef, asState, setRef]);
|
|
152
157
|
}
|
|
153
158
|
const useStyles = makeStyles({
|
|
154
159
|
clickable: mixins.clickable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/helpers/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/helpers/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxL,OAAO,EAAoD,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5H,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAUvC,SAAS,kBAAkB,CAAC,CAAM;IAC9B,IAAI,CAAC;QACD,IAAI,CAAC,YAAY,WAAW;YACxB,OAAO,CAAC,CAAC,SAAS,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,IAAI,CAAC;QACD,IAAI,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA,wDAAwD;;YACnG,OAAO,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,IAAI,CAAC;QACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,OAAO,EAAE,CAAC;AACd,CAAC;AACD,uIAAuI;AACvI,MAAM,UAAU,UAAU,CAAY,YAAuB,EAAE,OAAmC;IAE9F,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IAEhC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,oBAAoB,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxH,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAY,YAAY,CAAC,CAAC;IAEnE,8CAA8C;IAC9C,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvG,MAAM,YAAY,GAAG,MAAM,CAAY,YAAY,CAAC,CAAC,CAAA,oHAAoH;IACzK,8HAA8H;IAC9H,MAAM,qBAAqB,GAAG,MAAM,EAAa,CAAC;IAClD,SAAS,CAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAEzB,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,iBAAiB;IACjB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAEpC,wFAAwF;IACxF,MAAM,YAAY,GAAG,MAAM,CAA6B,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhC,SAAS,CAAC,GAAG,EAAE;QACX,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAEzB,OAAO,GAAG,EAAE;YACR,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,CAAC,CAAC;IACN,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAEzB,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,IAAI,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,IAAI,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,YAAY,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA,OAAO;YACjC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,CAAC,GAAG,EAAE;QACX,eAAe,EAAE,CAAC;IACtB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,QAAmB,EAAW,EAAE;QACnE,IAAI,KAAK,GAAU,IAAI,CAAC;QACxB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,QAAkB,EAAE,qBAAqB,CAAC,OAAiB,CAAC,EAAE,CAAC;gBAC7E,MAAM,GAAG,IAAI,CAAC;YAClB,CAAC;iBACI,CAAC;gBACF,MAAM,GAAG,KAAK,CAAC;YACnB,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,EAAE;YAC5E,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC9C,GAAG,CAAC,OAAO,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjE,GAAG,CAAC,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC5C,IAAI,KAAK;oBAAE,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,gBAAgB,CAAC,QAAmB;QACzC,YAAY,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAA,qDAAqD;QAErF,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,CAAC,kBAAkB;YAAE,OAAO;QAEhC,qBAAqB,CAAC,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC;YAC9E,CAAC,CAAC,QAAQ;YACV,0CAA0C;YAC1C,oFAAoF;YACpF,qEAAqE;YACrE,sEAAsE;YACtE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAc,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAmB,EAAE,EAAE,CAAC,IAAI,OAAO,CAAY,OAAO,CAAC,EAAE;QACnF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACrB,6BAA6B;YAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACtC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;aACI,CAAC;YACF,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,kBAAkB;gBAChC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA,kGAAkG;gBAC/H,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC5B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAErD,mCAAmC;YACnC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAE3B,WAAW;YACX,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,SAAS;gBACtC,eAAe,CAAC,QAAQ,CAAC,CAAC;iBAC1B,6EAA6E;gBAC7E,eAAe,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAE1B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,EAChD,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,eAAe,CAAI,YAAgB,EAC/C,eAAkC,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE;AACrF,uFAAuF;AACvF,UAAyB;IACzB,IAAI,KAAK,GAAG,MAAM,CAAI,YAAY,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAI,YAAY,EAAE,YAAY,CAAC,CAAC;IACpE,sFAAsF;IACtF,SAAS,MAAM,CAAC,QAAW;QACvB,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QACzB,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAAA,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,yBAAyB;QACzB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,UAAU,CAAC,UAAU,CAAC;gBAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;gBAChD,UAAwC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC3E,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClB,sDAAsD;QACtD,GAAG,EAAE,KAAK;QACV,+BAA+B;QAC/B,KAAK,EAAE,OAAO;QACd,0CAA0C;QAC1C,GAAG,EAAE,MAAM;KACd,CAAC,EACE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,SAAS,GAAG,UAAU,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,SAAS;CAC9B,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,UAAU,eAAe;IAC3B,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAE7B,MAAM,KAAK,GAAmC;QAC1C,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC,CAAC,EAAE;YACX,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO;gBAAG,CAAC,CAAC,MAAyB,CAAC,KAAK,EAAE,CAAC;QAChE,CAAC;KACJ,CAAC;IAEF,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
11
|
import { Toast, Toaster, ToastTitle, useId, useToastController } from "@fluentui/react-components";
|
|
12
12
|
import { GetError, isBoolean } from "@kwiz/common";
|
|
13
|
-
import { useCallback, useState } from "react";
|
|
13
|
+
import { useCallback, useMemo, useState } from "react";
|
|
14
14
|
import { PleaseWait } from "../controls/please-wait";
|
|
15
15
|
import { useBlockNav } from "./block-nav";
|
|
16
16
|
import { useKWIZFluentContext } from "./context-internal";
|
|
@@ -18,9 +18,8 @@ import { useEffectOnlyOnMount, useStateEX } from "./hooks";
|
|
|
18
18
|
import { useAlerts } from "./use-alerts";
|
|
19
19
|
/* Provides useful helpers for tracking if control has changes, and handling the save changes with progress bar and on success/fail messages. */
|
|
20
20
|
export function useTrackChanges({ blockNav } = {}) {
|
|
21
|
-
var _a, _b;
|
|
22
21
|
const ctx = useKWIZFluentContext();
|
|
23
|
-
const unsavedChangesPrompt = ((_b = (_a = ctx.strings) === null || _a === void 0 ? void 0 : _a.prompt_unsaved_changes) === null || _b === void 0 ? void 0 : _b.call(_a)) || "You will lose unsaved changes. Continue?";
|
|
22
|
+
const unsavedChangesPrompt = useMemo(() => { var _a, _b; return ((_b = (_a = ctx.strings) === null || _a === void 0 ? void 0 : _a.prompt_unsaved_changes) === null || _b === void 0 ? void 0 : _b.call(_a)) || "You will lose unsaved changes. Continue?"; }, [ctx.strings]);
|
|
24
23
|
const alerts = useAlerts();
|
|
25
24
|
const [showProgress, setShowProgress] = useState(false);
|
|
26
25
|
//we just need it to register the window unload event... no need for its element or onNav we handle it in this element.
|
|
@@ -65,12 +64,18 @@ export function useTrackChanges({ blockNav } = {}) {
|
|
|
65
64
|
else
|
|
66
65
|
return handler();
|
|
67
66
|
}, [hasChanges, alerts]);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
const trackChanges = useMemo(() => ({
|
|
68
|
+
hasChanges,
|
|
69
|
+
hasChangesRef,
|
|
70
|
+
setHasChanges,
|
|
71
|
+
onSaveChanges,
|
|
72
|
+
doIfNoChanges
|
|
73
|
+
}), [hasChanges, hasChangesRef, setHasChanges, onSaveChanges, doIfNoChanges]);
|
|
74
|
+
const trackChangesElement = useMemo(() => (_jsxs(_Fragment, { children: [alerts.alertPrompt, showProgress && _jsx(PleaseWait, Object.assign({}, (isBoolean(showProgress) ? {} : showProgress))), _jsx(Toaster, { toasterId: toasterId })] })), [alerts.alertPrompt, showProgress, toasterId]);
|
|
75
|
+
return useMemo(() => ({
|
|
76
|
+
trackChanges,
|
|
77
|
+
trackChangesElement
|
|
78
|
+
}), [trackChanges, trackChangesElement]);
|
|
74
79
|
}
|
|
75
80
|
/** @deprecated renamed to useTrackChanges */
|
|
76
81
|
export function useEditableControl() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-track-changes.js","sourceRoot":"","sources":["../../src/helpers/use-track-changes.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAoB,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-track-changes.js","sourceRoot":"","sources":["../../src/helpers/use-track-changes.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kwiz/fluentui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.190",
|
|
4
4
|
"description": "KWIZ common controls for FluentUI",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@fluentui/react-datepicker-compat": "^0.4.53",
|
|
67
67
|
"@fluentui/react-timepicker-compat": "^0.2.42",
|
|
68
|
-
"@kwiz/common": "^1.0.
|
|
68
|
+
"@kwiz/common": "^1.0.224",
|
|
69
69
|
"@mismerge/core": "^1.2.1",
|
|
70
70
|
"@mismerge/react": "^1.0.1",
|
|
71
71
|
"@monaco-editor/react": "^4.7.0",
|