@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.2

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.
Files changed (47) hide show
  1. package/build/components/Sandbox/style.js +2 -3
  2. package/build/components/TableHeader/FiltersRow.d.ts +1 -1
  3. package/build/components/TableHeader/FiltersRow.js +3 -3
  4. package/build/components/TableHeader/TableHeader.d.ts +1 -1
  5. package/build/components/TableHeader/TableHeader.js +2 -2
  6. package/build/components/TableHeader/TableView/ViewsDropdown.d.ts +1 -1
  7. package/build/components/TableHeader/TableView/ViewsDropdown.js +116 -197
  8. package/build/components/TableHeader/TableView/ViewsMenu.d.ts +5 -0
  9. package/build/components/TableHeader/TableView/ViewsMenu.js +76 -0
  10. package/build/components/TableHeader/TableView/components/ColumnList.js +4 -4
  11. package/build/components/TableHeader/TableView/components/ViewsSubmenu.js +46 -30
  12. package/build/components/TableHeader/TableView/constants.d.ts +1 -0
  13. package/build/components/TableHeader/TableView/constants.js +1 -0
  14. package/build/components/TableHeader/TableView/hooks/index.d.ts +1 -1
  15. package/build/components/TableHeader/TableView/hooks/index.js +1 -1
  16. package/build/components/TableHeader/TableView/hooks/useCreateViewDialog.js +12 -12
  17. package/build/components/TableHeader/TableView/hooks/useNestedSubmenu.js +2 -9
  18. package/build/components/TableHeader/TableView/hooks/useSubmenuHover.js +1 -2
  19. package/build/components/TableHeader/TableView/hooks/useViewsManager.d.ts +6 -8
  20. package/build/components/TableHeader/TableView/hooks/useViewsManager.js +45 -94
  21. package/build/components/TableHeader/TableView/hooks/useViewsMenu.d.ts +44 -0
  22. package/build/components/TableHeader/TableView/hooks/useViewsMenu.js +182 -0
  23. package/build/components/TableHeader/TableView/index.d.ts +3 -3
  24. package/build/components/TableHeader/TableView/index.js +2 -4
  25. package/build/components/TableHeader/TableView/types.d.ts +18 -32
  26. package/build/components/TableHeader/TableView/utils.d.ts +5 -5
  27. package/build/components/TableHeader/TableView/utils.js +22 -13
  28. package/build/components/TableHeader/index.d.ts +1 -0
  29. package/build/components/TableHeader/type.d.ts +2 -9
  30. package/build/components/Toolbar/Toolbar.js +1 -1
  31. package/build/components/VirtualTables/VirtualTable/VirtualTable.d.ts +1 -1
  32. package/build/components/VirtualTables/VirtualTable/VirtualTable.js +4 -3
  33. package/build/constants/apps.js +2 -0
  34. package/build/constants/assets.d.ts +1 -0
  35. package/build/constants/assets.js +1 -0
  36. package/build/types/reports.d.ts +21 -0
  37. package/build/types/table.d.ts +1 -0
  38. package/build/utils/date.js +5 -3
  39. package/build/utils/index.d.ts +1 -0
  40. package/build/utils/index.js +1 -0
  41. package/build/utils/skeletonColumns.d.ts +4 -0
  42. package/build/utils/skeletonColumns.js +17 -0
  43. package/package.json +2 -2
  44. package/build/components/TableHeader/TableView/ViewSelector.d.ts +0 -5
  45. package/build/components/TableHeader/TableView/ViewSelector.js +0 -46
  46. package/build/components/TableHeader/TableView/hooks/useViewSelector.d.ts +0 -59
  47. package/build/components/TableHeader/TableView/hooks/useViewSelector.js +0 -193
@@ -0,0 +1,182 @@
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
+ const updatedView = Object.assign(Object.assign({}, editingView), { label: data.name, submenu: deepCloneColumns(data.selectedColumns), columns: data.selectedColumns.map((c) => c.name) });
143
+ setSelectedView(updatedView);
144
+ setSelectedViewInfo({ id: updatedView.id, label: updatedView.label });
145
+ setCurrentViewColumns(deepCloneColumns(data.selectedColumns));
146
+ onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(updatedView));
147
+ }
148
+ else {
149
+ yield (onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(data));
150
+ }
151
+ }), [editingView, onEditCustomView, onCreateCustomView, onViewChange, getViewForParent]);
152
+ const handleDeleteView = useCallback((viewId) => __awaiter(void 0, void 0, void 0, function* () {
153
+ const viewToDelete = allTemplates.find((view) => view.id === viewId || view.templateId === viewId);
154
+ const templateId = (viewToDelete === null || viewToDelete === void 0 ? void 0 : viewToDelete.templateId) || viewId;
155
+ yield (onDeleteCustomView === null || onDeleteCustomView === void 0 ? void 0 : onDeleteCustomView(templateId));
156
+ if ((selectedView === null || selectedView === void 0 ? void 0 : selectedView.id) === viewId || (selectedView === null || selectedView === void 0 ? void 0 : selectedView.templateId) === viewId) {
157
+ setSelectedView(defaultTemplate);
158
+ setCurrentViewColumns(deepCloneColumns(defaultColumns));
159
+ if (defaultTemplate) {
160
+ onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(getViewForParent(defaultTemplate));
161
+ }
162
+ }
163
+ }), [allTemplates, onDeleteCustomView, selectedView, defaultTemplate, defaultColumns, onViewChange, getViewForParent]);
164
+ return {
165
+ anchorEl,
166
+ isCreateDialogOpen,
167
+ editingView,
168
+ selectedViewInfo,
169
+ shouldUseCurrentState,
170
+ selectedView,
171
+ currentViewColumns,
172
+ handleViewButtonClick,
173
+ handleCloseViewDropdown,
174
+ handleSelectedViewInfo,
175
+ handleOpenCreateDialog,
176
+ handleOpenEditDialog,
177
+ handleCloseCreateDialog,
178
+ handleSaveView,
179
+ handleDeleteView,
180
+ updateSelectedView,
181
+ };
182
+ };
@@ -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 ViewSelector } from './ViewSelector';
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, ViewMode, CreateCustomViewDialogProps, LayoutSection, ColumnItem, FieldItem, TemplateResponse, TemplatesListResponse, TemplateAPIMetadata, CreateTemplatePayload, UpdateTemplatePayload, } from './types';
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 ViewSelector } from './ViewSelector';
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
- /// <reference types="react" />
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 TemplateResponse {
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 TemplatesListResponse {
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: TemplateResponse[];
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?: ViewMode;
98
+ mode?: TableMode;
106
99
  }
107
100
  export interface ColumnCheckState {
108
101
  checked: boolean;
109
102
  indeterminate: boolean;
110
103
  }
111
- export interface ViewSelectorProps {
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?: import('../../../types/index.js').TableMode;
130
- onTableViewsChange?: (tableViews: ColumnViewProps[]) => void;
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
- tableViews?: ColumnViewProps[];
147
- setTableViews?: (columns: ColumnViewProps[]) => void;
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
- mode: ViewMode;
196
- templates?: TemplatesListResponse | TemplateResponse[];
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, ViewMode } from './types';
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: ViewMode, layoutData?: LayoutSection[]) => ColumnViewProps[];
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?: ViewMode, lang?: string) => {
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: ViewMode, lang?: string) => LayoutSection;
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
- const section = layoutData.find((s) => s.code.toLowerCase() === mode.toLowerCase());
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
- const section = template.layout.find((s) => s.code.toLowerCase() === mode.toLowerCase());
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: mode === 'advanced' ? 'Advanced' : 'Sheet',
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,21 @@ 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(Object.assign({}, DATE_COLUMN_CONFIG), { menuItems: undefined });
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)
358
363
  const dateColumnIndex = columns.findIndex((col) => col.name.toLowerCase() === 'date');
359
364
  if (dateColumnIndex > 0) {
360
- const dateColumn = columns[dateColumnIndex];
365
+ const dateCol = columns[dateColumnIndex];
366
+ const dateColumn = Object.assign(Object.assign({}, 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' ? Object.assign(Object.assign({}, col), { menuItems: undefined }) : col);
365
371
  };
366
372
  /**
367
373
  * Check if a view menu item has submenu
@@ -405,6 +411,9 @@ export const areSomeCurrentColumnsSelected = (columns, allSelected) => {
405
411
  export const toggleAllCurrentColumns = (columns, shouldSelect) => {
406
412
  return columns.map((col) => {
407
413
  var _a;
414
+ if (isDateColumn(col.name)) {
415
+ return Object.assign(Object.assign({}, col), { selected: true });
416
+ }
408
417
  const updatedMenuItems = (_a = col.menuItems) === null || _a === void 0 ? void 0 : _a.map((item) => (Object.assign(Object.assign({}, item), { selected: shouldSelect })));
409
418
  return Object.assign(Object.assign({}, col), { selected: shouldSelect, menuItems: updatedMenuItems });
410
419
  });
@@ -6,3 +6,4 @@ export { default as FiltersRowWrapper } from './FiltersRowWrapper';
6
6
  export { default as FiltersRow } from './FiltersRow';
7
7
  export * from './style';
8
8
  export * from './type';
9
+ export type { Template, LayoutSection, ViewMenuItem } from './TableView/types';
@@ -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, TemplateAPIMetadata } from './TableView/types';
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
- onTableViewsChange?: (tableViews: ColumnViewProps[]) => void;
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 ? (_jsx(ActionsBox, Object.assign({ sx: { justifyContent: 'flex-end' }, className: "action-box" }, { children: rightActions }))) : (_jsx("div", {}))] })) })));
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 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, 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, 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,7 +58,8 @@ 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 shownColumns = useMemo(() => columns.filter((column) => !column.hidden), [columns]);
61
+ const processedColumns = useMemo(() => getProcessedColumns(columns, isLoading !== null && isLoading !== void 0 ? isLoading : false, defaultSkeleton), [columns, isLoading, defaultSkeleton]);
62
+ const shownColumns = useMemo(() => processedColumns.filter((column) => !column.hidden), [processedColumns]);
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;
64
65
  const itemsCount = isDelayedFetchingNextPage || (areAllRowsLoaded && !areTotalRowsNotFillingHeight) ? rows.length + 1 : rows.length;
@@ -492,4 +492,6 @@ export const MF_APPS_MAPPER = new Set([
492
492
  APP_CODES.payouts.code,
493
493
  APP_CODES.reports.code,
494
494
  APP_CODES.leads.code,
495
+ APP_CODES.wallet.code,
496
+ APP_CODES.authentication.code,
495
497
  ]);
@@ -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, '');
@@ -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
+ }
@@ -116,6 +116,7 @@ export interface IVirtualTable<R = any> {
116
116
  headerProps?: TableHeadProps;
117
117
  isLoading?: boolean;
118
118
  isFetchingNextPage?: boolean;
119
+ defaultSkeleton?: boolean;
119
120
  rowProps?: TableRowProps & {
120
121
  onRowClick?: (row: R, index: number) => void;
121
122
  };
@@ -69,9 +69,11 @@ export const formatUTCOffset = (offset = 0) => {
69
69
  * @returns - Array of two dates [startDate, endDate]
70
70
  */
71
71
  export const getDefaultDateRange = (startDay = 6) => {
72
- const monthDaysMinus = dayjs().subtract(startDay, 'day').hour(0).minute(0).second(0).toDate();
73
- const today = dayjs(new Date()).hour(23).minute(59).second(59).toDate();
74
- return [monthDaysMinus, today];
72
+ const safeDays = Number.isFinite(startDay) && startDay >= 0 ? startDay : 0;
73
+ const now = dayjs();
74
+ const start = now.subtract(safeDays, 'day').startOf('day');
75
+ const end = now.endOf('day');
76
+ return [start.toDate(), end.toDate()];
75
77
  };
76
78
  export const getUTCTimestamp = (date) => {
77
79
  // Create a Date object with the local date string
@@ -45,3 +45,4 @@ export * from './boolean';
45
45
  export * from './columnResizeStorage';
46
46
  export * from './timezone';
47
47
  export * from './merchantSource';
48
+ export * from './skeletonColumns';
@@ -45,3 +45,4 @@ export * from './boolean';
45
45
  export * from './columnResizeStorage';
46
46
  export * from './timezone';
47
47
  export * from './merchantSource';
48
+ export * from './skeletonColumns';