@tap-payments/os-micro-frontend-shared 0.1.374-test.1 → 0.1.374-test.1-test.2-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/FilterDropdown/FilterDropdown.d.ts +4 -11
- package/build/components/FilterDropdown/FilterDropdown.js +4 -18
- package/build/components/FilterDropdown/style.js +1 -1
- package/build/components/RangeCalender/RangeCalender.js +2 -4
- package/build/components/Sandbox/style.js +3 -2
- package/build/components/TableHeader/FiltersRow.d.ts +1 -1
- package/build/components/TableHeader/FiltersRow.js +4 -2
- package/build/components/TableHeader/TableHeader.d.ts +1 -1
- package/build/components/TableHeader/TableHeader.js +2 -2
- package/build/components/TableHeader/TableView/CreateViewDialog.d.ts +3 -0
- package/build/components/TableHeader/TableView/CreateViewDialog.js +91 -0
- package/build/components/TableHeader/TableView/CustomViews.js +1 -1
- package/build/components/TableHeader/TableView/TableView.js +0 -1
- package/build/components/TableHeader/TableView/ViewSelector.d.ts +5 -0
- package/build/components/TableHeader/TableView/ViewSelector.js +88 -0
- package/build/components/TableHeader/TableView/ViewsDropdown.d.ts +5 -0
- package/build/components/TableHeader/TableView/ViewsDropdown.js +184 -0
- package/build/components/TableHeader/TableView/components/ColumnList.d.ts +3 -0
- package/build/components/TableHeader/TableView/components/ColumnList.js +70 -0
- package/build/components/TableHeader/TableView/components/ViewsSubmenu.d.ts +3 -0
- package/build/components/TableHeader/TableView/components/ViewsSubmenu.js +71 -0
- package/build/components/TableHeader/TableView/components/index.d.ts +2 -0
- package/build/components/TableHeader/TableView/components/index.js +2 -0
- package/build/components/TableHeader/TableView/constants.d.ts +10 -0
- package/build/components/TableHeader/TableView/constants.js +10 -0
- package/build/components/TableHeader/TableView/data.d.ts +5 -0
- package/build/components/TableHeader/TableView/data.js +48 -0
- package/build/components/TableHeader/TableView/hooks/index.d.ts +6 -0
- package/build/components/TableHeader/TableView/hooks/index.js +6 -0
- package/build/components/TableHeader/TableView/hooks/useCreateViewDialog.d.ts +22 -0
- package/build/components/TableHeader/TableView/hooks/useCreateViewDialog.js +88 -0
- package/build/components/TableHeader/TableView/hooks/useDialogPosition.d.ts +8 -0
- package/build/components/TableHeader/TableView/hooks/useDialogPosition.js +16 -0
- package/build/components/TableHeader/TableView/hooks/useNestedSubmenu.d.ts +7 -0
- package/build/components/TableHeader/TableView/hooks/useNestedSubmenu.js +34 -0
- package/build/components/TableHeader/TableView/hooks/useOriginalColumns.d.ts +6 -0
- package/build/components/TableHeader/TableView/hooks/useOriginalColumns.js +18 -0
- package/build/components/TableHeader/TableView/hooks/useSubmenuHover.d.ts +8 -0
- package/build/components/TableHeader/TableView/hooks/useSubmenuHover.js +43 -0
- package/build/components/TableHeader/TableView/hooks/useViewSelector.d.ts +60 -0
- package/build/components/TableHeader/TableView/hooks/useViewSelector.js +175 -0
- package/build/components/TableHeader/TableView/hooks/useViewsManager.d.ts +20 -0
- package/build/components/TableHeader/TableView/hooks/useViewsManager.js +89 -0
- package/build/components/TableHeader/TableView/index.d.ts +12 -3
- package/build/components/TableHeader/TableView/index.js +13 -3
- package/build/components/TableHeader/TableView/styles.d.ts +127 -0
- package/build/components/TableHeader/TableView/styles.js +426 -0
- package/build/components/TableHeader/TableView/types.d.ts +199 -0
- package/build/components/TableHeader/TableView/utils.d.ts +121 -0
- package/build/components/TableHeader/TableView/utils.js +463 -0
- package/build/components/TableHeader/type.d.ts +22 -1
- package/build/components/Toolbar/Toolbar.js +1 -1
- package/build/components/index.d.ts +0 -1
- package/build/components/index.js +0 -1
- package/build/constants/apps.js +0 -2
- package/build/constants/assets.d.ts +1 -2
- package/build/constants/assets.js +1 -2
- package/build/types/index.d.ts +0 -1
- package/build/types/index.js +0 -1
- package/build/types/reports.d.ts +0 -21
- package/build/utils/date.d.ts +0 -5
- package/build/utils/date.js +0 -37
- package/package.json +3 -2
- package/build/components/MultiDatakeyDonut/MultiDatakeyDonut.d.ts +0 -12
- package/build/components/MultiDatakeyDonut/MultiDatakeyDonut.js +0 -19
- package/build/components/MultiDatakeyDonut/index.d.ts +0 -1
- package/build/components/MultiDatakeyDonut/index.js +0 -1
- package/build/components/MultiDatakeyDonut/style.d.ts +0 -10
- package/build/components/MultiDatakeyDonut/style.js +0 -23
- package/build/types/toggleOptions.d.ts +0 -2
- /package/build/{types/toggleOptions.js → components/TableHeader/TableView/types.js} +0 -0
|
@@ -0,0 +1,175 @@
|
|
|
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 useViewSelector = ({ mode, onViewChange, onTableViewsChange, onCustomViewsChange, onCreateCustomView, onEditCustomView, onDeleteCustomView, resetTableViews, setTableViews, tableViews, customViews, defaultColumns, defaultTemplate, allTemplates, setInternalCustomViews, apiMetadata, }) => {
|
|
13
|
+
const [anchorViewEl, setAnchorViewEl] = useState(null);
|
|
14
|
+
const [defaultViewEl, setDefaultViewElement] = useState(null);
|
|
15
|
+
const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false);
|
|
16
|
+
const [editingView, setEditingView] = useState(null);
|
|
17
|
+
const [selectedViewInfo, setSelectedViewInfo] = useState({ id: 'default', label: 'Default' });
|
|
18
|
+
const [shouldUseCurrentState, setShouldUseCurrentState] = useState(false);
|
|
19
|
+
const [selectedView, setSelectedView] = useState(undefined);
|
|
20
|
+
// Current view columns - this is what gets displayed and can be modified
|
|
21
|
+
const [currentViewColumns, setCurrentViewColumns] = useState([]);
|
|
22
|
+
const hasInitializedRef = useRef(false);
|
|
23
|
+
// Initialize with default template on mount
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (hasInitializedRef.current)
|
|
26
|
+
return;
|
|
27
|
+
if (!defaultTemplate)
|
|
28
|
+
return;
|
|
29
|
+
setSelectedView(defaultTemplate);
|
|
30
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
31
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(defaultTemplate);
|
|
32
|
+
hasInitializedRef.current = true;
|
|
33
|
+
}, [defaultTemplate, defaultColumns, onViewChange]);
|
|
34
|
+
// Sync currentViewColumns with defaultColumns when they change (e.g., after save)
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!hasInitializedRef.current)
|
|
37
|
+
return;
|
|
38
|
+
if ((selectedView === null || selectedView === void 0 ? void 0 : selectedView.default) && defaultColumns.length > 0) {
|
|
39
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
40
|
+
}
|
|
41
|
+
}, [defaultColumns, selectedView === null || selectedView === void 0 ? void 0 : selectedView.default]);
|
|
42
|
+
// Track the last mode we successfully synced columns for
|
|
43
|
+
const lastSyncedModeRef = useRef(null);
|
|
44
|
+
// Handle mode changes - sync with allTemplates updates
|
|
45
|
+
// This effect needs to run whenever mode changes OR when defaultColumns/allTemplates update
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (!hasInitializedRef.current)
|
|
48
|
+
return;
|
|
49
|
+
if (!selectedView)
|
|
50
|
+
return;
|
|
51
|
+
// Check if we need to sync: either mode changed, or we haven't synced for current mode yet
|
|
52
|
+
const needsSync = lastSyncedModeRef.current !== mode;
|
|
53
|
+
if (!needsSync)
|
|
54
|
+
return;
|
|
55
|
+
// For default template, wait until defaultColumns has data for the new mode
|
|
56
|
+
if (selectedView.default) {
|
|
57
|
+
if (defaultColumns.length === 0)
|
|
58
|
+
return; // Wait for columns to load
|
|
59
|
+
const newView = Object.assign(Object.assign({}, selectedView), { submenu: deepCloneColumns(defaultColumns), columns: defaultColumns.map((col) => col.name) });
|
|
60
|
+
setSelectedView(newView);
|
|
61
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
62
|
+
lastSyncedModeRef.current = mode; // Mark as synced only after successful update
|
|
63
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(newView);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Custom template: find it in allTemplates (which has new mode's columns)
|
|
67
|
+
const updatedTemplate = allTemplates.find((t) => t.templateId === selectedView.templateId || t.id === selectedView.id);
|
|
68
|
+
if (updatedTemplate && updatedTemplate.submenu && updatedTemplate.submenu.length > 0) {
|
|
69
|
+
const newView = Object.assign(Object.assign({}, updatedTemplate), { submenu: deepCloneColumns(updatedTemplate.submenu) });
|
|
70
|
+
setSelectedView(newView);
|
|
71
|
+
setCurrentViewColumns(deepCloneColumns(updatedTemplate.submenu));
|
|
72
|
+
lastSyncedModeRef.current = mode; // Mark as synced only after successful update
|
|
73
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(newView);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, [mode, defaultColumns, selectedView, allTemplates, onViewChange]);
|
|
77
|
+
const handleViewButtonClick = useCallback((event) => {
|
|
78
|
+
setAnchorViewEl(event.currentTarget);
|
|
79
|
+
setDefaultViewElement(event.currentTarget);
|
|
80
|
+
}, []);
|
|
81
|
+
const handleCloseViewDropdown = useCallback(() => {
|
|
82
|
+
setDefaultViewElement(null);
|
|
83
|
+
}, []);
|
|
84
|
+
const handleSelectedViewInfo = useCallback((selected, viewMenuItem) => {
|
|
85
|
+
setSelectedViewInfo(selected);
|
|
86
|
+
const newSelectedView = viewMenuItem || undefined;
|
|
87
|
+
setSelectedView(newSelectedView);
|
|
88
|
+
setCurrentViewColumns(deepCloneColumns((newSelectedView === null || newSelectedView === void 0 ? void 0 : newSelectedView.submenu) || []));
|
|
89
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(newSelectedView);
|
|
90
|
+
handleCloseViewDropdown();
|
|
91
|
+
}, [handleCloseViewDropdown, onViewChange]);
|
|
92
|
+
// Update selected view with modified columns
|
|
93
|
+
const updateSelectedView = useCallback((updatedView) => {
|
|
94
|
+
setSelectedView(updatedView);
|
|
95
|
+
setCurrentViewColumns(deepCloneColumns(updatedView.submenu || []));
|
|
96
|
+
setSelectedViewInfo({ id: updatedView.id, label: updatedView.label });
|
|
97
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(updatedView);
|
|
98
|
+
}, [onViewChange]);
|
|
99
|
+
// Update current view columns (for temporary modifications)
|
|
100
|
+
const updateCurrentViewColumns = useCallback((columns) => {
|
|
101
|
+
setCurrentViewColumns(columns);
|
|
102
|
+
}, []);
|
|
103
|
+
const handleOpenCreateDialog = useCallback((useCurrentState = false) => {
|
|
104
|
+
setEditingView(null);
|
|
105
|
+
setShouldUseCurrentState(useCurrentState);
|
|
106
|
+
setIsCreateDialogOpen(true);
|
|
107
|
+
setDefaultViewElement(null);
|
|
108
|
+
}, []);
|
|
109
|
+
const handleOpenEditDialog = useCallback((view) => {
|
|
110
|
+
setEditingView(view);
|
|
111
|
+
setShouldUseCurrentState(true);
|
|
112
|
+
setIsCreateDialogOpen(true);
|
|
113
|
+
}, []);
|
|
114
|
+
const handleCloseCreateDialog = useCallback(() => {
|
|
115
|
+
setIsCreateDialogOpen(false);
|
|
116
|
+
setEditingView(null);
|
|
117
|
+
setShouldUseCurrentState(false);
|
|
118
|
+
}, []);
|
|
119
|
+
const handleSaveView = useCallback((data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
+
if (editingView) {
|
|
121
|
+
const templateId = editingView.templateId || editingView.id;
|
|
122
|
+
yield (onEditCustomView === null || onEditCustomView === void 0 ? void 0 : onEditCustomView(templateId, data));
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
yield (onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(data));
|
|
126
|
+
}
|
|
127
|
+
}), [editingView, onEditCustomView, onCreateCustomView]);
|
|
128
|
+
const handleDeleteView = useCallback((viewId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
129
|
+
const viewToDelete = allTemplates.find((view) => view.id === viewId || view.templateId === viewId);
|
|
130
|
+
const templateId = (viewToDelete === null || viewToDelete === void 0 ? void 0 : viewToDelete.templateId) || viewId;
|
|
131
|
+
yield (onDeleteCustomView === null || onDeleteCustomView === void 0 ? void 0 : onDeleteCustomView(templateId));
|
|
132
|
+
// If deleted view was selected, reset to default
|
|
133
|
+
if ((selectedView === null || selectedView === void 0 ? void 0 : selectedView.id) === viewId || (selectedView === null || selectedView === void 0 ? void 0 : selectedView.templateId) === viewId) {
|
|
134
|
+
setSelectedView(defaultTemplate);
|
|
135
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
136
|
+
onViewChange === null || onViewChange === void 0 ? void 0 : onViewChange(defaultTemplate);
|
|
137
|
+
}
|
|
138
|
+
}), [allTemplates, onDeleteCustomView, selectedView, defaultTemplate, defaultColumns, onViewChange]);
|
|
139
|
+
const handleResetViews = useCallback((views) => {
|
|
140
|
+
if (resetTableViews) {
|
|
141
|
+
resetTableViews({ id: views[0], label: views[0] });
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
setCurrentViewColumns(deepCloneColumns(defaultColumns));
|
|
145
|
+
}
|
|
146
|
+
}, [resetTableViews, defaultColumns]);
|
|
147
|
+
const handleTableViewsChange = useCallback((newTableViews) => {
|
|
148
|
+
setTableViews === null || setTableViews === void 0 ? void 0 : setTableViews(newTableViews);
|
|
149
|
+
onTableViewsChange === null || onTableViewsChange === void 0 ? void 0 : onTableViewsChange(newTableViews);
|
|
150
|
+
setCurrentViewColumns(deepCloneColumns(newTableViews));
|
|
151
|
+
}, [setTableViews, onTableViewsChange]);
|
|
152
|
+
return {
|
|
153
|
+
anchorViewEl,
|
|
154
|
+
defaultViewEl,
|
|
155
|
+
setDefaultViewElement,
|
|
156
|
+
isCreateDialogOpen,
|
|
157
|
+
editingView,
|
|
158
|
+
selectedViewInfo,
|
|
159
|
+
shouldUseCurrentState,
|
|
160
|
+
selectedView,
|
|
161
|
+
currentViewColumns,
|
|
162
|
+
handleViewButtonClick,
|
|
163
|
+
handleCloseViewDropdown,
|
|
164
|
+
handleSelectedViewInfo,
|
|
165
|
+
handleOpenCreateDialog,
|
|
166
|
+
handleOpenEditDialog,
|
|
167
|
+
handleCloseCreateDialog,
|
|
168
|
+
handleSaveView,
|
|
169
|
+
handleDeleteView,
|
|
170
|
+
handleResetViews,
|
|
171
|
+
handleTableViewsChange,
|
|
172
|
+
updateSelectedView,
|
|
173
|
+
updateCurrentViewColumns,
|
|
174
|
+
};
|
|
175
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { ColumnViewProps } from '../../../../types/index.js';
|
|
3
|
+
import type { UseViewsManagerProps, ViewMenuItem } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Simplified hook for managing templates and views.
|
|
6
|
+
*
|
|
7
|
+
* Key principles:
|
|
8
|
+
* - Templates from parent are parsed into allTemplates
|
|
9
|
+
* - defaultColumns is the local working copy that can be modified
|
|
10
|
+
* - When user modifies default template, we keep changes locally
|
|
11
|
+
*/
|
|
12
|
+
export declare const useViewsManager: ({ tableMode, templates, lang }: UseViewsManagerProps) => {
|
|
13
|
+
defaultTemplate: ViewMenuItem | undefined;
|
|
14
|
+
customViews: ViewMenuItem[];
|
|
15
|
+
allTemplates: ViewMenuItem[];
|
|
16
|
+
defaultColumns: ColumnViewProps[];
|
|
17
|
+
updateDefaultColumns: (columns: ColumnViewProps[]) => void;
|
|
18
|
+
internalCustomViews: ViewMenuItem[];
|
|
19
|
+
setInternalCustomViews: import("react").Dispatch<import("react").SetStateAction<ViewMenuItem[]>>;
|
|
20
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { useState, useEffect, useMemo, useCallback } from 'react';
|
|
2
|
+
import { transformTemplatesToViewMenuItems, deepCloneColumns } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Simplified hook for managing templates and views.
|
|
5
|
+
*
|
|
6
|
+
* Key principles:
|
|
7
|
+
* - Templates from parent are parsed into allTemplates
|
|
8
|
+
* - defaultColumns is the local working copy that can be modified
|
|
9
|
+
* - When user modifies default template, we keep changes locally
|
|
10
|
+
*/
|
|
11
|
+
export const useViewsManager = ({ tableMode, templates, lang = 'en' }) => {
|
|
12
|
+
// Parse templates (this just transforms the data, doesn't manage modifications)
|
|
13
|
+
const parsedTemplates = useMemo(() => {
|
|
14
|
+
if (!templates) {
|
|
15
|
+
return {
|
|
16
|
+
customViews: [],
|
|
17
|
+
defaultTemplate: undefined,
|
|
18
|
+
templateDefaultColumns: [],
|
|
19
|
+
allTemplates: [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const templatesArray = Array.isArray(templates) ? templates : templates.templates;
|
|
23
|
+
const { customViews, defaultTemplate } = transformTemplatesToViewMenuItems(templatesArray, tableMode, lang);
|
|
24
|
+
// Combine all templates for easy access
|
|
25
|
+
const allTemplates = defaultTemplate ? [defaultTemplate, ...customViews] : customViews;
|
|
26
|
+
return {
|
|
27
|
+
customViews,
|
|
28
|
+
defaultTemplate,
|
|
29
|
+
templateDefaultColumns: (defaultTemplate === null || defaultTemplate === void 0 ? void 0 : defaultTemplate.submenu) || [],
|
|
30
|
+
allTemplates,
|
|
31
|
+
};
|
|
32
|
+
}, [templates, tableMode, lang]);
|
|
33
|
+
// Local state for default columns - this is the working copy that can be modified
|
|
34
|
+
const [defaultColumns, setDefaultColumns] = useState([]);
|
|
35
|
+
// Track if we've initialized for this mode (to avoid resetting user modifications)
|
|
36
|
+
const [initializedMode, setInitializedMode] = useState(null);
|
|
37
|
+
// Initialize defaultColumns when templates load or mode changes
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
// Only initialize if mode changed or we haven't initialized yet
|
|
40
|
+
if (initializedMode !== tableMode && parsedTemplates.templateDefaultColumns.length > 0) {
|
|
41
|
+
setDefaultColumns(deepCloneColumns(parsedTemplates.templateDefaultColumns));
|
|
42
|
+
setInitializedMode(tableMode);
|
|
43
|
+
}
|
|
44
|
+
}, [tableMode, parsedTemplates.templateDefaultColumns, initializedMode]);
|
|
45
|
+
// Custom views state
|
|
46
|
+
const [internalCustomViews, setInternalCustomViews] = useState([]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
setInternalCustomViews([...parsedTemplates.customViews]);
|
|
49
|
+
}, [parsedTemplates.customViews]);
|
|
50
|
+
// Function to update default columns (called when user modifies and clicks Okay)
|
|
51
|
+
const updateDefaultColumns = useCallback((columns) => {
|
|
52
|
+
setDefaultColumns(deepCloneColumns(columns));
|
|
53
|
+
}, []);
|
|
54
|
+
// Create an updated default template with current defaultColumns
|
|
55
|
+
// IMPORTANT: When mode just changed (initializedMode !== tableMode), use parsedTemplates
|
|
56
|
+
// directly because defaultColumns state hasn't updated yet
|
|
57
|
+
const updatedDefaultTemplate = useMemo(() => {
|
|
58
|
+
if (!parsedTemplates.defaultTemplate) {
|
|
59
|
+
return parsedTemplates.defaultTemplate;
|
|
60
|
+
}
|
|
61
|
+
// If mode just changed, use the fresh parsed columns, not the stale state
|
|
62
|
+
const columnsToUse = initializedMode !== tableMode ? parsedTemplates.templateDefaultColumns : defaultColumns;
|
|
63
|
+
if (columnsToUse.length === 0) {
|
|
64
|
+
return parsedTemplates.defaultTemplate;
|
|
65
|
+
}
|
|
66
|
+
return Object.assign(Object.assign({}, parsedTemplates.defaultTemplate), { submenu: columnsToUse, columns: columnsToUse.map((col) => col.name) });
|
|
67
|
+
}, [parsedTemplates.defaultTemplate, parsedTemplates.templateDefaultColumns, defaultColumns, initializedMode, tableMode]);
|
|
68
|
+
// Build allTemplates with the updated default template
|
|
69
|
+
const updatedAllTemplates = useMemo(() => {
|
|
70
|
+
if (!updatedDefaultTemplate) {
|
|
71
|
+
return parsedTemplates.customViews;
|
|
72
|
+
}
|
|
73
|
+
return [updatedDefaultTemplate, ...parsedTemplates.customViews];
|
|
74
|
+
}, [updatedDefaultTemplate, parsedTemplates.customViews]);
|
|
75
|
+
// Also ensure defaultColumns reflects the correct mode (for when mode just changed)
|
|
76
|
+
const effectiveDefaultColumns = initializedMode !== tableMode ? parsedTemplates.templateDefaultColumns : defaultColumns;
|
|
77
|
+
return {
|
|
78
|
+
// Template data (with updated default template including modifications)
|
|
79
|
+
defaultTemplate: updatedDefaultTemplate,
|
|
80
|
+
customViews: parsedTemplates.customViews,
|
|
81
|
+
allTemplates: updatedAllTemplates,
|
|
82
|
+
// Default columns - use effective columns that match current mode
|
|
83
|
+
defaultColumns: effectiveDefaultColumns,
|
|
84
|
+
updateDefaultColumns,
|
|
85
|
+
// Internal state
|
|
86
|
+
internalCustomViews,
|
|
87
|
+
setInternalCustomViews,
|
|
88
|
+
};
|
|
89
|
+
};
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export default
|
|
1
|
+
export { default } from './TableView';
|
|
2
|
+
export { default as TableView } from './TableView';
|
|
3
|
+
export { default as DefaultViews } from './DefaultViews';
|
|
4
|
+
export { default as CustomViews } from './CustomViews';
|
|
5
|
+
export { default as ViewSelector } from './ViewSelector';
|
|
6
|
+
export { default as ViewsDropdown } from './ViewsDropdown';
|
|
7
|
+
export { default as CreateViewDialog } from './CreateViewDialog';
|
|
8
|
+
export type { ViewMenuItem, CreateCustomViewDialogProps, LayoutSection, ColumnItem, FieldItem, TemplateResponse, TemplatesListResponse, TemplateAPIMetadata, CreateTemplatePayload, UpdateTemplatePayload, } from './types';
|
|
9
|
+
export { transformLayoutToColumns, getColumnsByMode, createCustomViewMenuItem, setViewAsDefault, transformTemplatesToViewMenuItems, convertColumnsToLayoutSection, isDateColumn, getColumnCheckState, } from './utils';
|
|
10
|
+
export { useSubmenuHover, useViewsManager, useViewSelector } from './hooks';
|
|
11
|
+
export { DIALOG_WIDTH, DIALOG_HEIGHT, MAX_CUSTOM_VIEWS, TEMPLATE_NAME_MAX_LENGTH } from './constants';
|
|
12
|
+
export { defaultViewList, advancedColumns, sheetColumns } from './data';
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export default
|
|
1
|
+
export { default } from './TableView';
|
|
2
|
+
export { default as TableView } from './TableView';
|
|
3
|
+
export { default as DefaultViews } from './DefaultViews';
|
|
4
|
+
export { default as CustomViews } from './CustomViews';
|
|
5
|
+
export { default as ViewSelector } from './ViewSelector';
|
|
6
|
+
export { default as ViewsDropdown } from './ViewsDropdown';
|
|
7
|
+
export { default as CreateViewDialog } from './CreateViewDialog';
|
|
8
|
+
export { transformLayoutToColumns, getColumnsByMode, createCustomViewMenuItem, setViewAsDefault, transformTemplatesToViewMenuItems, convertColumnsToLayoutSection, isDateColumn, getColumnCheckState, } from './utils';
|
|
9
|
+
export { useSubmenuHover, useViewsManager, useViewSelector } from './hooks';
|
|
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
|
+
export { defaultViewList, advancedColumns, sheetColumns } from './data';
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
+
export declare const ButtonStyled: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
4
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
5
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
6
|
+
export declare const ViewWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
7
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
8
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
9
|
+
export declare const ListStyled: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
10
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
11
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
12
|
+
export declare const DropdownStyled: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
13
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
14
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
15
|
+
export declare const MenuItem: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
16
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
17
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme> & {
|
|
18
|
+
addColumnViewEl?: boolean | undefined;
|
|
19
|
+
}, {}, {}>;
|
|
20
|
+
export declare const Space: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
21
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
22
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
23
|
+
export declare const SpaceAfter: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
24
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
25
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
26
|
+
export declare const DialogContentWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
27
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
28
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
29
|
+
export declare const ScrollableContent: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
30
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
31
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
32
|
+
export declare const TitleSection: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
33
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
34
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
35
|
+
export declare const ColumnListContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
36
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
37
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
38
|
+
export declare const SelectAllHeader: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
39
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
40
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
41
|
+
export declare const ColumnItemRow: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
42
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
43
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme> & {
|
|
44
|
+
isHovered?: boolean | undefined;
|
|
45
|
+
isDate?: boolean | undefined;
|
|
46
|
+
}, {}, {}>;
|
|
47
|
+
export declare const DragIconWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
48
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
49
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
50
|
+
export declare const CheckboxWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
51
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
52
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
53
|
+
export declare const FooterBar: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
54
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
55
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
56
|
+
export declare const CreateButtonWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
57
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
58
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
59
|
+
export declare const SubmenuPaper: import("@emotion/styled").StyledComponent<import("@mui/material").PaperOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
60
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
61
|
+
}, "classes" | "className" | "style" | "children" | "sx" | "variant" | "square" | "elevation"> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
62
|
+
export declare const SubmenuItem: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
63
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
64
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
65
|
+
export declare const DeleteButton: import("@emotion/styled").StyledComponent<import("@mui/material").ButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
|
|
66
|
+
ref?: ((instance: HTMLButtonElement | null) => void) | import("react").RefObject<HTMLButtonElement> | null | undefined;
|
|
67
|
+
}, "color" | "disabled" | "classes" | "className" | "style" | "tabIndex" | "children" | "sx" | "variant" | "size" | "fullWidth" | "href" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableElevation" | "disableFocusRipple" | "endIcon" | "startIcon"> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
68
|
+
export declare const CreateButton: import("@emotion/styled").StyledComponent<import("@mui/material").ButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
|
|
69
|
+
ref?: ((instance: HTMLButtonElement | null) => void) | import("react").RefObject<HTMLButtonElement> | null | undefined;
|
|
70
|
+
}, "color" | "disabled" | "classes" | "className" | "style" | "tabIndex" | "children" | "sx" | "variant" | "size" | "fullWidth" | "href" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableElevation" | "disableFocusRipple" | "endIcon" | "startIcon"> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
71
|
+
export declare const NameTextField: import("@emotion/styled").StyledComponent<{
|
|
72
|
+
variant?: import("@mui/material").TextFieldVariants | undefined;
|
|
73
|
+
} & Omit<import("@mui/material").FilledTextFieldProps | import("@mui/material").OutlinedTextFieldProps | import("@mui/material").StandardTextFieldProps, "variant"> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
74
|
+
export declare const checkboxSx: SxProps<Theme>;
|
|
75
|
+
export declare const getDialogPaperStyle: (width: number, height: number) => {
|
|
76
|
+
margin: number;
|
|
77
|
+
maxHeight: string;
|
|
78
|
+
maxWidth: string;
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
borderRadius: number;
|
|
82
|
+
overflow: string;
|
|
83
|
+
boxShadow: string;
|
|
84
|
+
};
|
|
85
|
+
export declare const dialogSx: {
|
|
86
|
+
backgroundColor: string;
|
|
87
|
+
pointerEvents: string;
|
|
88
|
+
zIndex: number;
|
|
89
|
+
'& .MuiDialog-container': {
|
|
90
|
+
transition: string;
|
|
91
|
+
zIndex: number;
|
|
92
|
+
};
|
|
93
|
+
'& .MuiDialog-paper': {
|
|
94
|
+
transition: string;
|
|
95
|
+
pointerEvents: string;
|
|
96
|
+
zIndex: number;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
export declare const ResetHeaderBox: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
100
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
101
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
102
|
+
export declare const ResetCheckboxSx: SxProps<Theme>;
|
|
103
|
+
export declare const SubmenuContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
104
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
105
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
106
|
+
export declare const ColumnItemsContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
107
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
108
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
109
|
+
export declare const SaveCustomViewBox: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
110
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
111
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
112
|
+
export declare const SaveCustomViewInnerBox: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
113
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
114
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme> & {
|
|
115
|
+
disabled?: boolean | undefined;
|
|
116
|
+
}, {}, {}>;
|
|
117
|
+
export declare const ButtonsContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
118
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
119
|
+
}, keyof import("@mui/system").BoxOwnProps<Theme>> & import("@mui/system").MUIStyledCommonProps<Theme>, {}, {}>;
|
|
120
|
+
export declare const CancelButtonSx: SxProps<Theme>;
|
|
121
|
+
export declare const OkayButtonSx: SxProps<Theme>;
|
|
122
|
+
export declare const ModifiedTextSx: {
|
|
123
|
+
readonly color: "#20232B80";
|
|
124
|
+
readonly fontSize: "9px";
|
|
125
|
+
readonly fontWeight: 500;
|
|
126
|
+
readonly marginLeft: "4px";
|
|
127
|
+
};
|