@tap-payments/os-micro-frontend-shared 0.1.373-test.2 → 0.1.373-test.3-test.4-test.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/TableHeader/TableView/CreateViewDialog.js +10 -3
- package/build/components/TableHeader/TableView/ViewsMenu.js +1 -1
- package/build/components/TableHeader/TableView/constants.d.ts +4 -0
- package/build/components/TableHeader/TableView/constants.js +4 -0
- package/build/components/TableHeader/TableView/hooks/useCreateViewDialog.js +16 -7
- package/build/components/TableHeader/TableView/hooks/useViewsMenu.js +2 -6
- package/build/components/TableHeader/TableView/utils.js +5 -4
- 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 -3
- package/build/types/column.d.ts +8 -0
- package/build/utils/skeletonColumns.d.ts +4 -0
- package/build/utils/skeletonColumns.js +18 -1
- package/package.json +2 -2
|
@@ -46,9 +46,16 @@ function CreateViewDialog({ open, onClose, onCreate, availableColumns = [], defa
|
|
|
46
46
|
return;
|
|
47
47
|
setIsLoading(true);
|
|
48
48
|
try {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
if (editingView) {
|
|
50
|
+
// On update: send whole layout with current selected/default (true/false) for every column and field
|
|
51
|
+
const layout = convertColumnsToLayoutSection(selectedColumns, mode);
|
|
52
|
+
yield (onCreate === null || onCreate === void 0 ? void 0 : onCreate({ name: templateName, selectedColumns, layout }));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const columnsToCreate = selectedColumns.filter((col) => col.selected);
|
|
56
|
+
const layout = convertColumnsToLayoutSection(columnsToCreate, mode);
|
|
57
|
+
yield (onCreate === null || onCreate === void 0 ? void 0 : onCreate({ name: templateName, selectedColumns: columnsToCreate, layout }));
|
|
58
|
+
}
|
|
52
59
|
onClose();
|
|
53
60
|
}
|
|
54
61
|
catch (error) {
|
|
@@ -71,6 +71,6 @@ function ViewsMenu({ onViewChange, onCreateCustomView, onEditCustomView, onDelet
|
|
|
71
71
|
});
|
|
72
72
|
return (_jsxs(_Fragment, { children: [_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCloseViewDropdown }, { children: _jsxs(ViewWrapper, Object.assign({ sx: { width: '32px' }, "data-testid": "ViewsMenu" }, { children: [_jsx(StyledButton, Object.assign({ title: t('tableView'), "data-testid": "ViewsMenu_button", onClick: handleViewButtonClick }, { children: _jsx(Icon, { src: viewIcon, alt: "view", sx: { width: 14, height: 14 } }) })), _jsx(ViewsDropdown, { open: Boolean(anchorEl), anchorEl: anchorEl, onClose: handleCloseViewDropdown, defaultModified: (_a = modifiedModes[tableMode]) !== null && _a !== void 0 ? _a : false, onMarkDefaultModified: () => {
|
|
73
73
|
setModifiedModes((current) => (Object.assign(Object.assign({}, current), { [tableMode]: true })));
|
|
74
|
-
}, setSelectedViewInfo: handleSelectedViewInfo, selectedViewInfo: selectedViewInfo, onCreateCustomView: handleOpenCreateDialog, customViews: customViews, onEditCustomView: handleOpenEditDialog, onSaveDefaultColumns: handleSaveDefaultColumns, defaultColumns: defaultColumns, setDefaultColumns: updateDefaultColumns, updateSelectedView: updateSelectedView, baseDefaultColumns: baseDefaultColumns, mode: tableMode, defaultTemplate: defaultTemplate })] })) })), _jsx(CreateViewDialog, { open: isCreateDialogOpen, onClose: handleCloseCreateDialog, availableColumns: defaultColumns, defaultColumns: defaultColumns, onCreate: handleSaveView, editingView: editingView, onDelete: handleDeleteView, tableViews: shouldUseCurrentState ? currentViewColumns : undefined, mode: tableMode })] }));
|
|
74
|
+
}, setSelectedViewInfo: handleSelectedViewInfo, selectedViewInfo: selectedViewInfo, onCreateCustomView: handleOpenCreateDialog, customViews: customViews, onEditCustomView: handleOpenEditDialog, onSaveDefaultColumns: handleSaveDefaultColumns, defaultColumns: defaultColumns, setDefaultColumns: updateDefaultColumns, updateSelectedView: updateSelectedView, baseDefaultColumns: baseDefaultColumns, mode: tableMode, defaultTemplate: defaultTemplate })] })) })), _jsx(CreateViewDialog, { open: isCreateDialogOpen, onClose: handleCloseCreateDialog, availableColumns: editingView && baseDefaultColumns.length > 0 ? baseDefaultColumns : defaultColumns, defaultColumns: defaultColumns, onCreate: handleSaveView, editingView: editingView, onDelete: handleDeleteView, tableViews: shouldUseCurrentState ? currentViewColumns : undefined, mode: tableMode })] }));
|
|
75
75
|
}
|
|
76
76
|
export default memo(ViewsMenu);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState, useEffect, useMemo, useRef } from 'react';
|
|
2
2
|
import { DATE_COLUMN_CONFIG, TEMPLATE_NAME_MAX_LENGTH } from '../constants';
|
|
3
|
-
import {
|
|
3
|
+
import { isDateColumn, initializeCreateColumns, initializeCreateColumnsWithCurrentState, toggleColumn, toggleSubItem, toggleAllColumns, areAllColumnsSelected, areSomeColumnsSelected, isValidTemplateName, deepCloneColumns as copyColumns, } from '../utils';
|
|
4
4
|
import { useSubmenuHover } from './useSubmenuHover';
|
|
5
5
|
export const useCreateViewDialog = ({ open, availableColumns, defaultColumns, editingView, tableViews = [] }) => {
|
|
6
6
|
const [templateName, setTemplateName] = useState(() => (editingView === null || editingView === void 0 ? void 0 : editingView.label) || '');
|
|
@@ -10,7 +10,7 @@ export const useCreateViewDialog = ({ open, availableColumns, defaultColumns, ed
|
|
|
10
10
|
const { hoveredColumn, anchorEl, openSubmenu, closeSubmenu, cancelClose } = useSubmenuHover();
|
|
11
11
|
const dateColumn = DATE_COLUMN_CONFIG;
|
|
12
12
|
useEffect(() => {
|
|
13
|
-
var _a, _b;
|
|
13
|
+
var _a, _b, _c;
|
|
14
14
|
if (!open) {
|
|
15
15
|
previousOpenRef.current = false;
|
|
16
16
|
return;
|
|
@@ -18,12 +18,21 @@ export const useCreateViewDialog = ({ open, availableColumns, defaultColumns, ed
|
|
|
18
18
|
const wasClosed = !previousOpenRef.current;
|
|
19
19
|
if (wasClosed && open) {
|
|
20
20
|
if (editingView) {
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
21
|
+
// Use template's submenu as source of truth so selection state is preserved (don't rely on name matching vs availableColumns)
|
|
22
|
+
const submenu = ((_a = editingView.submenu) === null || _a === void 0 ? void 0 : _a.length) ? copyColumns(editingView.submenu) : [];
|
|
23
|
+
const templateNonDate = submenu.filter((c) => !isDateColumn(c.name));
|
|
24
|
+
const templateWithDateFirst = [dateColumn, ...templateNonDate];
|
|
25
|
+
const templateNames = new Set(templateWithDateFirst.map((c) => c.name));
|
|
26
|
+
const missingFromAvailable = availableColumns
|
|
27
|
+
.filter((col) => !isDateColumn(col.name) && !templateNames.has(col.name))
|
|
28
|
+
.map((col) => {
|
|
29
|
+
var _a;
|
|
30
|
+
return (Object.assign(Object.assign({}, col), { selected: false, menuItems: (_a = col.menuItems) === null || _a === void 0 ? void 0 : _a.map((item) => (Object.assign(Object.assign({}, item), { selected: false }))) }));
|
|
31
|
+
});
|
|
32
|
+
const columnsToSet = [...templateWithDateFirst, ...missingFromAvailable];
|
|
24
33
|
setSelectedColumns(columnsToSet);
|
|
25
34
|
initialColumnsRef.current = copyColumns(columnsToSet);
|
|
26
|
-
const nameToSet = ((
|
|
35
|
+
const nameToSet = ((_b = editingView.label) === null || _b === void 0 ? void 0 : _b.trim()) || '';
|
|
27
36
|
setTemplateName(nameToSet);
|
|
28
37
|
}
|
|
29
38
|
else {
|
|
@@ -37,7 +46,7 @@ export const useCreateViewDialog = ({ open, availableColumns, defaultColumns, ed
|
|
|
37
46
|
}
|
|
38
47
|
}
|
|
39
48
|
else if (open && editingView) {
|
|
40
|
-
const nameToSet = ((
|
|
49
|
+
const nameToSet = ((_c = editingView.label) === null || _c === void 0 ? void 0 : _c.trim()) || '';
|
|
41
50
|
setTemplateName(nameToSet);
|
|
42
51
|
}
|
|
43
52
|
previousOpenRef.current = open;
|
|
@@ -139,16 +139,12 @@ export const useViewsMenu = ({ mode, onViewChange, onCreateCustomView, onEditCus
|
|
|
139
139
|
if (editingView) {
|
|
140
140
|
const templateId = editingView.templateId || editingView.id;
|
|
141
141
|
yield (onEditCustomView === null || onEditCustomView === void 0 ? void 0 : onEditCustomView(templateId, data));
|
|
142
|
-
|
|
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));
|
|
142
|
+
// List/selection update is handled internally by parent (e.g. templates state refresh)
|
|
147
143
|
}
|
|
148
144
|
else {
|
|
149
145
|
yield (onCreateCustomView === null || onCreateCustomView === void 0 ? void 0 : onCreateCustomView(data));
|
|
150
146
|
}
|
|
151
|
-
}), [editingView, onEditCustomView, onCreateCustomView
|
|
147
|
+
}), [editingView, onEditCustomView, onCreateCustomView]);
|
|
152
148
|
const handleDeleteView = useCallback((viewId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
153
149
|
const viewToDelete = allTemplates.find((view) => view.id === viewId || view.templateId === viewId);
|
|
154
150
|
const templateId = (viewToDelete === null || viewToDelete === void 0 ? void 0 : viewToDelete.templateId) || viewId;
|
|
@@ -356,18 +356,19 @@ export const getSubmenuItems = (item, defaultColumns) => {
|
|
|
356
356
|
// Always include date column at the beginning if it's not already present (date column submenu disabled)
|
|
357
357
|
const hasDateColumn = columns.some((col) => col.name.toLowerCase() === 'date');
|
|
358
358
|
if (!hasDateColumn) {
|
|
359
|
-
const dateColumn = Object.assign(
|
|
359
|
+
const dateColumn = Object.assign({}, DATE_COLUMN_CONFIG);
|
|
360
360
|
return [dateColumn, ...columns];
|
|
361
361
|
}
|
|
362
|
-
// Ensure date column is first and strip submenu from date (date column submenu disabled)
|
|
362
|
+
// Ensure date column is first and strip submenu from date (date column submenu disabled); always apply date pin/order config
|
|
363
363
|
const dateColumnIndex = columns.findIndex((col) => col.name.toLowerCase() === 'date');
|
|
364
364
|
if (dateColumnIndex > 0) {
|
|
365
365
|
const dateCol = columns[dateColumnIndex];
|
|
366
|
-
const dateColumn = Object.assign(Object.assign({}, dateCol), { menuItems: undefined });
|
|
366
|
+
const dateColumn = Object.assign(Object.assign(Object.assign({}, DATE_COLUMN_CONFIG), dateCol), { menuItems: undefined });
|
|
367
367
|
const otherColumns = columns.filter((col) => col.name.toLowerCase() !== 'date');
|
|
368
368
|
return [dateColumn, ...otherColumns];
|
|
369
369
|
}
|
|
370
|
-
return columns.map((col) => col.name.toLowerCase() === 'date'
|
|
370
|
+
return columns.map((col) => col.name.toLowerCase() === 'date'
|
|
371
|
+
? Object.assign(Object.assign(Object.assign({}, DATE_COLUMN_CONFIG), col), { menuItems: undefined }) : col);
|
|
371
372
|
};
|
|
372
373
|
/**
|
|
373
374
|
* Check if a view menu item has submenu
|
|
@@ -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, defaultSkeleton, }: 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;
|
|
@@ -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, defaultSkeleton = false, }) {
|
|
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,8 +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
|
|
62
|
-
const shownColumns = useMemo(() =>
|
|
61
|
+
const columns = useMemo(() => getProcessedColumns(inputColumns, isLoading !== null && isLoading !== void 0 ? isLoading : false, defaultSkeleton), [inputColumns, isLoading, defaultSkeleton]);
|
|
62
|
+
const shownColumns = useMemo(() => columns.filter((column) => !column.hidden), [columns]);
|
|
63
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]);
|
|
64
64
|
const areTotalRowsNotFillingHeight = isHeightNotFullyFilledByRows(rows.length) && !tableLoading;
|
|
65
65
|
const itemsCount = isDelayedFetchingNextPage || (areAllRowsLoaded && !areTotalRowsNotFillingHeight) ? rows.length + 1 : rows.length;
|
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
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { IColumnProps } from '../types/index.js';
|
|
2
2
|
export declare const DEFAULT_SKELETON_WIDTHS: string[];
|
|
3
3
|
export declare const generateSkeletonColumns: (staticWidths?: string[]) => IColumnProps[];
|
|
4
|
+
/**
|
|
5
|
+
* Returns columns to display: when loading and defaultSkeleton is true, returns skeleton columns
|
|
6
|
+
* (with date column first so it shows skeleton); otherwise returns the given columns.
|
|
7
|
+
*/
|
|
4
8
|
export declare const getProcessedColumns: <T = unknown>(columns: readonly IColumnProps<T>[], isLoading: boolean, defaultSkeleton: boolean) => IColumnProps<T>[];
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
export const DEFAULT_SKELETON_WIDTHS = ['120px', '180px', '100px', '150px', '200px', '140px', '160px', '110px', '190px', '130px'];
|
|
2
|
+
/** Date column config for skeleton so the date column shows skeleton like other columns */
|
|
3
|
+
const SKELETON_DATE_COLUMN = {
|
|
4
|
+
id: 'date',
|
|
5
|
+
header: '',
|
|
6
|
+
width: DEFAULT_SKELETON_WIDTHS[0],
|
|
7
|
+
order: 1,
|
|
8
|
+
pinned: 'start',
|
|
9
|
+
isDefaultPinned: true,
|
|
10
|
+
pinnable: true,
|
|
11
|
+
hidden: false,
|
|
12
|
+
sortable: false,
|
|
13
|
+
};
|
|
2
14
|
export const generateSkeletonColumns = (staticWidths = DEFAULT_SKELETON_WIDTHS) => {
|
|
3
15
|
return staticWidths.map((width, index) => ({
|
|
4
16
|
id: `skeleton-col-${index}`,
|
|
@@ -9,9 +21,14 @@ export const generateSkeletonColumns = (staticWidths = DEFAULT_SKELETON_WIDTHS)
|
|
|
9
21
|
sortable: false,
|
|
10
22
|
}));
|
|
11
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* Returns columns to display: when loading and defaultSkeleton is true, returns skeleton columns
|
|
26
|
+
* (with date column first so it shows skeleton); otherwise returns the given columns.
|
|
27
|
+
*/
|
|
12
28
|
export const getProcessedColumns = (columns, isLoading, defaultSkeleton) => {
|
|
13
29
|
if (defaultSkeleton && isLoading) {
|
|
14
|
-
|
|
30
|
+
const restSkeleton = generateSkeletonColumns(DEFAULT_SKELETON_WIDTHS.slice(1)).map((col, i) => (Object.assign(Object.assign({}, col), { order: i + 2 })));
|
|
31
|
+
return [SKELETON_DATE_COLUMN, ...restSkeleton];
|
|
15
32
|
}
|
|
16
33
|
return [...columns];
|
|
17
34
|
};
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tap-payments/os-micro-frontend-shared",
|
|
3
3
|
"description": "Shared components and utilities for Tap Payments micro frontends",
|
|
4
|
-
"version": "0.1.373-test.
|
|
5
|
-
"testVersion":
|
|
4
|
+
"version": "0.1.373-test.3-test.4-test.5",
|
|
5
|
+
"testVersion": 5,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "build/index.js",
|
|
8
8
|
"module": "build/index.js",
|