@tap-payments/os-micro-frontend-shared 0.1.373-test.3-test.4-test.5-test.6-test.7-test.8 → 0.1.373-test.3-test.4-test.5-test.6-test.7-test.8-test.9

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.
@@ -117,10 +117,11 @@ function ViewsDropdown({ open, selectedViewInfo, setSelectedViewInfo, anchorEl,
117
117
  }
118
118
  function goToCreateCustomView(e) {
119
119
  e.stopPropagation();
120
+ const colsToUse = (draftColumns === null || draftColumns === void 0 ? void 0 : draftColumns.length) ? draftColumns : defaultColumns;
121
+ onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(true, colsToUse);
120
122
  setDraftColumns(null);
121
123
  clearOriginalState();
122
124
  forceClose();
123
- onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(true);
124
125
  }
125
126
  return (_jsxs(DropdownStyled, Object.assign({ "data-testid": "ViewsDropdown" }, { children: [_jsx(Popper, Object.assign({ open: open, anchorEl: anchorEl, placement: "bottom-start" }, { children: _jsxs(ListStyled, { children: [_jsx(Typography, Object.assign({ sx: { paddingX: 1.25, py: 1.1, fontWeight: 500, fontSize: 11, color: '#8D8D94' } }, { children: "View" })), _jsx(Divider, {}), views.map((item) => (_jsxs(StyledMenuItem, Object.assign({ onMouseEnter: (e) => {
126
127
  if (item.isCustom)
@@ -144,8 +145,9 @@ function ViewsDropdown({ open, selectedViewInfo, setSelectedViewInfo, anchorEl,
144
145
  e.stopPropagation();
145
146
  if (atCustomViewLimit)
146
147
  return;
147
- discardAndClose();
148
- onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(false);
148
+ const colsToUse = (draftColumns === null || draftColumns === void 0 ? void 0 : draftColumns.length) ? draftColumns : defaultColumns;
149
+ onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(true, colsToUse);
150
+ forceClose();
149
151
  } }, { children: [_jsx(Space, {}), _jsxs(Box, Object.assign({ sx: { display: 'flex', alignItems: 'center', gap: 0.5 } }, { children: [_jsx("img", { src: bluePlusIcon, alt: "", style: { opacity: atCustomViewLimit ? 0.5 : 1, width: 10, height: 10 } }), _jsx("span", Object.assign({ style: { color: atCustomViewLimit ? '#999' : '#1F88D0', fontSize: 11, fontWeight: 500 } }, { children: t('New Custom View') }))] })), _jsx(SpaceAfter, {})] })) }))] }) })), hoveredViewId && submenuAnchorEl && submenuColumns.length > 0 && (_jsx(Menu, Object.assign({ open: true, anchorEl: submenuAnchorEl, placement: "auto-end", onMouseEnter: cancelClose, onMouseLeave: discardAndClose }, { children: _jsxs(SubmenuContainer, { children: [_jsx(ViewsSubmenu, { columns: submenuColumns, allCurrentSelected: allSelected, someCurrentSelected: someSelected, onSelectAll: selectAllColumns, onReset: resetToBaseDefault, onColumnToggle: toggleColumn, onNestedItemToggle: toggleNested, onReorder: reorderColumns, anchorEl: submenuAnchorEl, isModified: modifiedFromBase }), _jsx(SaveCustomViewBox, { children: _jsx(Tooltip, Object.assign({ title: "Limit reached. Delete a view to create a new one.", placement: "left", disableHoverListener: !atCustomViewLimit }, { children: _jsxs(SaveCustomViewInnerBox, Object.assign({ disabled: atCustomViewLimit, onClick: atCustomViewLimit ? undefined : goToCreateCustomView }, { children: [_jsx(Typography, Object.assign({ sx: { fontSize: 11, color: 'text.secondary' } }, { children: "Save as a custom view" })), _jsxs(Box, Object.assign({ sx: { display: 'flex', alignItems: 'center', gap: 0.5 } }, { children: [_jsx("img", { src: bluePlusIcon, alt: "", style: { width: 10, height: 10, opacity: atCustomViewLimit ? 0.5 : 1 } }), _jsx(Typography, Object.assign({ sx: { fontSize: 10, fontWeight: 600, color: atCustomViewLimit ? '#999' : '#1F88D0' } }, { children: "Custom View" }))] }))] })) })) }), _jsxs(ButtonsContainer, { children: [_jsx(Button, Object.assign({ variant: "text", onClick: discardAndClose, sx: CancelButtonSx }, { children: "Cancel" })), _jsx(Button, Object.assign({ variant: "contained", onClick: applyAndClose, sx: OkayButtonSx }, { children: "Okay" }))] })] }) })))] })));
150
152
  }
151
153
  export default React.memo(ViewsDropdown);
@@ -59,7 +59,7 @@ function ViewsMenu({ onViewChange, onCreateCustomView, onEditCustomView, onDelet
59
59
  }));
60
60
  setModifiedModes((current) => (Object.assign(Object.assign({}, current), { [tableMode]: true })));
61
61
  }), [defaultTemplate, tableMode, lang, onEditCustomView, updateDefaultColumns]);
62
- const { anchorEl, isCreateDialogOpen, editingView, selectedViewInfo, shouldUseCurrentState, currentViewColumns, handleViewButtonClick, handleCloseViewDropdown, handleSelectedViewInfo, handleOpenCreateDialog, handleOpenEditDialog, handleCloseCreateDialog, handleSaveView, handleDeleteView, updateSelectedView, } = useViewsMenu({
62
+ const { anchorEl, isCreateDialogOpen, editingView, selectedViewInfo, shouldUseCurrentState, currentViewColumns, initialColumnsForCreate, handleViewButtonClick, handleCloseViewDropdown, handleSelectedViewInfo, handleOpenCreateDialog, handleOpenEditDialog, handleCloseCreateDialog, handleSaveView, handleDeleteView, updateSelectedView, } = useViewsMenu({
63
63
  mode: tableMode,
64
64
  onViewChange,
65
65
  onCreateCustomView,
@@ -71,6 +71,6 @@ function ViewsMenu({ onViewChange, onCreateCustomView, onEditCustomView, onDelet
71
71
  });
72
72
  return (_jsxs(_Fragment, { children: [_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCloseViewDropdown }, { children: _jsxs(ViewWrapper, Object.assign({ sx: { width: '32px' }, "data-testid": "ViewsMenu" }, { children: [_jsx(StyledButton, Object.assign({ title: t('tableView'), "data-testid": "ViewsMenu_button", onClick: handleViewButtonClick }, { children: _jsx(Icon, { src: viewIcon, alt: "view", sx: { width: 14, height: 14 } }) })), _jsx(ViewsDropdown, { open: Boolean(anchorEl), anchorEl: anchorEl, onClose: handleCloseViewDropdown, defaultModified: (_a = modifiedModes[tableMode]) !== null && _a !== void 0 ? _a : false, onMarkDefaultModified: () => {
73
73
  setModifiedModes((current) => (Object.assign(Object.assign({}, current), { [tableMode]: true })));
74
- }, setSelectedViewInfo: handleSelectedViewInfo, selectedViewInfo: selectedViewInfo, onCreateCustomView: handleOpenCreateDialog, customViews: customViews, onEditCustomView: handleOpenEditDialog, onSaveDefaultColumns: handleSaveDefaultColumns, defaultColumns: defaultColumns, setDefaultColumns: updateDefaultColumns, updateSelectedView: updateSelectedView, baseDefaultColumns: baseDefaultColumns, mode: tableMode, defaultTemplate: defaultTemplate })] })) })), _jsx(CreateViewDialog, { open: isCreateDialogOpen, onClose: handleCloseCreateDialog, availableColumns: defaultColumns, defaultColumns: defaultColumns, onCreate: handleSaveView, editingView: editingView, onDelete: handleDeleteView, tableViews: shouldUseCurrentState ? currentViewColumns : undefined, mode: tableMode })] }));
74
+ }, setSelectedViewInfo: handleSelectedViewInfo, selectedViewInfo: selectedViewInfo, onCreateCustomView: handleOpenCreateDialog, customViews: customViews, onEditCustomView: handleOpenEditDialog, onSaveDefaultColumns: handleSaveDefaultColumns, defaultColumns: defaultColumns, setDefaultColumns: updateDefaultColumns, updateSelectedView: updateSelectedView, baseDefaultColumns: baseDefaultColumns, mode: tableMode, defaultTemplate: defaultTemplate })] })) })), _jsx(CreateViewDialog, { open: isCreateDialogOpen, onClose: handleCloseCreateDialog, availableColumns: defaultColumns, defaultColumns: defaultColumns, onCreate: handleSaveView, editingView: editingView, onDelete: handleDeleteView, tableViews: shouldUseCurrentState ? (initialColumnsForCreate !== null && initialColumnsForCreate !== void 0 ? initialColumnsForCreate : currentViewColumns) : undefined, mode: tableMode })] }));
75
75
  }
76
76
  export default memo(ViewsMenu);
@@ -31,10 +31,11 @@ export declare const useViewsMenu: ({ mode, onViewChange, onCreateCustomView, on
31
31
  shouldUseCurrentState: boolean;
32
32
  selectedView: ViewMenuItem | undefined;
33
33
  currentViewColumns: ColumnViewProps[];
34
+ initialColumnsForCreate: ColumnViewProps[] | null;
34
35
  handleViewButtonClick: (event: MouseEvent<HTMLDivElement>) => void;
35
36
  handleCloseViewDropdown: () => void;
36
37
  handleSelectedViewInfo: (selected: ViewOption, viewMenuItem?: ViewMenuItem) => void;
37
- handleOpenCreateDialog: (useCurrentState?: boolean) => void;
38
+ handleOpenCreateDialog: (useCurrentState?: boolean, initialColumns?: ColumnViewProps[]) => void;
38
39
  handleOpenEditDialog: (view: ViewMenuItem) => void;
39
40
  handleCloseCreateDialog: () => void;
40
41
  handleSaveView: (data: {
@@ -20,6 +20,8 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
20
20
  const [selectedTemplateId, setSelectedTemplateId] = useState(null);
21
21
  /** After create, we may receive templateId from parent; once allTemplates includes it, select that view. */
22
22
  const [pendingSelectedTemplateId, setPendingSelectedTemplateId] = useState(null);
23
+ /** When opening create dialog with "current state", dropdown can pass exact columns (e.g. unsaved draft) to use. */
24
+ const [initialColumnsForCreate, setInitialColumnsForCreate] = useState(null);
23
25
  const [currentViewColumns, setCurrentViewColumns] = useState([]);
24
26
  const hasInitializedRef = useRef(false);
25
27
  const getViewForParent = useCallback((view) => {
@@ -147,9 +149,10 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
147
149
  setSelectedViewInfo({ id: viewWithNewRefs.id, label: viewWithNewRefs.label });
148
150
  onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(viewWithNewRefs));
149
151
  }, [onViewChange, getViewForParent]);
150
- const handleOpenCreateDialog = useCallback((useCurrentState = false) => {
152
+ const handleOpenCreateDialog = useCallback((useCurrentState = false, initialColumns) => {
151
153
  setEditingView(null);
152
154
  setShouldUseCurrentState(useCurrentState);
155
+ setInitialColumnsForCreate(initialColumns !== null && initialColumns !== void 0 ? initialColumns : null);
153
156
  setIsCreateDialogOpen(true);
154
157
  setAnchorEl(null);
155
158
  }, []);
@@ -162,6 +165,7 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
162
165
  setIsCreateDialogOpen(false);
163
166
  setEditingView(null);
164
167
  setShouldUseCurrentState(false);
168
+ setInitialColumnsForCreate(null);
165
169
  }, []);
166
170
  const handleSaveView = useCallback((data) => __awaiter(void 0, void 0, void 0, function* () {
167
171
  if (editingView) {
@@ -205,6 +209,7 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
205
209
  shouldUseCurrentState,
206
210
  selectedView,
207
211
  currentViewColumns,
212
+ initialColumnsForCreate,
208
213
  handleViewButtonClick,
209
214
  handleCloseViewDropdown,
210
215
  handleSelectedViewInfo,
@@ -137,7 +137,7 @@ export interface ViewsDropdownProps {
137
137
  onClose?: () => void;
138
138
  defaultModified?: boolean;
139
139
  onMarkDefaultModified?: () => void;
140
- onCreateCustomView?: (useCurrentState?: boolean) => void;
140
+ onCreateCustomView?: (useCurrentState?: boolean, initialColumns?: ColumnViewProps[]) => void;
141
141
  customViews?: ViewMenuItem[];
142
142
  onEditCustomView?: (view: ViewMenuItem) => void;
143
143
  onSaveDefaultColumns?: (columns: ColumnViewProps[]) => void;
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.373-test.3-test.4-test.5-test.6-test.7-test.8",
5
- "testVersion": 8,
4
+ "version": "0.1.373-test.3-test.4-test.5-test.6-test.7-test.8-test.9",
5
+ "testVersion": 9,
6
6
  "type": "module",
7
7
  "main": "build/index.js",
8
8
  "module": "build/index.js",