@tap-payments/os-micro-frontend-shared 0.1.415-test.1-test.2 → 0.1.415-test.1-test.2-test.3
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.
|
@@ -18,11 +18,17 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
|
|
|
18
18
|
const [selectedTemplateId, setSelectedTemplateId] = useState(null);
|
|
19
19
|
const hasInitializedRef = useRef(false);
|
|
20
20
|
const lastModeRef = useRef(null);
|
|
21
|
+
const onViewChangeRef = useRef(onViewChange);
|
|
22
|
+
onViewChangeRef.current = onViewChange;
|
|
21
23
|
const getViewForParent = useCallback((view) => {
|
|
22
24
|
var _a;
|
|
23
25
|
const selectedColumns = ((_a = view.submenu) === null || _a === void 0 ? void 0 : _a.filter((col) => col.selected)) || [];
|
|
24
26
|
return Object.assign(Object.assign({}, view), { submenu: selectedColumns, columns: selectedColumns.map((col) => col.name) });
|
|
25
27
|
}, []);
|
|
28
|
+
const notifyViewChange = useCallback((view) => {
|
|
29
|
+
var _a;
|
|
30
|
+
(_a = onViewChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onViewChangeRef, view ? getViewForParent(view) : undefined);
|
|
31
|
+
}, [getViewForParent]);
|
|
26
32
|
const selectedView = useMemo(() => {
|
|
27
33
|
if (!selectedTemplateId)
|
|
28
34
|
return defaultTemplate;
|
|
@@ -38,7 +44,9 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
|
|
|
38
44
|
label: (selectedView === null || selectedView === void 0 ? void 0 : selectedView.label) || 'Default',
|
|
39
45
|
};
|
|
40
46
|
}, [selectedView]);
|
|
47
|
+
// Init: set default template id and notify parent once (no effect that depends on selectedView)
|
|
41
48
|
useEffect(() => {
|
|
49
|
+
var _a;
|
|
42
50
|
if (hasInitializedRef.current)
|
|
43
51
|
return;
|
|
44
52
|
if (!defaultTemplate)
|
|
@@ -46,7 +54,8 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
|
|
|
46
54
|
setSelectedTemplateId(defaultTemplate.templateId || null);
|
|
47
55
|
hasInitializedRef.current = true;
|
|
48
56
|
lastModeRef.current = mode;
|
|
49
|
-
|
|
57
|
+
(_a = onViewChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onViewChangeRef, getViewForParent(defaultTemplate));
|
|
58
|
+
}, [defaultTemplate, mode, getViewForParent]);
|
|
50
59
|
useEffect(() => {
|
|
51
60
|
if (!hasInitializedRef.current)
|
|
52
61
|
return;
|
|
@@ -65,14 +74,6 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
|
|
|
65
74
|
setSelectedTemplateId(null);
|
|
66
75
|
}
|
|
67
76
|
}, [mode, selectedTemplateId, allTemplates, defaultTemplate]);
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
if (selectedView) {
|
|
70
|
-
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(selectedView));
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(undefined);
|
|
74
|
-
}
|
|
75
|
-
}, [selectedView, onViewChange, getViewForParent]);
|
|
76
77
|
const handleViewButtonClick = useCallback((event) => {
|
|
77
78
|
setAnchorEl((current) => (current ? null : event.currentTarget));
|
|
78
79
|
}, []);
|
|
@@ -82,8 +83,10 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
|
|
|
82
83
|
const handleSelectedViewInfo = useCallback((selected, viewMenuItem) => {
|
|
83
84
|
const templateId = (viewMenuItem === null || viewMenuItem === void 0 ? void 0 : viewMenuItem.isCustom) ? viewMenuItem.templateId || viewMenuItem.id : (viewMenuItem === null || viewMenuItem === void 0 ? void 0 : viewMenuItem.templateId) || null;
|
|
84
85
|
setSelectedTemplateId(templateId);
|
|
86
|
+
if (viewMenuItem)
|
|
87
|
+
notifyViewChange(viewMenuItem);
|
|
85
88
|
handleCloseViewDropdown();
|
|
86
|
-
}, [handleCloseViewDropdown]);
|
|
89
|
+
}, [handleCloseViewDropdown, notifyViewChange]);
|
|
87
90
|
const updateSelectedView = useCallback((updatedView) => {
|
|
88
91
|
const templateId = updatedView.templateId || updatedView.id;
|
|
89
92
|
setSelectedTemplateId((prev) => (prev !== templateId ? templateId : prev));
|
|
@@ -126,8 +129,10 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
|
|
|
126
129
|
yield (onDeleteCustomView === null || onDeleteCustomView === void 0 ? void 0 : onDeleteCustomView(templateId));
|
|
127
130
|
if (selectedTemplateId === templateId) {
|
|
128
131
|
setSelectedTemplateId((defaultTemplate === null || defaultTemplate === void 0 ? void 0 : defaultTemplate.templateId) || null);
|
|
132
|
+
if (defaultTemplate)
|
|
133
|
+
notifyViewChange(defaultTemplate);
|
|
129
134
|
}
|
|
130
|
-
}), [allTemplates, onDeleteCustomView, selectedTemplateId, defaultTemplate]);
|
|
135
|
+
}), [allTemplates, onDeleteCustomView, selectedTemplateId, defaultTemplate, notifyViewChange]);
|
|
131
136
|
return {
|
|
132
137
|
anchorEl,
|
|
133
138
|
isCreateDialogOpen,
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tap-payments/os-micro-frontend-shared",
|
|
3
3
|
"description": "Shared components and utilities for Tap Payments micro frontends",
|
|
4
|
-
"version": "0.1.415-test.1-test.2",
|
|
5
|
-
"testVersion":
|
|
4
|
+
"version": "0.1.415-test.1-test.2-test.3",
|
|
5
|
+
"testVersion": 3,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "build/index.js",
|
|
8
8
|
"module": "build/index.js",
|