@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
- }, [defaultTemplate, mode]);
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": 2,
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",