@tap-payments/os-micro-frontend-shared 0.1.373-test.2-test.3-test.4-test.5-test.6-test.7 → 0.1.373-test.3-test.4
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/Sandbox/style.js +2 -3
- package/build/components/TableHeader/FiltersRow.d.ts +1 -1
- package/build/components/TableHeader/FiltersRow.js +3 -3
- package/build/components/TableHeader/TableHeader.d.ts +1 -1
- package/build/components/TableHeader/TableHeader.js +2 -2
- package/build/components/TableHeader/TableView/ViewsDropdown.d.ts +1 -1
- package/build/components/TableHeader/TableView/ViewsDropdown.js +116 -197
- package/build/components/TableHeader/TableView/ViewsMenu.d.ts +5 -0
- package/build/components/TableHeader/TableView/ViewsMenu.js +76 -0
- package/build/components/TableHeader/TableView/components/ColumnList.js +4 -4
- package/build/components/TableHeader/TableView/components/ViewsSubmenu.js +46 -30
- package/build/components/TableHeader/TableView/constants.d.ts +5 -0
- package/build/components/TableHeader/TableView/constants.js +5 -0
- package/build/components/TableHeader/TableView/hooks/index.d.ts +1 -1
- package/build/components/TableHeader/TableView/hooks/index.js +1 -1
- package/build/components/TableHeader/TableView/hooks/useCreateViewDialog.js +25 -16
- package/build/components/TableHeader/TableView/hooks/useNestedSubmenu.js +2 -9
- package/build/components/TableHeader/TableView/hooks/useSubmenuHover.js +1 -2
- package/build/components/TableHeader/TableView/hooks/useViewsManager.d.ts +6 -8
- package/build/components/TableHeader/TableView/hooks/useViewsManager.js +45 -94
- package/build/components/TableHeader/TableView/hooks/useViewsMenu.d.ts +44 -0
- package/build/components/TableHeader/TableView/hooks/useViewsMenu.js +178 -0
- package/build/components/TableHeader/TableView/index.d.ts +3 -3
- package/build/components/TableHeader/TableView/index.js +2 -4
- package/build/components/TableHeader/TableView/types.d.ts +18 -32
- package/build/components/TableHeader/TableView/utils.d.ts +5 -5
- package/build/components/TableHeader/TableView/utils.js +23 -13
- package/build/components/TableHeader/index.d.ts +1 -0
- package/build/components/TableHeader/type.d.ts +2 -9
- package/build/components/Toolbar/Toolbar.js +1 -1
- package/build/components/VirtualTables/SheetViewVirtualTable/SheetViewVirtualTable.d.ts +1 -1
- package/build/components/VirtualTables/SheetViewVirtualTable/SheetViewVirtualTable.js +4 -1
- package/build/components/VirtualTables/VirtualTable/VirtualTable.d.ts +1 -1
- package/build/components/VirtualTables/VirtualTable/VirtualTable.js +3 -2
- package/build/constants/apps.js +2 -0
- package/build/constants/assets.d.ts +1 -0
- package/build/constants/assets.js +1 -0
- package/build/types/column.d.ts +8 -0
- package/build/types/reports.d.ts +21 -0
- package/build/types/table.d.ts +1 -0
- package/build/utils/date.js +5 -3
- package/build/utils/index.d.ts +1 -0
- package/build/utils/index.js +1 -0
- package/build/utils/skeletonColumns.d.ts +8 -0
- package/build/utils/skeletonColumns.js +34 -0
- package/package.json +2 -2
- package/build/components/TableHeader/TableView/ViewSelector.d.ts +0 -5
- package/build/components/TableHeader/TableView/ViewSelector.js +0 -46
- package/build/components/TableHeader/TableView/hooks/useViewSelector.d.ts +0 -59
- package/build/components/TableHeader/TableView/hooks/useViewSelector.js +0 -193
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
11
|
+
import { deepCloneColumns } from '../utils';
|
|
12
|
+
export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCustomView, onDeleteCustomView, defaultColumns, defaultTemplate, allTemplates, }) => {
|
|
13
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
14
|
+
const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false);
|
|
15
|
+
const [editingView, setEditingView] = useState(null);
|
|
16
|
+
const [selectedViewInfo, setSelectedViewInfo] = useState({ id: 'default', label: 'Default' });
|
|
17
|
+
const [shouldUseCurrentState, setShouldUseCurrentState] = useState(false);
|
|
18
|
+
const [selectedView, setSelectedView] = useState(undefined);
|
|
19
|
+
const [currentViewColumns, setCurrentViewColumns] = useState([]);
|
|
20
|
+
const hasInitializedRef = useRef(false);
|
|
21
|
+
const getViewForParent = useCallback((view) => {
|
|
22
|
+
var _a;
|
|
23
|
+
const selectedColumns = ((_a = view.submenu) === null || _a === void 0 ? void 0 : _a.filter((col) => col.selected)) || [];
|
|
24
|
+
return Object.assign(Object.assign({}, view), { submenu: selectedColumns, columns: selectedColumns.map((col) => col.name) });
|
|
25
|
+
}, []);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (hasInitializedRef.current)
|
|
28
|
+
return;
|
|
29
|
+
if (!defaultTemplate)
|
|
30
|
+
return;
|
|
31
|
+
setSelectedView(defaultTemplate);
|
|
32
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
33
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(defaultTemplate));
|
|
34
|
+
hasInitializedRef.current = true;
|
|
35
|
+
}, [defaultTemplate, defaultColumns, onViewChange, getViewForParent]);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (!hasInitializedRef.current)
|
|
38
|
+
return;
|
|
39
|
+
if ((selectedView === null || selectedView === void 0 ? void 0 : selectedView.default) && defaultColumns.length > 0) {
|
|
40
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
41
|
+
}
|
|
42
|
+
}, [defaultColumns, selectedView === null || selectedView === void 0 ? void 0 : selectedView.default]);
|
|
43
|
+
const lastSyncedModeRef = useRef(null);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (!hasInitializedRef.current)
|
|
46
|
+
return;
|
|
47
|
+
if (!selectedView)
|
|
48
|
+
return;
|
|
49
|
+
const needsSync = lastSyncedModeRef.current !== mode;
|
|
50
|
+
if (!needsSync)
|
|
51
|
+
return;
|
|
52
|
+
if (selectedView.default) {
|
|
53
|
+
if (defaultColumns.length === 0)
|
|
54
|
+
return;
|
|
55
|
+
const newView = Object.assign(Object.assign({}, selectedView), { submenu: deepCloneColumns(defaultColumns), columns: defaultColumns.map((col) => col.name) });
|
|
56
|
+
setSelectedView(newView);
|
|
57
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
58
|
+
lastSyncedModeRef.current = mode;
|
|
59
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(newView));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const updatedTemplate = allTemplates.find((t) => t.templateId === selectedView.templateId || t.id === selectedView.id);
|
|
63
|
+
if (updatedTemplate && updatedTemplate.submenu && updatedTemplate.submenu.length > 0) {
|
|
64
|
+
const newView = Object.assign(Object.assign({}, updatedTemplate), { submenu: deepCloneColumns(updatedTemplate.submenu) });
|
|
65
|
+
setSelectedView(newView);
|
|
66
|
+
setCurrentViewColumns(deepCloneColumns(updatedTemplate.submenu));
|
|
67
|
+
lastSyncedModeRef.current = mode;
|
|
68
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(newView));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, [mode, defaultColumns, selectedView, allTemplates, onViewChange]);
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
if (!hasInitializedRef.current)
|
|
74
|
+
return;
|
|
75
|
+
if (!selectedView)
|
|
76
|
+
return;
|
|
77
|
+
const updatedTemplate = allTemplates.find((t) => {
|
|
78
|
+
const templateId = t.templateId || t.id;
|
|
79
|
+
const selectedId = selectedView.templateId || selectedView.id;
|
|
80
|
+
return templateId === selectedId;
|
|
81
|
+
});
|
|
82
|
+
if (!updatedTemplate)
|
|
83
|
+
return;
|
|
84
|
+
const currentSubmenu = selectedView.submenu || [];
|
|
85
|
+
const updatedSubmenu = updatedTemplate.submenu || [];
|
|
86
|
+
const hasChanged = currentSubmenu.length !== updatedSubmenu.length ||
|
|
87
|
+
currentSubmenu.some((col, idx) => {
|
|
88
|
+
const updatedCol = updatedSubmenu[idx];
|
|
89
|
+
if (!updatedCol)
|
|
90
|
+
return true;
|
|
91
|
+
return col.selected !== updatedCol.selected || col.name !== updatedCol.name;
|
|
92
|
+
});
|
|
93
|
+
if (hasChanged) {
|
|
94
|
+
const fullView = Object.assign(Object.assign({}, updatedTemplate), { submenu: deepCloneColumns(updatedTemplate.submenu || []) });
|
|
95
|
+
setSelectedView(fullView);
|
|
96
|
+
setCurrentViewColumns(deepCloneColumns(updatedTemplate.submenu || []));
|
|
97
|
+
const viewForParent = getViewForParent(fullView);
|
|
98
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(viewForParent);
|
|
99
|
+
}
|
|
100
|
+
}, [allTemplates, selectedView, onViewChange]);
|
|
101
|
+
const handleViewButtonClick = useCallback((event) => {
|
|
102
|
+
setAnchorEl((current) => (current ? null : event.currentTarget));
|
|
103
|
+
}, []);
|
|
104
|
+
const handleCloseViewDropdown = useCallback(() => {
|
|
105
|
+
setAnchorEl(null);
|
|
106
|
+
}, []);
|
|
107
|
+
const handleSelectedViewInfo = useCallback((selected, viewMenuItem) => {
|
|
108
|
+
setSelectedViewInfo(selected);
|
|
109
|
+
const newSelectedView = viewMenuItem || undefined;
|
|
110
|
+
setSelectedView(newSelectedView);
|
|
111
|
+
setCurrentViewColumns(deepCloneColumns((newSelectedView === null || newSelectedView === void 0 ? void 0 : newSelectedView.submenu) || []));
|
|
112
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(newSelectedView ? getViewForParent(newSelectedView) : undefined);
|
|
113
|
+
handleCloseViewDropdown();
|
|
114
|
+
}, [handleCloseViewDropdown, onViewChange, getViewForParent]);
|
|
115
|
+
const updateSelectedView = useCallback((updatedView) => {
|
|
116
|
+
const viewWithNewRefs = Object.assign(Object.assign({}, updatedView), { submenu: updatedView.submenu ? [...updatedView.submenu] : undefined, columns: updatedView.columns ? [...updatedView.columns] : undefined });
|
|
117
|
+
setSelectedView(viewWithNewRefs);
|
|
118
|
+
setCurrentViewColumns(deepCloneColumns(viewWithNewRefs.submenu || []));
|
|
119
|
+
setSelectedViewInfo({ id: viewWithNewRefs.id, label: viewWithNewRefs.label });
|
|
120
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(viewWithNewRefs));
|
|
121
|
+
}, [onViewChange, getViewForParent]);
|
|
122
|
+
const handleOpenCreateDialog = useCallback((useCurrentState = false) => {
|
|
123
|
+
setEditingView(null);
|
|
124
|
+
setShouldUseCurrentState(useCurrentState);
|
|
125
|
+
setIsCreateDialogOpen(true);
|
|
126
|
+
setAnchorEl(null);
|
|
127
|
+
}, []);
|
|
128
|
+
const handleOpenEditDialog = useCallback((view) => {
|
|
129
|
+
setEditingView(view);
|
|
130
|
+
setShouldUseCurrentState(true);
|
|
131
|
+
setIsCreateDialogOpen(true);
|
|
132
|
+
}, []);
|
|
133
|
+
const handleCloseCreateDialog = useCallback(() => {
|
|
134
|
+
setIsCreateDialogOpen(false);
|
|
135
|
+
setEditingView(null);
|
|
136
|
+
setShouldUseCurrentState(false);
|
|
137
|
+
}, []);
|
|
138
|
+
const handleSaveView = useCallback((data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
139
|
+
if (editingView) {
|
|
140
|
+
const templateId = editingView.templateId || editingView.id;
|
|
141
|
+
yield (onEditCustomView === null || onEditCustomView === void 0 ? void 0 : onEditCustomView(templateId, data));
|
|
142
|
+
// List/selection update is handled internally by parent (e.g. templates state refresh)
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
yield (onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(data));
|
|
146
|
+
}
|
|
147
|
+
}), [editingView, onEditCustomView, onCreateCustomView]);
|
|
148
|
+
const handleDeleteView = useCallback((viewId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
149
|
+
const viewToDelete = allTemplates.find((view) => view.id === viewId || view.templateId === viewId);
|
|
150
|
+
const templateId = (viewToDelete === null || viewToDelete === void 0 ? void 0 : viewToDelete.templateId) || viewId;
|
|
151
|
+
yield (onDeleteCustomView === null || onDeleteCustomView === void 0 ? void 0 : onDeleteCustomView(templateId));
|
|
152
|
+
if ((selectedView === null || selectedView === void 0 ? void 0 : selectedView.id) === viewId || (selectedView === null || selectedView === void 0 ? void 0 : selectedView.templateId) === viewId) {
|
|
153
|
+
setSelectedView(defaultTemplate);
|
|
154
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
155
|
+
if (defaultTemplate) {
|
|
156
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(defaultTemplate));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}), [allTemplates, onDeleteCustomView, selectedView, defaultTemplate, defaultColumns, onViewChange, getViewForParent]);
|
|
160
|
+
return {
|
|
161
|
+
anchorEl,
|
|
162
|
+
isCreateDialogOpen,
|
|
163
|
+
editingView,
|
|
164
|
+
selectedViewInfo,
|
|
165
|
+
shouldUseCurrentState,
|
|
166
|
+
selectedView,
|
|
167
|
+
currentViewColumns,
|
|
168
|
+
handleViewButtonClick,
|
|
169
|
+
handleCloseViewDropdown,
|
|
170
|
+
handleSelectedViewInfo,
|
|
171
|
+
handleOpenCreateDialog,
|
|
172
|
+
handleOpenEditDialog,
|
|
173
|
+
handleCloseCreateDialog,
|
|
174
|
+
handleSaveView,
|
|
175
|
+
handleDeleteView,
|
|
176
|
+
updateSelectedView,
|
|
177
|
+
};
|
|
178
|
+
};
|
|
@@ -2,11 +2,11 @@ export { default } from './TableView';
|
|
|
2
2
|
export { default as TableView } from './TableView';
|
|
3
3
|
export { default as DefaultViews } from './DefaultViews';
|
|
4
4
|
export { default as CustomViews } from './CustomViews';
|
|
5
|
-
export { default as
|
|
5
|
+
export { default as ViewsMenu } from './ViewsMenu';
|
|
6
6
|
export { default as ViewsDropdown } from './ViewsDropdown';
|
|
7
7
|
export { default as CreateViewDialog } from './CreateViewDialog';
|
|
8
|
-
export type { ViewMenuItem,
|
|
8
|
+
export type { ViewMenuItem, CreateCustomViewDialogProps, LayoutSection, ColumnItem, FieldItem, Template, CreateTemplatePayload, UpdateTemplatePayload, } from './types';
|
|
9
9
|
export { transformLayoutToColumns, getColumnsByMode, createCustomViewMenuItem, setViewAsDefault, transformTemplatesToViewMenuItems, convertColumnsToLayoutSection, isDateColumn, getColumnCheckState, } from './utils';
|
|
10
|
-
export { useSubmenuHover } from './hooks';
|
|
10
|
+
export { useSubmenuHover, useViewsManager, useViewsMenu } from './hooks';
|
|
11
11
|
export { DIALOG_WIDTH, DIALOG_HEIGHT, MAX_CUSTOM_VIEWS, TEMPLATE_NAME_MAX_LENGTH } from './constants';
|
|
12
12
|
export { defaultViewList, advancedColumns, sheetColumns } from './data';
|
|
@@ -2,12 +2,10 @@ export { default } from './TableView';
|
|
|
2
2
|
export { default as TableView } from './TableView';
|
|
3
3
|
export { default as DefaultViews } from './DefaultViews';
|
|
4
4
|
export { default as CustomViews } from './CustomViews';
|
|
5
|
-
export { default as
|
|
5
|
+
export { default as ViewsMenu } from './ViewsMenu';
|
|
6
6
|
export { default as ViewsDropdown } from './ViewsDropdown';
|
|
7
7
|
export { default as CreateViewDialog } from './CreateViewDialog';
|
|
8
8
|
export { transformLayoutToColumns, getColumnsByMode, createCustomViewMenuItem, setViewAsDefault, transformTemplatesToViewMenuItems, convertColumnsToLayoutSection, isDateColumn, getColumnCheckState, } from './utils';
|
|
9
|
-
export { useSubmenuHover } from './hooks';
|
|
9
|
+
export { useSubmenuHover, useViewsManager, useViewsMenu } 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
|
|
13
11
|
export { defaultViewList, advancedColumns, sheetColumns } from './data';
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import type { ColumnViewProps } from '../../../types/index.js';
|
|
1
|
+
import type { ColumnViewProps, TableMode } from '../../../types/index.js';
|
|
3
2
|
import type { TableHeaderProps, ViewOption } from '../type';
|
|
4
|
-
export type ViewMode = 'advanced' | 'sheet';
|
|
5
3
|
export interface ViewMenuItem {
|
|
6
4
|
label: string;
|
|
7
5
|
id: string;
|
|
@@ -51,7 +49,7 @@ export interface UpdateTemplatePayload extends TemplateAPIMetadata {
|
|
|
51
49
|
name: string;
|
|
52
50
|
layout: LayoutSection[];
|
|
53
51
|
}
|
|
54
|
-
export interface
|
|
52
|
+
export interface Template {
|
|
55
53
|
templateId: string;
|
|
56
54
|
segment: string;
|
|
57
55
|
app: string;
|
|
@@ -69,20 +67,15 @@ export interface TemplateResponse {
|
|
|
69
67
|
created: number;
|
|
70
68
|
updated: number;
|
|
71
69
|
default: boolean;
|
|
72
|
-
object?: string;
|
|
73
|
-
master?: boolean;
|
|
74
|
-
live_mode?: boolean;
|
|
75
|
-
api_version?: string;
|
|
76
|
-
feature_version?: string;
|
|
77
70
|
}
|
|
78
|
-
export interface
|
|
71
|
+
export interface TemplatesList {
|
|
79
72
|
object: string;
|
|
80
73
|
live_mode: boolean;
|
|
81
74
|
api_version: string;
|
|
82
75
|
feature_version: string;
|
|
83
76
|
count: number;
|
|
84
77
|
has_more: boolean;
|
|
85
|
-
templates:
|
|
78
|
+
templates: Template[];
|
|
86
79
|
}
|
|
87
80
|
export interface CreateCustomViewDialogProps {
|
|
88
81
|
open: boolean;
|
|
@@ -102,19 +95,14 @@ export interface CreateCustomViewDialogProps {
|
|
|
102
95
|
} | null;
|
|
103
96
|
onDelete?: (viewId: string) => Promise<void>;
|
|
104
97
|
tableViews?: ColumnViewProps[];
|
|
105
|
-
mode?:
|
|
98
|
+
mode?: TableMode;
|
|
106
99
|
}
|
|
107
100
|
export interface ColumnCheckState {
|
|
108
101
|
checked: boolean;
|
|
109
102
|
indeterminate: boolean;
|
|
110
103
|
}
|
|
111
|
-
export interface
|
|
104
|
+
export interface ViewsMenuProps {
|
|
112
105
|
onViewChange?: TableHeaderProps['onViewChange'];
|
|
113
|
-
setIsViewVisible: (visible: boolean) => void;
|
|
114
|
-
setTableViews?: TableHeaderProps['setTableViews'];
|
|
115
|
-
tableViews?: TableHeaderProps['tableViews'];
|
|
116
|
-
resetTableViews?: TableHeaderProps['resetTableViews'];
|
|
117
|
-
customViews?: ViewMenuItem[];
|
|
118
106
|
onCreateCustomView?: (data: {
|
|
119
107
|
name: string;
|
|
120
108
|
selectedColumns: ColumnViewProps[];
|
|
@@ -126,31 +114,28 @@ export interface ViewSelectorProps {
|
|
|
126
114
|
layout: LayoutSection;
|
|
127
115
|
}) => Promise<void>;
|
|
128
116
|
onDeleteCustomView?: (viewId: string) => Promise<void>;
|
|
129
|
-
tableMode?:
|
|
130
|
-
|
|
131
|
-
initialTableViews?: ColumnViewProps[];
|
|
132
|
-
onCustomViewsChange?: (customViews: ViewMenuItem[]) => void;
|
|
133
|
-
initialCustomViews?: ViewMenuItem[];
|
|
134
|
-
layoutData?: LayoutSection[];
|
|
135
|
-
templates?: TemplatesListResponse | TemplateResponse[];
|
|
117
|
+
tableMode?: TableMode;
|
|
118
|
+
templates: Template[];
|
|
136
119
|
lang?: string;
|
|
137
|
-
apiMetadata?: TemplateAPIMetadata;
|
|
138
120
|
}
|
|
139
121
|
export interface ViewsDropdownProps {
|
|
140
122
|
open: boolean;
|
|
141
123
|
selectedViewInfo: ViewOption;
|
|
142
124
|
setSelectedViewInfo: (selected: ViewOption, viewMenuItem?: ViewMenuItem) => void;
|
|
143
|
-
onSelect: (e: React.MouseEvent<HTMLDivElement>, selectedView?: ViewMenuItem) => void;
|
|
144
|
-
setViews?: (views: string[]) => void;
|
|
145
125
|
anchorEl: Element | null;
|
|
146
|
-
|
|
147
|
-
|
|
126
|
+
onClose?: () => void;
|
|
127
|
+
defaultModified?: boolean;
|
|
128
|
+
onMarkDefaultModified?: () => void;
|
|
148
129
|
onCreateCustomView?: (useCurrentState?: boolean) => void;
|
|
149
130
|
customViews?: ViewMenuItem[];
|
|
150
131
|
onEditCustomView?: (view: ViewMenuItem) => void;
|
|
132
|
+
onSaveDefaultColumns?: (columns: ColumnViewProps[]) => void;
|
|
151
133
|
defaultColumns?: ColumnViewProps[];
|
|
152
134
|
setDefaultColumns?: (columns: ColumnViewProps[]) => void;
|
|
153
135
|
updateSelectedView?: (view: ViewMenuItem) => void;
|
|
136
|
+
baseDefaultColumns?: ColumnViewProps[];
|
|
137
|
+
mode?: TableMode;
|
|
138
|
+
defaultTemplate?: ViewMenuItem;
|
|
154
139
|
}
|
|
155
140
|
export interface ColumnListProps {
|
|
156
141
|
selectedColumns: ColumnViewProps[];
|
|
@@ -177,6 +162,7 @@ export interface ViewsSubmenuProps {
|
|
|
177
162
|
onReset: () => void;
|
|
178
163
|
onColumnToggle: (columnName: string) => void;
|
|
179
164
|
onNestedItemToggle: (columnName: string, subItemName: string) => void;
|
|
165
|
+
onReorder: (reorderedColumnNames: string[]) => void;
|
|
180
166
|
anchorEl: HTMLElement | null;
|
|
181
167
|
isModified?: boolean;
|
|
182
168
|
}
|
|
@@ -192,7 +178,7 @@ export interface UseCreateViewDialogProps {
|
|
|
192
178
|
tableViews?: ColumnViewProps[];
|
|
193
179
|
}
|
|
194
180
|
export interface UseViewsManagerProps {
|
|
195
|
-
|
|
196
|
-
templates
|
|
181
|
+
tableMode: TableMode;
|
|
182
|
+
templates: Template[];
|
|
197
183
|
lang?: string;
|
|
198
184
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { ColumnViewProps } from '../../../types/index.js';
|
|
2
|
-
import type { LayoutSection, ViewMenuItem, ColumnCheckState
|
|
1
|
+
import type { ColumnViewProps, TableMode } from '../../../types/index.js';
|
|
2
|
+
import type { LayoutSection, ViewMenuItem, ColumnCheckState } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Transform API layout response to internal ColumnViewProps format
|
|
5
5
|
*/
|
|
6
6
|
export declare const transformLayoutToColumns: (layout: LayoutSection[], lang?: string) => ColumnViewProps[];
|
|
7
|
-
export declare const getColumnsByMode: (mode:
|
|
7
|
+
export declare const getColumnsByMode: (mode: TableMode, layoutData?: LayoutSection[]) => ColumnViewProps[];
|
|
8
8
|
export declare const isDateColumn: (name: string) => boolean;
|
|
9
9
|
export declare const getColumnCheckState: (column: ColumnViewProps) => ColumnCheckState;
|
|
10
10
|
export declare const createCustomViewMenuItem: (name: string, selectedColumns: ColumnViewProps[], isDefault?: boolean) => ViewMenuItem;
|
|
@@ -33,7 +33,7 @@ export declare const transformTemplatesToViewMenuItems: (templates: Array<{
|
|
|
33
33
|
default: boolean;
|
|
34
34
|
layout: LayoutSection[];
|
|
35
35
|
templateId: string;
|
|
36
|
-
}>, mode?:
|
|
36
|
+
}>, mode?: TableMode, lang?: string) => {
|
|
37
37
|
customViews: ViewMenuItem[];
|
|
38
38
|
defaultTemplateColumns?: ColumnViewProps[] | undefined;
|
|
39
39
|
defaultTemplate?: ViewMenuItem | undefined;
|
|
@@ -41,7 +41,7 @@ export declare const transformTemplatesToViewMenuItems: (templates: Array<{
|
|
|
41
41
|
/**
|
|
42
42
|
* Convert ColumnViewProps back to LayoutSection format for API requests
|
|
43
43
|
*/
|
|
44
|
-
export declare const convertColumnsToLayoutSection: (columns: ColumnViewProps[], mode:
|
|
44
|
+
export declare const convertColumnsToLayoutSection: (columns: ColumnViewProps[], mode: TableMode, lang?: string) => LayoutSection;
|
|
45
45
|
/**
|
|
46
46
|
* Initialize columns for editing mode
|
|
47
47
|
*/
|
|
@@ -22,7 +22,7 @@ export const transformLayoutToColumns = (layout, lang = 'en') => {
|
|
|
22
22
|
columns.push({
|
|
23
23
|
name: col.code,
|
|
24
24
|
label,
|
|
25
|
-
selected: (_d = col.default) !== null && _d !== void 0 ? _d : false,
|
|
25
|
+
selected: isDateColumn(col.code) ? true : (_d = col.default) !== null && _d !== void 0 ? _d : false,
|
|
26
26
|
menuItems: (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? menuItems : undefined,
|
|
27
27
|
});
|
|
28
28
|
});
|
|
@@ -31,7 +31,9 @@ export const transformLayoutToColumns = (layout, lang = 'en') => {
|
|
|
31
31
|
};
|
|
32
32
|
export const getColumnsByMode = (mode, layoutData) => {
|
|
33
33
|
if (layoutData && layoutData.length > 0) {
|
|
34
|
-
|
|
34
|
+
// Map TableMode to layout section code: 'default' → 'Advanced', 'sheet' → 'Sheet'
|
|
35
|
+
const sectionCode = mode === 'sheet' ? 'sheet' : 'advanced';
|
|
36
|
+
const section = layoutData.find((s) => s.code.toLowerCase() === sectionCode);
|
|
35
37
|
if (section) {
|
|
36
38
|
return transformLayoutToColumns([section]);
|
|
37
39
|
}
|
|
@@ -103,7 +105,9 @@ export const transformTemplatesToViewMenuItems = (templates, mode = 'sheet', lan
|
|
|
103
105
|
let defaultTemplate;
|
|
104
106
|
templates.forEach((template) => {
|
|
105
107
|
// Get columns for the specified mode
|
|
106
|
-
|
|
108
|
+
// Map TableMode to layout section code: 'default' → 'Advanced', 'sheet' → 'Sheet'
|
|
109
|
+
const sectionCode = mode === 'sheet' ? 'sheet' : 'advanced';
|
|
110
|
+
const section = template.layout.find((s) => s.code.toLowerCase() === sectionCode);
|
|
107
111
|
const columns = section ? transformLayoutToColumns([section], lang) : [];
|
|
108
112
|
// Handle id as either string or object
|
|
109
113
|
const templateIdString = typeof template.id === 'string' ? template.id : template.templateId;
|
|
@@ -172,8 +176,10 @@ export const convertColumnsToLayoutSection = (columns, mode, lang = 'en') => {
|
|
|
172
176
|
},
|
|
173
177
|
], order: index + 1, default: (_b = col.selected) !== null && _b !== void 0 ? _b : false }, (fieldItems && fieldItems.length > 0 && { fields: fieldItems }));
|
|
174
178
|
});
|
|
179
|
+
// Map TableMode to layout section code: 'default' → 'Advanced', 'sheet' → 'Sheet'
|
|
180
|
+
const sectionCode = mode === 'sheet' ? 'Sheet' : 'Advanced';
|
|
175
181
|
return {
|
|
176
|
-
code:
|
|
182
|
+
code: sectionCode,
|
|
177
183
|
columns: columnItems,
|
|
178
184
|
};
|
|
179
185
|
};
|
|
@@ -323,6 +329,9 @@ export const toggleSingleColumn = (columns, columnName) => {
|
|
|
323
329
|
var _a;
|
|
324
330
|
if (col.name !== columnName)
|
|
325
331
|
return col;
|
|
332
|
+
if (isDateColumn(col.name)) {
|
|
333
|
+
return Object.assign(Object.assign({}, col), { selected: true });
|
|
334
|
+
}
|
|
326
335
|
const newSelected = !col.selected;
|
|
327
336
|
const updatedMenuItems = (_a = col.menuItems) === null || _a === void 0 ? void 0 : _a.map((item) => (Object.assign(Object.assign({}, item), { selected: newSelected })));
|
|
328
337
|
return Object.assign(Object.assign({}, col), { selected: newSelected, menuItems: updatedMenuItems });
|
|
@@ -344,24 +353,22 @@ export const getSubmenuItems = (item, defaultColumns) => {
|
|
|
344
353
|
else {
|
|
345
354
|
columns = item.submenu || [];
|
|
346
355
|
}
|
|
347
|
-
// Always include date column at the beginning if it's not already present
|
|
356
|
+
// Always include date column at the beginning if it's not already present (date column submenu disabled)
|
|
348
357
|
const hasDateColumn = columns.some((col) => col.name.toLowerCase() === 'date');
|
|
349
358
|
if (!hasDateColumn) {
|
|
350
|
-
const dateColumn = {
|
|
351
|
-
name: 'date',
|
|
352
|
-
label: 'Date',
|
|
353
|
-
selected: true,
|
|
354
|
-
};
|
|
359
|
+
const dateColumn = Object.assign({}, DATE_COLUMN_CONFIG);
|
|
355
360
|
return [dateColumn, ...columns];
|
|
356
361
|
}
|
|
357
|
-
// Ensure date column is first
|
|
362
|
+
// Ensure date column is first and strip submenu from date (date column submenu disabled); always apply date pin/order config
|
|
358
363
|
const dateColumnIndex = columns.findIndex((col) => col.name.toLowerCase() === 'date');
|
|
359
364
|
if (dateColumnIndex > 0) {
|
|
360
|
-
const
|
|
365
|
+
const dateCol = columns[dateColumnIndex];
|
|
366
|
+
const dateColumn = Object.assign(Object.assign(Object.assign({}, DATE_COLUMN_CONFIG), dateCol), { menuItems: undefined });
|
|
361
367
|
const otherColumns = columns.filter((col) => col.name.toLowerCase() !== 'date');
|
|
362
368
|
return [dateColumn, ...otherColumns];
|
|
363
369
|
}
|
|
364
|
-
return columns
|
|
370
|
+
return columns.map((col) => col.name.toLowerCase() === 'date'
|
|
371
|
+
? Object.assign(Object.assign(Object.assign({}, DATE_COLUMN_CONFIG), col), { menuItems: undefined }) : col);
|
|
365
372
|
};
|
|
366
373
|
/**
|
|
367
374
|
* Check if a view menu item has submenu
|
|
@@ -405,6 +412,9 @@ export const areSomeCurrentColumnsSelected = (columns, allSelected) => {
|
|
|
405
412
|
export const toggleAllCurrentColumns = (columns, shouldSelect) => {
|
|
406
413
|
return columns.map((col) => {
|
|
407
414
|
var _a;
|
|
415
|
+
if (isDateColumn(col.name)) {
|
|
416
|
+
return Object.assign(Object.assign({}, col), { selected: true });
|
|
417
|
+
}
|
|
408
418
|
const updatedMenuItems = (_a = col.menuItems) === null || _a === void 0 ? void 0 : _a.map((item) => (Object.assign(Object.assign({}, item), { selected: shouldSelect })));
|
|
409
419
|
return Object.assign(Object.assign({}, col), { selected: shouldSelect, menuItems: updatedMenuItems });
|
|
410
420
|
});
|
|
@@ -2,7 +2,7 @@ import React, { ReactNode } from 'react';
|
|
|
2
2
|
import type { CalenderMode, TableHeaderStatus, ColumnViewProps, TableMode, Timezone, SegmentCountry } from '../../types/index.js';
|
|
3
3
|
import { AvailableStatus } from '../StatusBar/type';
|
|
4
4
|
import { PartialExcept } from '../../types/index.js';
|
|
5
|
-
import type { ViewMenuItem, LayoutSection,
|
|
5
|
+
import type { ViewMenuItem, LayoutSection, Template } from './TableView/types';
|
|
6
6
|
type ViewsOptions = {
|
|
7
7
|
default: {};
|
|
8
8
|
developer: {};
|
|
@@ -45,7 +45,6 @@ export interface TableHeaderProps<IStatus extends TableHeaderStatus | TableHeade
|
|
|
45
45
|
id: string;
|
|
46
46
|
label: string;
|
|
47
47
|
}) => void;
|
|
48
|
-
customViews?: ViewMenuItem[];
|
|
49
48
|
onCreateCustomView?: (data: {
|
|
50
49
|
name: string;
|
|
51
50
|
selectedColumns: ColumnViewProps[];
|
|
@@ -57,14 +56,8 @@ export interface TableHeaderProps<IStatus extends TableHeaderStatus | TableHeade
|
|
|
57
56
|
layout: LayoutSection;
|
|
58
57
|
}) => Promise<void>;
|
|
59
58
|
onDeleteCustomView?: (viewId: string) => Promise<void>;
|
|
60
|
-
|
|
61
|
-
initialTableViews?: ColumnViewProps[];
|
|
62
|
-
onCustomViewsChange?: (customViews: ViewMenuItem[]) => void;
|
|
63
|
-
initialCustomViews?: ViewMenuItem[];
|
|
64
|
-
layoutData?: import('./TableView/types').LayoutSection[];
|
|
65
|
-
templates?: import('./TableView/types').TemplatesListResponse | import('./TableView/types').TemplateResponse[];
|
|
59
|
+
templates?: Template[];
|
|
66
60
|
lang?: string;
|
|
67
|
-
apiMetadata?: TemplateAPIMetadata;
|
|
68
61
|
onToggleTextButtonClick?: () => void;
|
|
69
62
|
children?: ReactNode;
|
|
70
63
|
calendarGroupBy?: string;
|
|
@@ -15,6 +15,6 @@ import { ToolbarStyled, StyledBox, ActionsBox } from './style';
|
|
|
15
15
|
import WindowAppIcon from '../WindowAppIcon';
|
|
16
16
|
function Toolbar(_a) {
|
|
17
17
|
var { onMouseEnter, onMouseLeave, isMaximized, isHovered, children, rightActions, leftActions, title, icon } = _a, props = __rest(_a, ["onMouseEnter", "onMouseLeave", "isMaximized", "isHovered", "children", "rightActions", "leftActions", "title", "icon"]);
|
|
18
|
-
return (_jsx(ToolbarStyled, Object.assign({ onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, maximized: isMaximized, id: "toolbar", isHovered: isHovered }, props, { children: _jsxs(StyledBox, Object.assign({ className: "toolbar-wrapper" }, { children: [leftActions ? _jsx(ActionsBox, Object.assign({ className: "action-box" }, { children: leftActions })) : _jsx("div", {}), _jsx(WindowAppIcon, { title: title, icon: icon }), rightActions
|
|
18
|
+
return (_jsx(ToolbarStyled, Object.assign({ onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, maximized: isMaximized, id: "toolbar", isHovered: isHovered }, props, { children: _jsxs(StyledBox, Object.assign({ className: "toolbar-wrapper" }, { children: [leftActions ? _jsx(ActionsBox, Object.assign({ className: "action-box" }, { children: leftActions })) : _jsx("div", {}), _jsx(WindowAppIcon, { title: title, icon: icon }), rightActions || _jsx("div", {})] })) })));
|
|
19
19
|
}
|
|
20
20
|
export default memo(Toolbar);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ISheetViewVirtualTable } from './types';
|
|
3
|
-
declare function SheetViewVirtualTable({ columns, rows, threshold, showHeader, headerProps, rowProps, footerProps, rowHeight, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded, tableBodyStyles, tableTitle, onStartDrag, onColumnPin, clearBackdropVisibilityTimeout, isPinnable, tableMode, overscanCount, windowId, serviceCode, customNoDataComponent, }: Readonly<ISheetViewVirtualTable>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function SheetViewVirtualTable({ columns: inputColumns, rows, threshold, showHeader, headerProps, rowProps, footerProps, rowHeight, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded, tableBodyStyles, tableTitle, onStartDrag, onColumnPin, clearBackdropVisibilityTimeout, isPinnable, tableMode, overscanCount, windowId, serviceCode, customNoDataComponent, defaultSkeleton, }: Readonly<ISheetViewVirtualTable>): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare const _default: import("react").MemoExoticComponent<typeof SheetViewVirtualTable>;
|
|
5
5
|
export default _default;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useCallback, useMemo, useRef, useEffect } from 'react';
|
|
3
3
|
import { SHEET_VIEW_TABLE_THRESHOLD } from '../../../constants/index.js';
|
|
4
|
+
import { getProcessedColumns } from '../../../utils/index.js';
|
|
4
5
|
import TableFooter from '../components/TableFooter/TableFooter';
|
|
5
6
|
import { SheetViewTableContainer } from '../components/style';
|
|
6
7
|
import { SheetViewVirtualTableWrapper } from './style';
|
|
@@ -8,7 +9,9 @@ import { usePinnedColumns, useSynchronizedScroll, useTableState, useTableData, u
|
|
|
8
9
|
import { useColumnResize, useColumnResizeWithPinned, applyColumnWidths } from './features/resize';
|
|
9
10
|
import { ResizeOverlay } from './features/resize/components';
|
|
10
11
|
import { PinnedColumn, MainTable, LoadingMainTable, NoDataView, VirtualTable } from './components';
|
|
11
|
-
function SheetViewVirtualTable({ columns, rows, threshold = SHEET_VIEW_TABLE_THRESHOLD, showHeader, headerProps, rowProps, footerProps, rowHeight = 28, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded = false, tableBodyStyles, tableTitle, onStartDrag, onColumnPin, clearBackdropVisibilityTimeout = 100, isPinnable = false, tableMode, overscanCount, windowId, serviceCode, customNoDataComponent, }) {
|
|
12
|
+
function SheetViewVirtualTable({ columns: inputColumns, rows, threshold = SHEET_VIEW_TABLE_THRESHOLD, showHeader, headerProps, rowProps, footerProps, rowHeight = 28, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded = false, tableBodyStyles, tableTitle, onStartDrag, onColumnPin, clearBackdropVisibilityTimeout = 100, isPinnable = false, tableMode, overscanCount, windowId, serviceCode, customNoDataComponent, defaultSkeleton = false, }) {
|
|
13
|
+
// Use skeleton columns when loading and defaultSkeleton is true (same behavior as VirtualTable)
|
|
14
|
+
const columns = useMemo(() => getProcessedColumns(inputColumns, isLoading !== null && isLoading !== void 0 ? isLoading : false, defaultSkeleton), [inputColumns, isLoading, defaultSkeleton]);
|
|
12
15
|
// Custom hooks for state management
|
|
13
16
|
const { selectedCell, selectedColumn, selectedRow, showBackDrop, setShowBackdrop, handleCellClick, handleColumnClick, handleChipClick, selectedChip, } = useTableState();
|
|
14
17
|
// Refs and state for resize indicator positioning
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { IVirtualTable } from '../../../types/index.js';
|
|
3
|
-
declare function VirtualTable({ columns, rows, threshold, showHeader, headerProps, rowProps, footerProps, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded, tableBodyStyles, tableMode, tableTitle, onStartDrag, isSheetView, isMinimized, footerComponent, customNoDataComponent, }: Readonly<IVirtualTable>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function VirtualTable({ columns: inputColumns, rows, threshold, showHeader, headerProps, rowProps, footerProps, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded, tableBodyStyles, tableMode, tableTitle, onStartDrag, isSheetView, isMinimized, footerComponent, customNoDataComponent, defaultSkeleton, }: Readonly<IVirtualTable>): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare const _default: import("react").MemoExoticComponent<typeof VirtualTable>;
|
|
5
5
|
export default _default;
|
|
@@ -15,7 +15,7 @@ import AutoSizer from 'react-virtualized-auto-sizer';
|
|
|
15
15
|
import InfiniteLoader from 'react-window-infinite-loader';
|
|
16
16
|
import { TABLE_ROW_HEIGHT, TABLE_THRESHOLD, TABLE_LIST_OVER_SCAN, SHEET_VIEW_TABLE_ROW_HEIGHT } from '../../../constants/index.js';
|
|
17
17
|
import { useDelayToSetValue } from '../../../hooks/index.js';
|
|
18
|
-
import { isHeightNotFullyFilledByRows, isNotFoundError, isTimeoutError, hasError } from '../../../utils/index.js';
|
|
18
|
+
import { isHeightNotFullyFilledByRows, isNotFoundError, isTimeoutError, hasError, getProcessedColumns } from '../../../utils/index.js';
|
|
19
19
|
import TableFooter from '../components/TableFooter/TableFooter';
|
|
20
20
|
import TableHeader from '../components/TableHeader';
|
|
21
21
|
import TableLastItem from '../components/TableLastItem';
|
|
@@ -34,7 +34,7 @@ const createItemData = memoize((columns, isLoading, rows, rowProps, scrollToInde
|
|
|
34
34
|
areAllRowsLoaded,
|
|
35
35
|
isSheetView,
|
|
36
36
|
}));
|
|
37
|
-
function VirtualTable({ columns, rows, threshold = TABLE_THRESHOLD, showHeader, headerProps, rowProps, footerProps, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded = false, tableBodyStyles, tableMode, tableTitle, onStartDrag, isSheetView = false, isMinimized, footerComponent, customNoDataComponent, }) {
|
|
37
|
+
function VirtualTable({ columns: inputColumns, rows, threshold = TABLE_THRESHOLD, showHeader, headerProps, rowProps, footerProps, isLoading, error, columnsSorting, onColumnSort, loadMoreItems, isFetchingNextPage, triggerDataRefetch, scrollToIndex, areAllRowsLoaded = false, tableBodyStyles, tableMode, tableTitle, onStartDrag, isSheetView = false, isMinimized, footerComponent, customNoDataComponent, defaultSkeleton = false, }) {
|
|
38
38
|
var _a;
|
|
39
39
|
const theme = useTheme();
|
|
40
40
|
const onPointerDown = (e) => {
|
|
@@ -58,6 +58,7 @@ function VirtualTable({ columns, rows, threshold = TABLE_THRESHOLD, showHeader,
|
|
|
58
58
|
const tableEmpty = !isLoading && rows.length === 0;
|
|
59
59
|
const hasTimeoutError = isTimeoutError(error);
|
|
60
60
|
const lastItemIndex = rows.length - 1;
|
|
61
|
+
const columns = useMemo(() => getProcessedColumns(inputColumns, isLoading !== null && isLoading !== void 0 ? isLoading : false, defaultSkeleton), [inputColumns, isLoading, defaultSkeleton]);
|
|
61
62
|
const shownColumns = useMemo(() => columns.filter((column) => !column.hidden), [columns]);
|
|
62
63
|
const orderedColumns = useMemo(() => shownColumns.sort((a, b) => { var _a, _b; return ((_a = a === null || a === void 0 ? void 0 : a.order) !== null && _a !== void 0 ? _a : 1000000) - ((_b = b === null || b === void 0 ? void 0 : b.order) !== null && _b !== void 0 ? _b : 1000000); }), [shownColumns]);
|
|
63
64
|
const areTotalRowsNotFillingHeight = isHeightNotFullyFilledByRows(rows.length) && !tableLoading;
|
package/build/constants/apps.js
CHANGED
|
@@ -7,6 +7,7 @@ export declare const getPaymentMethodsIcon: (source: string) => string;
|
|
|
7
7
|
export declare const getPaymentIssuersIcon: (source: string) => string;
|
|
8
8
|
export declare const getCountriesIcon: (source: string) => string;
|
|
9
9
|
export declare const getServiceFunctionIcon: (functionCode: string) => string;
|
|
10
|
+
export declare const getStatusIcon: (statusCode: string) => string;
|
|
10
11
|
export declare const getCurrenciesIcon: (currency: string) => string;
|
|
11
12
|
export declare const getAuthorityIcon: (authority: string) => string;
|
|
12
13
|
export declare const SARIconImage: string;
|
|
@@ -9,6 +9,7 @@ export const getPaymentMethodsIcon = (source) => `${lightUrl}/payment-method/v2/
|
|
|
9
9
|
export const getPaymentIssuersIcon = (source) => `${lightUrl}/payment-issuer/${source}.svg`;
|
|
10
10
|
export const getCountriesIcon = (source) => `${lightUrl}/country/v3/${source}.svg`;
|
|
11
11
|
export const getServiceFunctionIcon = (functionCode) => `${lightUrl}/function/${functionCode}.svg`;
|
|
12
|
+
export const getStatusIcon = (statusCode) => `${lightUrl}/statusIcons/${statusCode}.svg`;
|
|
12
13
|
export const getCurrenciesIcon = (currency) => `${cdnUrl}/currency/v3/light/${currency}.svg`;
|
|
13
14
|
export const getAuthorityIcon = (authority) => {
|
|
14
15
|
const authorityWithoutSpaces = authority.replace(/\s/g, '');
|
package/build/types/column.d.ts
CHANGED
|
@@ -40,4 +40,12 @@ export interface ColumnViewProps {
|
|
|
40
40
|
disabled?: boolean;
|
|
41
41
|
sx?: SxProps<Theme>;
|
|
42
42
|
menuSx?: SxProps<Theme>;
|
|
43
|
+
/** Table column order (date column should always be 1) */
|
|
44
|
+
order?: number;
|
|
45
|
+
/** Pinned position (date column should always be 'start') */
|
|
46
|
+
pinned?: 'start' | 'end';
|
|
47
|
+
/** Whether column is pinned by default (date column should always be true) */
|
|
48
|
+
isDefaultPinned?: boolean;
|
|
49
|
+
/** Whether column can be pinned (date column should always be true) */
|
|
50
|
+
pinnable?: boolean;
|
|
43
51
|
}
|
package/build/types/reports.d.ts
CHANGED
|
@@ -4,3 +4,24 @@ export declare enum ReportStatusEnum {
|
|
|
4
4
|
PROCESSING = "PROCESSING",
|
|
5
5
|
INITIATED = "INITIATED"
|
|
6
6
|
}
|
|
7
|
+
export interface Report {
|
|
8
|
+
id: string;
|
|
9
|
+
object: string;
|
|
10
|
+
live_mode: boolean;
|
|
11
|
+
api_version: string;
|
|
12
|
+
feature_version: string;
|
|
13
|
+
type: string;
|
|
14
|
+
status: string;
|
|
15
|
+
segment_id: string;
|
|
16
|
+
created_at: number;
|
|
17
|
+
started_at: number;
|
|
18
|
+
completed_at: number;
|
|
19
|
+
total_records: number;
|
|
20
|
+
result_file: string;
|
|
21
|
+
download_count: string;
|
|
22
|
+
last_downloaded_at: number;
|
|
23
|
+
response: {
|
|
24
|
+
code: string;
|
|
25
|
+
message: string;
|
|
26
|
+
};
|
|
27
|
+
}
|