@kwiz/fluentui 1.0.188 → 1.0.189
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 +18 -14
- 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,9 +86,11 @@ export function useStateEX(initialValue, options) {
|
|
|
84
86
|
}
|
|
85
87
|
return result;
|
|
86
88
|
});
|
|
87
|
-
}
|
|
88
|
-
;
|
|
89
|
+
}, []);
|
|
89
90
|
function updateCurrentRef(newValue) {
|
|
91
|
+
//this json clone on html elements for useRefWithState was killing our app
|
|
92
|
+
if (!needToTrackChanges)
|
|
93
|
+
return;
|
|
90
94
|
currentValue.current = newValue;
|
|
91
95
|
currentValueForChecks.current = isPrimitiveValue(newValue) || isFunction(newValue)
|
|
92
96
|
? newValue
|
|
@@ -94,7 +98,7 @@ export function useStateEX(initialValue, options) {
|
|
|
94
98
|
//if we don't clone it, currentValue.current will be a ref to the value in the owner
|
|
95
99
|
//and will be treated as unchanged object, and it will be out of sync
|
|
96
100
|
//this leads to skipUpdateIfSame failing after just 1 unchanged update
|
|
97
|
-
:
|
|
101
|
+
: jsonClone(newValue);
|
|
98
102
|
}
|
|
99
103
|
const setValue = useCallback((newState) => new Promise(resolve => {
|
|
100
104
|
if (!isMounted.current) {
|
|
@@ -104,7 +108,7 @@ export function useStateEX(initialValue, options) {
|
|
|
104
108
|
}
|
|
105
109
|
else {
|
|
106
110
|
resolveState.current.push(resolve);
|
|
107
|
-
const isChanged =
|
|
111
|
+
const isChanged = needToTrackChanges
|
|
108
112
|
? getIsValueChanged(newState) //don't call this if there is no onChange handler and if we don't need to monitor skipUpdateIfSame
|
|
109
113
|
: true;
|
|
110
114
|
if (isFunction(onChange.current))
|
|
@@ -118,7 +122,7 @@ export function useStateEX(initialValue, options) {
|
|
|
118
122
|
resolvePromises();
|
|
119
123
|
}
|
|
120
124
|
}), useEffectOnlyOnMount);
|
|
121
|
-
return [value, setValue, currentValue];
|
|
125
|
+
return useMemo(() => [value, setValue, currentValue], [value, setValue, currentValue]);
|
|
122
126
|
}
|
|
123
127
|
/** use a ref, that can be tracked as useEffect dependency */
|
|
124
128
|
export function useRefWithState(initialValue, stateOptions = { skipUpdateIfSame: true, name: "useRefWithState" },
|
|
@@ -141,14 +145,14 @@ forwardRef) {
|
|
|
141
145
|
forwardRef.current = asRef.current;
|
|
142
146
|
}
|
|
143
147
|
}, [asState]);
|
|
144
|
-
return {
|
|
148
|
+
return useMemo(() => ({
|
|
145
149
|
/** ref object for getting latest value in handlers */
|
|
146
150
|
ref: asRef,
|
|
147
151
|
/** for useEffect dependency */
|
|
148
152
|
value: asState,
|
|
149
153
|
/** for setting on element: ref={e.set} */
|
|
150
154
|
set: setRef
|
|
151
|
-
};
|
|
155
|
+
}), [asRef, asState, setRef]);
|
|
152
156
|
}
|
|
153
157
|
const useStyles = makeStyles({
|
|
154
158
|
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":"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"}
|
|
@@ -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.189",
|
|
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",
|