@snapdragonsnursery/react-components 1.19.4 → 1.19.5
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/package.json +1 -1
- package/src/ChildSearchModal.jsx +15 -5
package/package.json
CHANGED
package/src/ChildSearchModal.jsx
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {
|
|
2
|
+
useState,
|
|
3
|
+
useEffect,
|
|
4
|
+
useRef,
|
|
5
|
+
useCallback,
|
|
6
|
+
useMemo,
|
|
7
|
+
} from "react";
|
|
2
8
|
import { useMsal } from "@azure/msal-react";
|
|
3
9
|
import { trackEvent } from "./telemetry";
|
|
4
10
|
|
|
@@ -25,7 +31,7 @@ const ChildSearchModal = ({
|
|
|
25
31
|
showSiteFilter = true, // Whether to show site filter dropdown
|
|
26
32
|
multiSelect = false, // Enable multiple child selection
|
|
27
33
|
maxSelections = null, // Maximum number of children that can be selected (null = unlimited)
|
|
28
|
-
selectedChildren
|
|
34
|
+
selectedChildren, // Array of already selected children (for multi-select mode)
|
|
29
35
|
// Auth options: provide token directly or a function to fetch it
|
|
30
36
|
authToken = null,
|
|
31
37
|
getAccessToken = null,
|
|
@@ -60,8 +66,12 @@ const ChildSearchModal = ({
|
|
|
60
66
|
});
|
|
61
67
|
|
|
62
68
|
// State for multi-select mode
|
|
69
|
+
const initialSelectedChildren = useMemo(
|
|
70
|
+
() => selectedChildren ?? [],
|
|
71
|
+
[selectedChildren]
|
|
72
|
+
);
|
|
63
73
|
const [selectedChildrenState, setSelectedChildrenState] = useState(
|
|
64
|
-
|
|
74
|
+
initialSelectedChildren
|
|
65
75
|
);
|
|
66
76
|
|
|
67
77
|
const { instance, accounts } = useMsal();
|
|
@@ -281,9 +291,9 @@ const ChildSearchModal = ({
|
|
|
281
291
|
// Reset selection when modal opens (for multi-select mode)
|
|
282
292
|
useEffect(() => {
|
|
283
293
|
if (isOpen && multiSelect) {
|
|
284
|
-
setSelectedChildrenState(
|
|
294
|
+
setSelectedChildrenState(initialSelectedChildren);
|
|
285
295
|
}
|
|
286
|
-
}, [isOpen, multiSelect,
|
|
296
|
+
}, [isOpen, multiSelect, initialSelectedChildren]);
|
|
287
297
|
|
|
288
298
|
const handleChildSelect = (child) => {
|
|
289
299
|
if (multiSelect) {
|