@tap-payments/os-micro-frontend-shared 0.1.372-test.2-test.3 → 0.1.372-test.2-test.3-test.4-test.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/build/components/TableHeader/TableView/CreateViewDialog.js +3 -1
- package/build/components/TableHeader/TableView/ViewSelector.d.ts +1 -1
- package/build/components/TableHeader/TableView/ViewSelector.js +4 -7
- package/build/components/TableHeader/TableView/ViewsDropdown.js +21 -5
- package/build/components/TableHeader/TableView/hooks/useViewSelector.d.ts +2 -2
- package/build/components/TableHeader/TableView/hooks/useViewSelector.js +5 -5
- package/build/components/TableHeader/TableView/hooks/useViewsManager.d.ts +1 -1
- package/build/components/TableHeader/TableView/hooks/useViewsManager.js +41 -20
- package/build/components/TableHeader/TableView/index.js +2 -0
- package/build/components/TableHeader/TableView/types.d.ts +19 -14
- package/build/components/TableHeader/TableView/utils.d.ts +5 -1
- package/build/components/TableHeader/TableView/utils.js +8 -3
- package/build/components/TableHeader/type.d.ts +1 -1
- package/package.json +2 -2
|
@@ -40,7 +40,9 @@ function CreateViewDialog({ open, onClose, onCreate, availableColumns = [], isLo
|
|
|
40
40
|
const handleDelete = () => __awaiter(this, void 0, void 0, function* () {
|
|
41
41
|
if (!editingView)
|
|
42
42
|
return;
|
|
43
|
-
|
|
43
|
+
const templateId = editingView.templateId || editingView.id;
|
|
44
|
+
console.log({ templateId });
|
|
45
|
+
yield (onDelete === null || onDelete === void 0 ? void 0 : onDelete(templateId));
|
|
44
46
|
onClose();
|
|
45
47
|
});
|
|
46
48
|
if (!open)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { ViewSelectorProps } from './types';
|
|
3
|
-
declare function ViewSelector({ onViewChange, setIsViewVisible, setTableViews, tableViews: externalTableViews, resetTableViews, customViews: externalCustomViews, onCreateCustomView, onEditCustomView, onDeleteCustomView, tableMode, onTableViewsChange,
|
|
3
|
+
declare function ViewSelector({ onViewChange, setIsViewVisible, setTableViews, tableViews: externalTableViews, resetTableViews, customViews: externalCustomViews, onCreateCustomView, onEditCustomView, onDeleteCustomView, tableMode, onTableViewsChange, onCustomViewsChange, templates, lang, }: ViewSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare const _default: import("react").MemoExoticComponent<typeof ViewSelector>;
|
|
5
5
|
export default _default;
|
|
@@ -9,15 +9,12 @@ import CreateViewDialog from './CreateViewDialog';
|
|
|
9
9
|
import { ViewWrapper } from './styles';
|
|
10
10
|
import { useViewsManager } from './hooks';
|
|
11
11
|
import { useViewSelector } from './hooks/useViewSelector';
|
|
12
|
-
function ViewSelector({ onViewChange, setIsViewVisible, setTableViews, tableViews: externalTableViews, resetTableViews, customViews: externalCustomViews, onCreateCustomView, onEditCustomView, onDeleteCustomView, tableMode = 'default', onTableViewsChange,
|
|
12
|
+
function ViewSelector({ onViewChange, setIsViewVisible, setTableViews, tableViews: externalTableViews, resetTableViews, customViews: externalCustomViews, onCreateCustomView, onEditCustomView, onDeleteCustomView, tableMode = 'default', onTableViewsChange, onCustomViewsChange, templates, lang = 'en', }) {
|
|
13
13
|
const { t } = useTranslation();
|
|
14
14
|
// Map tableMode to viewMode: 'sheet' → 'sheet', 'default' → 'advanced'
|
|
15
15
|
const mode = tableMode === 'sheet' ? 'sheet' : 'advanced';
|
|
16
16
|
const { defaultColumns, setDefaultColumns, internalTableViews, setInternalTableViews, internalCustomViews, setInternalCustomViews } = useViewsManager({
|
|
17
17
|
mode,
|
|
18
|
-
layoutData,
|
|
19
|
-
initialTableViews,
|
|
20
|
-
initialCustomViews,
|
|
21
18
|
templates,
|
|
22
19
|
lang,
|
|
23
20
|
});
|
|
@@ -25,7 +22,6 @@ function ViewSelector({ onViewChange, setIsViewVisible, setTableViews, tableView
|
|
|
25
22
|
const customViews = externalCustomViews !== null && externalCustomViews !== void 0 ? externalCustomViews : internalCustomViews;
|
|
26
23
|
const { anchorViewEl, defaultViewEl, setDefaultViewElement, isCreateDialogOpen, editingView, selectedViewInfo, shouldUseCurrentState, handleViewButtonClick, handleCloseViewDropdown, handleSelectedViewInfo, handleOpenCreateDialog, handleOpenEditDialog, handleCloseCreateDialog, handleSaveView, handleDeleteView, handleResetViews, handleTableViewsChange, } = useViewSelector({
|
|
27
24
|
mode,
|
|
28
|
-
layoutData,
|
|
29
25
|
onTableViewsChange,
|
|
30
26
|
onCustomViewsChange,
|
|
31
27
|
onCreateCustomView,
|
|
@@ -35,11 +31,12 @@ function ViewSelector({ onViewChange, setIsViewVisible, setTableViews, tableView
|
|
|
35
31
|
setTableViews,
|
|
36
32
|
tableViews,
|
|
37
33
|
customViews,
|
|
34
|
+
defaultColumns,
|
|
38
35
|
setInternalCustomViews,
|
|
39
36
|
setInternalTableViews,
|
|
40
37
|
});
|
|
41
|
-
return (_jsxs(_Fragment, { children: [_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCloseViewDropdown }, { children: _jsxs(ViewWrapper, Object.assign({ sx: { width: '32px' }, "data-testid": "ViewSelector" }, { children: [_jsx(StyledButton, Object.assign({ title: t('tableView'), "data-testid": "ViewSelector_button", onClick: handleViewButtonClick }, { children: _jsx(Icon, { src: viewIcon, alt: "view", sx: { width: 14, height: 14 } }) })), _jsx(ViewsDropdown, { open: Boolean(defaultViewEl), anchorEl: anchorViewEl, setSelectedViewInfo: handleSelectedViewInfo, selectedViewInfo: selectedViewInfo, onSelect: (e) => {
|
|
42
|
-
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange();
|
|
38
|
+
return (_jsxs(_Fragment, { children: [_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCloseViewDropdown }, { children: _jsxs(ViewWrapper, Object.assign({ sx: { width: '32px' }, "data-testid": "ViewSelector" }, { children: [_jsx(StyledButton, Object.assign({ title: t('tableView'), "data-testid": "ViewSelector_button", onClick: handleViewButtonClick }, { children: _jsx(Icon, { src: viewIcon, alt: "view", sx: { width: 14, height: 14 } }) })), _jsx(ViewsDropdown, { open: Boolean(defaultViewEl), anchorEl: anchorViewEl, setSelectedViewInfo: handleSelectedViewInfo, selectedViewInfo: selectedViewInfo, onSelect: (e, templateId) => {
|
|
39
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(templateId);
|
|
43
40
|
setDefaultViewElement(defaultViewEl ? null : e.currentTarget);
|
|
44
41
|
}, setViews: handleResetViews, tableViews: tableViews, setTableViews: handleTableViewsChange, onCreateCustomView: handleOpenCreateDialog, customViews: customViews, onEditCustomView: handleOpenEditDialog, defaultColumns: defaultColumns, setDefaultColumns: setDefaultColumns })] })) })), _jsx(CreateViewDialog, { open: isCreateDialogOpen, onClose: handleCloseCreateDialog, availableColumns: defaultColumns, defaultColumns: defaultColumns, onCreate: handleSaveView, editingView: editingView, onDelete: handleDeleteView, tableViews: shouldUseCurrentState ? defaultColumns : undefined, mode: mode })] }));
|
|
45
42
|
}
|
|
@@ -38,6 +38,26 @@ function ViewsDropdown({ open, selectedViewInfo, setSelectedViewInfo, onSelect,
|
|
|
38
38
|
const { hoveredNestedColumn, nestedSubmenuAnchorEl, openNestedSubmenu, closeNestedSubmenu, cancelNestedClose } = useNestedSubmenu();
|
|
39
39
|
// Default templates are merged into built-in Default view, so no need to sort
|
|
40
40
|
const viewList = [...defaultViewList, ...customViews];
|
|
41
|
+
const handleViewClick = (item) => {
|
|
42
|
+
setSelectedViewInfo(item);
|
|
43
|
+
if (item.columns)
|
|
44
|
+
setViews === null || setViews === void 0 ? void 0 : setViews(item.columns);
|
|
45
|
+
// Call onSelect with templateId for custom views
|
|
46
|
+
if (item.isCustom && item.templateId) {
|
|
47
|
+
// Create a synthetic event-like object for onSelect
|
|
48
|
+
const syntheticEvent = {
|
|
49
|
+
currentTarget: anchorEl || document.createElement('div'),
|
|
50
|
+
};
|
|
51
|
+
onSelect(syntheticEvent, item.templateId);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// For default view, call onSelect without templateId
|
|
55
|
+
const syntheticEvent = {
|
|
56
|
+
currentTarget: anchorEl || document.createElement('div'),
|
|
57
|
+
};
|
|
58
|
+
onSelect(syntheticEvent);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
41
61
|
const toggleColumnSelection = (columnName) => {
|
|
42
62
|
if (!setDefaultColumns)
|
|
43
63
|
return;
|
|
@@ -149,11 +169,7 @@ function ViewsDropdown({ open, selectedViewInfo, setSelectedViewInfo, onSelect,
|
|
|
149
169
|
else if (hasSubmenu(item, defaultColumns)) {
|
|
150
170
|
handleMenuItemLeave();
|
|
151
171
|
}
|
|
152
|
-
}, onClick: () => {
|
|
153
|
-
setSelectedViewInfo(item);
|
|
154
|
-
if (item.columns)
|
|
155
|
-
setViews === null || setViews === void 0 ? void 0 : setViews(item.columns);
|
|
156
|
-
}, sx: {
|
|
172
|
+
}, onClick: () => handleViewClick(item), sx: {
|
|
157
173
|
position: 'relative',
|
|
158
174
|
cursor: 'pointer',
|
|
159
175
|
pr: 1.5,
|
|
@@ -4,7 +4,6 @@ import type { ViewMenuItem, LayoutSection, ViewMode } from '../types';
|
|
|
4
4
|
import type { ViewOption } from '../../type';
|
|
5
5
|
export interface UseViewSelectorProps {
|
|
6
6
|
mode: ViewMode;
|
|
7
|
-
layoutData?: LayoutSection[];
|
|
8
7
|
onTableViewsChange?: (tableViews: ColumnViewProps[]) => void;
|
|
9
8
|
onCustomViewsChange?: (customViews: ViewMenuItem[]) => void;
|
|
10
9
|
onCreateCustomView?: (data: {
|
|
@@ -25,10 +24,11 @@ export interface UseViewSelectorProps {
|
|
|
25
24
|
setTableViews?: (columns: ColumnViewProps[]) => void;
|
|
26
25
|
tableViews: ColumnViewProps[];
|
|
27
26
|
customViews: ViewMenuItem[];
|
|
27
|
+
defaultColumns: ColumnViewProps[];
|
|
28
28
|
setInternalCustomViews: (views: ViewMenuItem[]) => void;
|
|
29
29
|
setInternalTableViews: (views: ColumnViewProps[]) => void;
|
|
30
30
|
}
|
|
31
|
-
export declare const useViewSelector: ({ mode,
|
|
31
|
+
export declare const useViewSelector: ({ mode, onTableViewsChange, onCustomViewsChange, onCreateCustomView, onEditCustomView, onDeleteCustomView, resetTableViews, setTableViews, tableViews, customViews, defaultColumns, setInternalCustomViews, setInternalTableViews, }: UseViewSelectorProps) => {
|
|
32
32
|
anchorViewEl: HTMLDivElement | null;
|
|
33
33
|
defaultViewEl: HTMLDivElement | null;
|
|
34
34
|
setDefaultViewElement: import("react").Dispatch<import("react").SetStateAction<HTMLDivElement | null>>;
|
|
@@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { useState, useCallback } from 'react';
|
|
11
|
-
import {
|
|
12
|
-
export const useViewSelector = ({ mode,
|
|
11
|
+
import { createCustomViewMenuItem } from '../utils';
|
|
12
|
+
export const useViewSelector = ({ mode, onTableViewsChange, onCustomViewsChange, onCreateCustomView, onEditCustomView, onDeleteCustomView, resetTableViews, setTableViews, tableViews, customViews, defaultColumns, setInternalCustomViews, setInternalTableViews, }) => {
|
|
13
13
|
const [anchorViewEl, setAnchorViewEl] = useState(null);
|
|
14
14
|
const [defaultViewEl, setDefaultViewElement] = useState(null);
|
|
15
15
|
const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false);
|
|
@@ -81,10 +81,10 @@ export const useViewSelector = ({ mode, layoutData, onTableViewsChange, onCustom
|
|
|
81
81
|
resetTableViews({ id: views[0], label: views[0] });
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
84
|
-
|
|
85
|
-
handleTableViewsChange(
|
|
84
|
+
// Reset to default columns from templates
|
|
85
|
+
handleTableViewsChange([...defaultColumns]);
|
|
86
86
|
}
|
|
87
|
-
}, [resetTableViews,
|
|
87
|
+
}, [resetTableViews, defaultColumns, handleTableViewsChange]);
|
|
88
88
|
return {
|
|
89
89
|
// State
|
|
90
90
|
anchorViewEl,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { ColumnViewProps } from '../../../../types/index.js';
|
|
3
3
|
import type { UseViewsManagerProps, ViewMenuItem } from '../types';
|
|
4
|
-
export declare const useViewsManager: ({ mode,
|
|
4
|
+
export declare const useViewsManager: ({ mode, templates, lang }: UseViewsManagerProps) => {
|
|
5
5
|
defaultColumns: ColumnViewProps[];
|
|
6
6
|
setDefaultColumns: import("react").Dispatch<import("react").SetStateAction<ColumnViewProps[]>>;
|
|
7
7
|
internalTableViews: ColumnViewProps[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useState, useEffect, useMemo } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
export const useViewsManager = ({ mode,
|
|
4
|
-
// Transform templates internally
|
|
2
|
+
import { transformTemplatesToViewMenuItems, getLayoutDataFromTemplates, getColumnsByMode } from '../utils';
|
|
3
|
+
export const useViewsManager = ({ mode, templates, lang = 'en' }) => {
|
|
4
|
+
// Transform templates internally - this is the only source of data
|
|
5
5
|
const transformedTemplates = useMemo(() => {
|
|
6
6
|
if (!templates)
|
|
7
7
|
return null;
|
|
@@ -38,11 +38,8 @@ export const useViewsManager = ({ mode, layoutData, initialTableViews, initialCu
|
|
|
38
38
|
defaultTemplateColumns,
|
|
39
39
|
};
|
|
40
40
|
}, [templates, mode, lang]);
|
|
41
|
-
// Use transformed templates or provided props
|
|
42
|
-
const effectiveLayoutData = (transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.layoutData) || layoutData;
|
|
43
|
-
const effectiveCustomViews = (transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.customViews) || initialCustomViews;
|
|
44
41
|
const [defaultColumns, setDefaultColumns] = useState(() => {
|
|
45
|
-
//
|
|
42
|
+
// Only use data from templates - no other sources
|
|
46
43
|
if (templates) {
|
|
47
44
|
const templatesArray = Array.isArray(templates) ? templates : templates.templates;
|
|
48
45
|
const { defaultTemplateColumns } = transformTemplatesToViewMenuItems(templatesArray, mode, lang);
|
|
@@ -50,31 +47,55 @@ export const useViewsManager = ({ mode, layoutData, initialTableViews, initialCu
|
|
|
50
47
|
return defaultTemplateColumns;
|
|
51
48
|
}
|
|
52
49
|
}
|
|
53
|
-
|
|
50
|
+
// Return empty array if no templates
|
|
51
|
+
return [];
|
|
52
|
+
});
|
|
53
|
+
const [internalTableViews, setInternalTableViews] = useState(() => {
|
|
54
|
+
// Initialize from templates only
|
|
55
|
+
if (templates) {
|
|
56
|
+
const templatesArray = Array.isArray(templates) ? templates : templates.templates;
|
|
57
|
+
const { defaultTemplateColumns } = transformTemplatesToViewMenuItems(templatesArray, mode, lang);
|
|
58
|
+
if (defaultTemplateColumns) {
|
|
59
|
+
return defaultTemplateColumns;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return [];
|
|
63
|
+
});
|
|
64
|
+
const [internalCustomViews, setInternalCustomViews] = useState(() => {
|
|
65
|
+
// Initialize from templates only
|
|
66
|
+
if (templates) {
|
|
67
|
+
const templatesArray = Array.isArray(templates) ? templates : templates.templates;
|
|
68
|
+
const { customViews } = transformTemplatesToViewMenuItems(templatesArray, mode, lang);
|
|
69
|
+
return customViews || [];
|
|
70
|
+
}
|
|
71
|
+
return [];
|
|
54
72
|
});
|
|
55
|
-
const [internalTableViews, setInternalTableViews] = useState(initialTableViews || defaultColumns || []);
|
|
56
|
-
const [internalCustomViews, setInternalCustomViews] = useState(effectiveCustomViews || []);
|
|
57
73
|
useEffect(() => {
|
|
58
|
-
//
|
|
74
|
+
// Only use data from templates
|
|
59
75
|
if (transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.defaultTemplateColumns) {
|
|
60
76
|
setDefaultColumns(transformedTemplates.defaultTemplateColumns);
|
|
61
|
-
|
|
62
|
-
setInternalTableViews(transformedTemplates.defaultTemplateColumns);
|
|
63
|
-
}
|
|
77
|
+
setInternalTableViews(transformedTemplates.defaultTemplateColumns);
|
|
64
78
|
}
|
|
65
|
-
else {
|
|
66
|
-
|
|
79
|
+
else if ((transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.layoutData) && transformedTemplates.layoutData.length > 0) {
|
|
80
|
+
// Use layoutData from templates
|
|
81
|
+
const columns = getColumnsByMode(mode, transformedTemplates.layoutData);
|
|
67
82
|
setDefaultColumns(columns);
|
|
68
|
-
|
|
69
|
-
setInternalTableViews(columns);
|
|
70
|
-
}
|
|
83
|
+
setInternalTableViews(columns);
|
|
71
84
|
}
|
|
72
|
-
|
|
85
|
+
else {
|
|
86
|
+
// No templates - set empty arrays
|
|
87
|
+
setDefaultColumns([]);
|
|
88
|
+
setInternalTableViews([]);
|
|
89
|
+
}
|
|
90
|
+
}, [mode, transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.defaultTemplateColumns, transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.layoutData]);
|
|
73
91
|
// Update custom views when templates change
|
|
74
92
|
useEffect(() => {
|
|
75
93
|
if (transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.customViews) {
|
|
76
94
|
setInternalCustomViews(transformedTemplates.customViews);
|
|
77
95
|
}
|
|
96
|
+
else {
|
|
97
|
+
setInternalCustomViews([]);
|
|
98
|
+
}
|
|
78
99
|
}, [transformedTemplates === null || transformedTemplates === void 0 ? void 0 : transformedTemplates.customViews]);
|
|
79
100
|
return {
|
|
80
101
|
defaultColumns,
|
|
@@ -8,4 +8,6 @@ export { default as CreateViewDialog } from './CreateViewDialog';
|
|
|
8
8
|
export { transformLayoutToColumns, getColumnsByMode, createCustomViewMenuItem, setViewAsDefault, transformTemplatesToViewMenuItems, convertColumnsToLayoutSection, isDateColumn, getColumnCheckState, } from './utils';
|
|
9
9
|
export { useSubmenuHover } from './hooks';
|
|
10
10
|
export { DIALOG_WIDTH, DIALOG_HEIGHT, MAX_CUSTOM_VIEWS, TEMPLATE_NAME_MAX_LENGTH } from './constants';
|
|
11
|
+
// Note: defaultViewList, advancedColumns, sheetColumns are only exported for demo purposes
|
|
12
|
+
// They should not be used as defaults in production - all data should come from API
|
|
11
13
|
export { defaultViewList, advancedColumns, sheetColumns } from './data';
|
|
@@ -5,6 +5,7 @@ export type ViewMode = 'advanced' | 'sheet';
|
|
|
5
5
|
export interface ViewMenuItem {
|
|
6
6
|
label: string;
|
|
7
7
|
id: string;
|
|
8
|
+
templateId?: string;
|
|
8
9
|
columns?: string[];
|
|
9
10
|
submenu?: ColumnViewProps[];
|
|
10
11
|
isCustom?: boolean;
|
|
@@ -16,6 +17,7 @@ export interface FieldItem {
|
|
|
16
17
|
text: string;
|
|
17
18
|
lang: string;
|
|
18
19
|
}[];
|
|
20
|
+
order?: number | null;
|
|
19
21
|
default?: boolean;
|
|
20
22
|
}
|
|
21
23
|
export interface ColumnItem {
|
|
@@ -33,23 +35,28 @@ export interface LayoutSection {
|
|
|
33
35
|
columns: ColumnItem[];
|
|
34
36
|
}
|
|
35
37
|
export interface TemplateResponse {
|
|
36
|
-
|
|
37
|
-
object: string;
|
|
38
|
-
master: boolean;
|
|
39
|
-
live_mode: boolean;
|
|
40
|
-
api_version: string;
|
|
41
|
-
feature_version: string;
|
|
42
|
-
created: number;
|
|
43
|
-
updated: number;
|
|
38
|
+
templateId: string;
|
|
44
39
|
segment: string;
|
|
45
40
|
app: string;
|
|
46
41
|
service: string;
|
|
42
|
+
name: string;
|
|
43
|
+
layout: LayoutSection[];
|
|
44
|
+
id: {
|
|
45
|
+
timestamp: number;
|
|
46
|
+
date: string;
|
|
47
|
+
};
|
|
48
|
+
masterTemplateId: string;
|
|
47
49
|
user: {
|
|
48
50
|
id: string;
|
|
49
51
|
};
|
|
50
|
-
|
|
52
|
+
created: number;
|
|
53
|
+
updated: number;
|
|
51
54
|
default: boolean;
|
|
52
|
-
|
|
55
|
+
object?: string;
|
|
56
|
+
master?: boolean;
|
|
57
|
+
live_mode?: boolean;
|
|
58
|
+
api_version?: string;
|
|
59
|
+
feature_version?: string;
|
|
53
60
|
}
|
|
54
61
|
export interface TemplatesListResponse {
|
|
55
62
|
object: string;
|
|
@@ -74,6 +81,7 @@ export interface CreateCustomViewDialogProps {
|
|
|
74
81
|
editingView?: {
|
|
75
82
|
id: string;
|
|
76
83
|
label: string;
|
|
84
|
+
templateId?: string;
|
|
77
85
|
submenu?: ColumnViewProps[];
|
|
78
86
|
} | null;
|
|
79
87
|
onDelete?: (viewId: string) => Promise<void>;
|
|
@@ -115,7 +123,7 @@ export interface ViewsDropdownProps {
|
|
|
115
123
|
open: boolean;
|
|
116
124
|
selectedViewInfo: ViewOption;
|
|
117
125
|
setSelectedViewInfo: (selected: ViewOption) => void;
|
|
118
|
-
onSelect: (e: React.MouseEvent<HTMLDivElement
|
|
126
|
+
onSelect: (e: React.MouseEvent<HTMLDivElement>, templateId?: string) => void;
|
|
119
127
|
setViews?: (views: string[]) => void;
|
|
120
128
|
anchorEl: Element | null;
|
|
121
129
|
tableViews?: ColumnViewProps[];
|
|
@@ -167,9 +175,6 @@ export interface UseCreateViewDialogProps {
|
|
|
167
175
|
}
|
|
168
176
|
export interface UseViewsManagerProps {
|
|
169
177
|
mode: ViewMode;
|
|
170
|
-
layoutData?: LayoutSection[];
|
|
171
|
-
initialTableViews?: ColumnViewProps[];
|
|
172
|
-
initialCustomViews?: ViewMenuItem[];
|
|
173
178
|
templates?: TemplatesListResponse | TemplateResponse[];
|
|
174
179
|
lang?: string;
|
|
175
180
|
}
|
|
@@ -25,10 +25,14 @@ export declare const setViewAsDefault: (views: ViewMenuItem[], viewId: string) =
|
|
|
25
25
|
* Separates default templates (to be merged into built-in Default view) from custom views
|
|
26
26
|
*/
|
|
27
27
|
export declare const transformTemplatesToViewMenuItems: (templates: Array<{
|
|
28
|
-
id: string
|
|
28
|
+
id: string | {
|
|
29
|
+
timestamp: number;
|
|
30
|
+
date: string;
|
|
31
|
+
};
|
|
29
32
|
name: string;
|
|
30
33
|
default: boolean;
|
|
31
34
|
layout: LayoutSection[];
|
|
35
|
+
templateId: string;
|
|
32
36
|
}>, mode?: ViewMode, lang?: string) => {
|
|
33
37
|
customViews: ViewMenuItem[];
|
|
34
38
|
defaultTemplateColumns?: ColumnViewProps[] | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// Note: advancedColumns and sheetColumns are only used in demo - not imported here to avoid default data
|
|
2
2
|
/**
|
|
3
3
|
* Transform API layout response to internal ColumnViewProps format
|
|
4
4
|
*/
|
|
@@ -35,7 +35,8 @@ export const getColumnsByMode = (mode, layoutData) => {
|
|
|
35
35
|
return transformLayoutToColumns([section]);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
// Return empty array - all data should come from API
|
|
39
|
+
return [];
|
|
39
40
|
};
|
|
40
41
|
export const isDateColumn = (name) => {
|
|
41
42
|
return name.toLowerCase() === 'date';
|
|
@@ -102,6 +103,9 @@ export const transformTemplatesToViewMenuItems = (templates, mode = 'sheet', lan
|
|
|
102
103
|
// Get columns for the specified mode
|
|
103
104
|
const section = template.layout.find((s) => s.code.toLowerCase() === mode.toLowerCase());
|
|
104
105
|
const columns = section ? transformLayoutToColumns([section], lang) : [];
|
|
106
|
+
// Handle id as either string or object
|
|
107
|
+
const templateIdString = typeof template.id === 'string' ? template.id : template.templateId;
|
|
108
|
+
const viewId = typeof template.id === 'string' ? template.id : template.templateId;
|
|
105
109
|
if (template.default) {
|
|
106
110
|
// Store default template columns to merge into built-in Default view
|
|
107
111
|
defaultTemplateColumns = columns;
|
|
@@ -109,7 +113,8 @@ export const transformTemplatesToViewMenuItems = (templates, mode = 'sheet', lan
|
|
|
109
113
|
else {
|
|
110
114
|
// Add non-default templates as custom views
|
|
111
115
|
customViews.push({
|
|
112
|
-
id:
|
|
116
|
+
id: viewId,
|
|
117
|
+
templateId: template.templateId,
|
|
113
118
|
label: template.name,
|
|
114
119
|
isCustom: true,
|
|
115
120
|
default: false,
|
|
@@ -23,7 +23,7 @@ export interface TableHeaderProps<IStatus extends TableHeaderStatus | TableHeade
|
|
|
23
23
|
calendarMode?: CalenderMode;
|
|
24
24
|
onStatusChange?: <T extends IStatus>(status?: T) => void;
|
|
25
25
|
onSearch?: (search: string) => void;
|
|
26
|
-
onViewChange?: () => void;
|
|
26
|
+
onViewChange?: (templateId?: string) => void;
|
|
27
27
|
onDateChange?: (date: Date | [Date, Date]) => void;
|
|
28
28
|
tableReportsComponent?: React.ReactNode;
|
|
29
29
|
tableFilterComponent?: React.ReactNode;
|
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.372-test.2-test.3",
|
|
5
|
-
"testVersion":
|
|
4
|
+
"version": "0.1.372-test.2-test.3-test.4-test.5",
|
|
5
|
+
"testVersion": 5,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "build/index.js",
|
|
8
8
|
"module": "build/index.js",
|