@tap-payments/os-micro-frontend-shared 0.0.263 → 0.0.266

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 (21) hide show
  1. package/build/components/StatusIcons/ChargeStatusIcon/ChargeStatusIcon.js +2 -2
  2. package/build/components/StatusIcons/RefundIcon/RefundIcon.d.ts +3 -1
  3. package/build/components/StatusIcons/RefundIcon/RefundIcon.js +6 -1
  4. package/build/components/TableCells/CustomCells/SegmentsCell/SegmentsCell.js +7 -3
  5. package/build/components/TableCells/CustomCells/SegmentsCell/type.d.ts +9 -5
  6. package/build/components/TableCells/CustomCells/StatusCell/constant.d.ts +1 -1
  7. package/build/components/TableCells/CustomCells/StatusCell/constant.js +1 -1
  8. package/build/components/VirtualTable/SheetView/SheetViewVirtualTable.js +22 -4
  9. package/build/components/VirtualTable/SheetView/components/SheetViewTableLoading.d.ts +12 -0
  10. package/build/components/VirtualTable/SheetView/components/SheetViewTableLoading.js +20 -0
  11. package/build/components/VirtualTable/SheetView/components/SheetViewTableNoData.d.ts +18 -0
  12. package/build/components/VirtualTable/SheetView/components/SheetViewTableNoData.js +32 -0
  13. package/build/components/VirtualTable/SheetView/components/SheetViewTableRowLoading.d.ts +12 -0
  14. package/build/components/VirtualTable/SheetView/components/SheetViewTableRowLoading.js +44 -0
  15. package/build/components/VirtualTable/SheetView/components/index.d.ts +3 -0
  16. package/build/components/VirtualTable/SheetView/components/index.js +3 -0
  17. package/build/types/merchant.d.ts +1 -0
  18. package/build/utils/localStorage.js +1 -1
  19. package/build/utils/segment.d.ts +1 -1
  20. package/build/utils/segment.js +4 -7
  21. package/package.json +3 -3
@@ -5,13 +5,13 @@ import { useTranslation } from 'react-i18next';
5
5
  import Tooltip from '../../Tooltip';
6
6
  import { unCapturedStatuses } from '../../../constants/index.js';
7
7
  import { AcquirerContainerAnimationVariants, ErrorCodeLabel, ErrorCodeLabelAnimationVariants, ErrorCodeVariants, ErrorCodeWrapper, GateWayIcon, GatewayIconWrapper, GatewayIconWrapperAnimationTransition, GatewaysContainer, GatewaysContainerAnimationVariants, StatusTextLabel, UnCapturedBadge, UnCapturedContainer, errorCodeLabelAnimation, TextViewWrapper, } from './style';
8
- import { capturedStatusesStyles, unCapturedStatusesStyles, statusIcons, sheetViewChipStyles, } from '../../TableCells/CustomCells/StatusCell/constant';
8
+ import { capturedStatusesStyles, unCapturedStatusesStyles, statusIcons, chargeSheetViewChipStyles, } from '../../TableCells/CustomCells/StatusCell/constant';
9
9
  import { StatusIcon, StatusIconWrapper, TextLabel } from '../../TableCells/CustomCells/style';
10
10
  import StatusChip from '../../StatusChip';
11
11
  export function ChargeStatusIcon({ chargeStatus, gatewayTooltip, acquirerTooltip, chargeTooltip, errorCode, isTextShown, gatewayCode, acquirerCode, unCapturedStyles, iconStyles, iconWrapperStyles, gatewayIconWrapperStyles, gatewayContainerStyles, gateWayIconStyles, tableMode, showBadge = true, }) {
12
12
  const unCapturedStatusStyle = chargeStatus ? unCapturedStatusesStyles[chargeStatus] : null;
13
13
  const captureStatusStyle = chargeStatus ? capturedStatusesStyles[chargeStatus] : null;
14
- const sheetViewStatusStyle = chargeStatus ? sheetViewChipStyles[chargeStatus] : null;
14
+ const sheetViewStatusStyle = chargeStatus ? chargeSheetViewChipStyles[chargeStatus] : null;
15
15
  const theme = useTheme();
16
16
  const { t } = useTranslation();
17
17
  const chargeTooltipTitle = chargeTooltip && (_jsx(_Fragment, { children: _jsx("div", { children: chargeTooltip }) }));
@@ -1,11 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import { type RefundStatusType } from '../../TableCells';
3
+ import { TableMode } from '../../../types/index.js';
3
4
  type RefundIconProps = {
4
5
  iconStyles?: React.CSSProperties;
5
6
  refundStatus?: RefundStatusType;
6
7
  refundTooltip?: React.ReactNode;
7
8
  refundCount?: number;
8
9
  isTextShown?: boolean;
10
+ tableMode?: TableMode;
9
11
  };
10
- declare const RefundIcon: ({ isTextShown, refundStatus, refundTooltip, refundCount, iconStyles }: RefundIconProps) => import("react/jsx-runtime").JSX.Element;
12
+ declare const RefundIcon: ({ isTextShown, refundStatus, refundTooltip, refundCount, iconStyles, tableMode }: RefundIconProps) => import("react/jsx-runtime").JSX.Element;
11
13
  export default RefundIcon;
@@ -8,7 +8,8 @@ import { MultiRefundContainer, MultiRefundIcon, RefundsCountBadge } from '../../
8
8
  import { StatusIcon } from '../../TableCells/CustomCells/style';
9
9
  import { StatusTextLabel } from '../../TableCells/CustomCells/InvoiceStatusCell/style';
10
10
  import { refundStatusIcons, refundStyles } from '../../TableCells/CustomCells/StatusCell/constant';
11
- const RefundIcon = ({ isTextShown, refundStatus = 'PENDING', refundTooltip = '', refundCount, iconStyles }) => {
11
+ import StatusChip from '../../StatusChip';
12
+ const RefundIcon = ({ isTextShown, refundStatus = 'PENDING', refundTooltip = '', refundCount, iconStyles, tableMode }) => {
12
13
  const { t } = useTranslation();
13
14
  const theme = useTheme();
14
15
  const refundCountBadge = (_jsxs(RefundsCountBadge, Object.assign({ "data-testid": "StatusCell_RefundsCountBadge", initial: { width: 0, opacity: 0, padding: '0px' }, transition: {
@@ -32,6 +33,10 @@ const RefundIcon = ({ isTextShown, refundStatus = 'PENDING', refundTooltip = '',
32
33
  },
33
34
  } }, { children: [refundCount, "x"] })));
34
35
  const refundCountShown = (refundCount || 0) > 1;
36
+ if (tableMode === 'sheet') {
37
+ const { color, backgroundColor } = refundStyles[refundStatus];
38
+ return (_jsx(StatusChip, Object.assign({ textColor: color, bgColor: backgroundColor }, { children: t(camelCase(refundStatus)) })));
39
+ }
35
40
  return (_jsx(_Fragment, { children: isTextShown ? (_jsx(Tooltip, Object.assign({ title: _jsx("div", { children: _jsx("div", { children: refundTooltip }) }) }, { children: _jsx(StatusTextLabel, Object.assign({ "data-testid": "StatusCell_RefundStatusLabel", sx: {
36
41
  color: refundStyles[refundStatus].color,
37
42
  backgroundColor: refundStyles[refundStatus].backgroundColor,
@@ -22,17 +22,21 @@ function SegmentsCell(_a) {
22
22
  var { isTextShown } = _a, props = __rest(_a, ["isTextShown"]);
23
23
  const [isTooltipOpen, setIsTooltipOpen] = useState(false);
24
24
  const theme = useTheme();
25
- const segments = useMemo(() => Object.keys(segmentsIcons).filter((key) => !!props[key]), [props]);
25
+ const segments = useMemo(() => Object.keys(segmentsIcons).filter((key) => { var _a; return !!((_a = props[key]) === null || _a === void 0 ? void 0 : _a.name); }), [props]);
26
26
  const ReferenceSources = useMemo(() => segments.map((segment, index) => {
27
27
  const prefixKey = ['technology', 'institution'].includes(segment) ? 'Payment' : '';
28
- const sourceTooltip = `${prefixKey} ${startCase(segment)} - ${props[segment]}`;
28
+ const segmentData = props[segment];
29
+ const sourceTooltip = `${prefixKey} ${startCase(segment)} - ${segmentData === null || segmentData === void 0 ? void 0 : segmentData.name}`;
29
30
  return (_jsx(Tooltip, Object.assign({ onOpen: () => {
30
31
  setIsTooltipOpen(true);
31
32
  }, onClose: () => {
32
33
  setIsTooltipOpen(false);
33
34
  }, title: sourceTooltip }, { children: _jsx(ImageWrapper, Object.assign({ order: index, variants: referenceSourceAnimation(index, theme.shadows[4], isTextShown ? 83 : 0), sx: {
34
35
  width: isTextShown ? '79px' : '24px',
35
- } }, { children: isTextShown ? (_jsx(ReferenceTextWrapper, { children: _jsx(ReferenceTextLabel, { children: startCase(segment) }) })) : (_jsx(StyledSourceImage, { src: segmentsIcons[segment], alt: segment, sx: Object.assign({}, (segment === 'order' && { width: '11.82px' })) })) })) }), `${segment}-${index}`));
36
+ } }, { children: isTextShown ? (_jsx(ReferenceTextWrapper, { children: _jsx(ReferenceTextLabel, { children: startCase(segment) }) })) : (_jsx(StyledSourceImage, { src: (segmentData === null || segmentData === void 0 ? void 0 : segmentData.icon) || segmentsIcons[segment], alt: segment, sx: Object.assign(Object.assign({}, (segment === 'order' && { width: '11.82px' })), ((segmentData === null || segmentData === void 0 ? void 0 : segmentData.icon) && { borderRadius: '40px' })), onError: (e) => {
37
+ e.currentTarget.src = segmentsIcons[segment];
38
+ e.currentTarget.style.borderRadius = '0px';
39
+ } })) })) }), `${segment}-${index}`));
36
40
  }), [props, segments, isTextShown, theme]);
37
41
  const referenceSourcesCount = (ReferenceSources === null || ReferenceSources === void 0 ? void 0 : ReferenceSources.length) || 0;
38
42
  return (_jsx(TableCell, Object.assign({}, props, { children: _jsx(StyledSourceCell, { children: referenceSourcesCount > 0 ? (_jsx(ReferenceSourcesContainer, Object.assign({ layout: true, className: "reference-sources-container", whileHover: "animate", animate: isTooltipOpen ? 'animate' : 'start', sourcesCount: referenceSourcesCount, variants: { animate: { width: referenceSourcesCount * (6 + 32) } }, style: {
@@ -1,11 +1,15 @@
1
1
  import { TableCellProps } from '@mui/material/TableCell';
2
2
  import { segmentsIcons } from './constant';
3
3
  export type SegmentsType = keyof typeof segmentsIcons;
4
+ export interface SegmentInfo {
5
+ name?: string;
6
+ icon?: string;
7
+ }
4
8
  export interface SegmentsCellProps extends TableCellProps {
5
- technology?: string;
6
- institution?: string;
7
- payment?: string;
8
- developmentHouse?: string;
9
- platform?: string;
9
+ technology?: SegmentInfo;
10
+ institution?: SegmentInfo;
11
+ payment?: SegmentInfo;
12
+ developmentHouse?: SegmentInfo;
13
+ platform?: SegmentInfo;
10
14
  isTextShown?: boolean;
11
15
  }
@@ -13,7 +13,7 @@ export declare const statusIcons: {
13
13
  UNKNOWN: string;
14
14
  AUTHORIZED: string;
15
15
  };
16
- export declare const sheetViewChipStyles: {
16
+ export declare const chargeSheetViewChipStyles: {
17
17
  CAPTURED: {
18
18
  color: string;
19
19
  background: string;
@@ -13,7 +13,7 @@ export const statusIcons = {
13
13
  UNKNOWN: unknownIcon,
14
14
  AUTHORIZED: authorizedIcon,
15
15
  };
16
- export const sheetViewChipStyles = {
16
+ export const chargeSheetViewChipStyles = {
17
17
  CAPTURED: {
18
18
  color: '#1F88D0',
19
19
  background: '#1F88D01A',
@@ -18,6 +18,7 @@ import { isHeightNotFullyFilledByRows, isNotFoundError, isTimeoutError, hasError
18
18
  import TableFooter from '../components/TableFooter/TableFooter';
19
19
  import TableLastItem from '../components/TableLastItem';
20
20
  import TableNoData from '../components/TableNoData';
21
+ import { SheetViewTableNoData } from './components';
21
22
  import ListItemWrapper from '../components/virtualScroll/ListItemWrapper';
22
23
  import { StyledBox, StyledTableBox, StyledVirtualList, TableContainer, TableWrapper } from '../style';
23
24
  import { SheetViewVirtualTableWrapper, PinnedStartColumnWrapper, PinnedEndColumnWrapper, MainTableWrapper, UnpinnedTableHeaderWrapper } from './style';
@@ -113,9 +114,12 @@ function SheetViewVirtualTable({ columns, rows, threshold = TABLE_THRESHOLD, sho
113
114
  handleScroll,
114
115
  scrollToIndex,
115
116
  areTotalRowsNotFillingHeight,
116
- selectedCell,
117
- selectedColumn,
118
- handleCellClick,
117
+ clearBackdropVisibilityTimeout,
118
+ lastItemIndex,
119
+ pinnedEndVirtualListRef,
120
+ pinnedStartVirtualListRef,
121
+ scrollableVirtualListRef,
122
+ theme.palette.background.default,
119
123
  ]);
120
124
  const showNoDataView = tableLoading || tableError || tableEmpty || hasTimeoutError;
121
125
  const pinnedStartColumnsWidth = useMemo(() => pinnedStartColumnsData.reduce((acc, col) => {
@@ -137,7 +141,21 @@ function SheetViewVirtualTable({ columns, rows, threshold = TABLE_THRESHOLD, sho
137
141
  overflowX: 'hidden',
138
142
  } }, { children: _jsx(StyledBox, Object.assign({ "data-testid": "SheetViewVirtualTable_PinnedStyledBox", hidePadding: true, className: "list-wrapper" }, { children: createVirtualTableContainer(columnsData, containerKey, true, columnsWidth) })) }))] })) }));
139
143
  };
140
- return (_jsxs(_Fragment, { children: [_jsxs(TableContainer, { children: [showNoDataView ? (_jsx(StyledTableBox, Object.assign({ as: "main", id: "sheet-table-box-container", "aria-labelledby": "sheet-table-box-container", "data-testid": "SheetViewVirtualTable_StyledTableBox", "data-title": tableTitle, "data-direction": theme.direction, "data-are-all-rows-loaded": !!areAllRowsLoaded, "data-is-fetching-next-page": !!isFetchingNextPage, "data-scroll-to-index": scrollToIndex, "data-is-loading": !!isLoading, "data-is-error": !!isError, "data-is-error-timeout": !!hasTimeoutError, "data-show-background-color": !!showBackgroundColor, "data-table-mode": tableMode, height: "100%", dir: theme.direction, showBackgroundColor: showBackgroundColor, showNoDataView: showNoDataView }, { children: _jsx(TableWrapper, Object.assign({ isSheetView: true, "data-testid": "SheetViewVirtualTable_TableWrapper", showNoDataView: showNoDataView, sx: tableBodyStyles }, { children: _jsx(TableNoData, { error: error, tableEmpty: tableEmpty, isTimeoutError: hasTimeoutError, tableError: tableError, tableLoading: tableLoading, orderedColumns: orderedColumns, triggerDataRefetch: triggerDataRefetch, footerProps: footerProps }) })) }))) : (_jsxs(SheetViewVirtualTableWrapper, { children: [renderPinnedColumn('start', pinnedStartColumnsData, pinnedStartColumnsWidth, pinnedStartColumns), _jsx(MainTableWrapper, Object.assign({ hasPinnedStart: pinnedStartColumnsData.length > 0, hasPinnedEnd: pinnedEndColumnsData.length > 0 }, { children: _jsx(StyledTableBox, Object.assign({ as: "main", id: "sheet-table-box-container", "aria-labelledby": "sheet-table-box-container", "data-testid": "SheetViewVirtualTable_StyledTableBox", "data-title": tableTitle, "data-direction": theme.direction, "data-are-all-rows-loaded": !!areAllRowsLoaded, "data-is-fetching-next-page": !!isFetchingNextPage, "data-scroll-to-index": scrollToIndex, "data-is-loading": !!isLoading, "data-is-error": !!isError, "data-is-error-timeout": !!hasTimeoutError, "data-show-background-color": !!showBackgroundColor, "data-table-mode": tableMode, height: "100%", dir: theme.direction, showBackgroundColor: showBackgroundColor, showNoDataView: showNoDataView, scrollable: true }, { children: _jsxs(TableWrapper, Object.assign({ "data-testid": "SheetViewVirtualTable_TableWrapper", showNoDataView: showNoDataView, sx: Object.assign(Object.assign({}, tableBodyStyles), { display: 'flex', flexDirection: 'column', height: '100%' }) }, { children: [showHeader && (_jsx(UnpinnedTableHeaderWrapper, { children: _jsx(SheetViewTableHeader, { "data-testid": "SheetViewVirtualTable_UnpinnedTableHeader", columnsSorting: columnsSorting, onColumnSort: onColumnSort, columns: unpinnedColumnsData, headerProps: headerProps, showBackDrop: showBackDrop, pinnedColumns: [...pinnedStartColumns, ...pinnedEndColumns], onColumnPin: handleColumnPin, isPinnable: isPinnable, lastColumnId: lastColumnId, selectedColumn: selectedColumn, onColumnClick: handleColumnClick }) })), _jsx(TableWrapper, Object.assign({ "data-testid": "VirtualTable_TableWrapper", sx: {
144
+ return (_jsxs(_Fragment, { children: [_jsxs(TableContainer, { children: [showNoDataView ? (tableLoading ? (_jsx(StyledTableBox, Object.assign({ as: "main", id: "sheet-table-box-container", "aria-labelledby": "sheet-table-box-container", "data-testid": "SheetViewVirtualTable_StyledTableBox_Loading", "data-title": tableTitle, "data-direction": theme.direction, "data-are-all-rows-loaded": !!areAllRowsLoaded, "data-is-fetching-next-page": !!isFetchingNextPage, "data-scroll-to-index": scrollToIndex, "data-is-loading": !!isLoading, "data-is-error": !!isError, "data-is-error-timeout": !!hasTimeoutError, "data-show-background-color": !!showBackgroundColor, "data-table-mode": tableMode, height: "100%", dir: theme.direction, showBackgroundColor: showBackgroundColor, showNoDataView: showNoDataView, scrollable: true, sx: {
145
+ marginLeft: '28px',
146
+ maxHeight: 'calc(100vh - 300px)',
147
+ overflow: 'auto',
148
+ } }, { children: _jsxs(TableWrapper, Object.assign({ "data-testid": "SheetViewVirtualTable_LoadingTableWrapper", showNoDataView: showNoDataView, sx: Object.assign(Object.assign({}, tableBodyStyles), { display: 'flex', flexDirection: 'column', height: 'auto' }) }, { children: [showHeader && (_jsx(UnpinnedTableHeaderWrapper, { children: _jsx(SheetViewTableHeader, { "data-testid": "SheetViewVirtualTable_LoadingTableHeader", columnsSorting: columnsSorting, onColumnSort: onColumnSort, columns: orderedColumns, headerProps: headerProps, showBackDrop: showBackDrop, pinnedColumns: [], onColumnPin: handleColumnPin, isPinnable: false, lastColumnId: lastColumnId, selectedColumn: selectedColumn, onColumnClick: handleColumnClick }) })), _jsx(TableWrapper, Object.assign({ "data-testid": "VirtualTable_LoadingTableWrapper", sx: {
149
+ width: '100%',
150
+ minWidth: 'fit-content',
151
+ height: 'auto',
152
+ display: 'flex',
153
+ flexDirection: 'column',
154
+ } }, { children: _jsx(StyledBox, Object.assign({ "data-testid": "SheetViewVirtualTable_LoadingStyledBox", hidePadding: true, className: "list-wrapper", sx: {
155
+ height: 'auto',
156
+ display: 'flex',
157
+ flexDirection: 'column',
158
+ } }, { children: _jsx(SheetViewTableNoData, { error: error, tableEmpty: tableEmpty, isTimeoutError: hasTimeoutError, tableError: tableError, tableLoading: tableLoading, orderedColumns: orderedColumns, triggerDataRefetch: triggerDataRefetch, footerProps: footerProps }) })) }))] })) }))) : (_jsx(StyledTableBox, Object.assign({ as: "main", id: "sheet-table-box-container", "aria-labelledby": "sheet-table-box-container", "data-testid": "SheetViewVirtualTable_StyledTableBox", "data-title": tableTitle, "data-direction": theme.direction, "data-are-all-rows-loaded": !!areAllRowsLoaded, "data-is-fetching-next-page": !!isFetchingNextPage, "data-scroll-to-index": scrollToIndex, "data-is-loading": !!isLoading, "data-is-error": !!isError, "data-is-error-timeout": !!hasTimeoutError, "data-show-background-color": !!showBackgroundColor, "data-table-mode": tableMode, height: "100%", dir: theme.direction, showBackgroundColor: showBackgroundColor, showNoDataView: showNoDataView }, { children: _jsx(TableWrapper, Object.assign({ isSheetView: true, "data-testid": "SheetViewVirtualTable_TableWrapper", showNoDataView: showNoDataView, sx: tableBodyStyles }, { children: _jsx(TableNoData, { error: error, tableEmpty: tableEmpty, isTimeoutError: hasTimeoutError, tableError: tableError, tableLoading: tableLoading, orderedColumns: orderedColumns, triggerDataRefetch: triggerDataRefetch, footerProps: footerProps }) })) })))) : (_jsxs(SheetViewVirtualTableWrapper, { children: [renderPinnedColumn('start', pinnedStartColumnsData, pinnedStartColumnsWidth, pinnedStartColumns), _jsx(MainTableWrapper, Object.assign({ hasPinnedStart: pinnedStartColumnsData.length > 0, hasPinnedEnd: pinnedEndColumnsData.length > 0 }, { children: _jsx(StyledTableBox, Object.assign({ as: "main", id: "sheet-table-box-container", "aria-labelledby": "sheet-table-box-container", "data-testid": "SheetViewVirtualTable_StyledTableBox", "data-title": tableTitle, "data-direction": theme.direction, "data-are-all-rows-loaded": !!areAllRowsLoaded, "data-is-fetching-next-page": !!isFetchingNextPage, "data-scroll-to-index": scrollToIndex, "data-is-loading": !!isLoading, "data-is-error": !!isError, "data-is-error-timeout": !!hasTimeoutError, "data-show-background-color": !!showBackgroundColor, "data-table-mode": tableMode, height: "100%", dir: theme.direction, showBackgroundColor: showBackgroundColor, showNoDataView: showNoDataView, scrollable: true }, { children: _jsxs(TableWrapper, Object.assign({ "data-testid": "SheetViewVirtualTable_TableWrapper", showNoDataView: showNoDataView, sx: Object.assign(Object.assign({}, tableBodyStyles), { display: 'flex', flexDirection: 'column', height: '100%' }) }, { children: [showHeader && (_jsx(UnpinnedTableHeaderWrapper, { children: _jsx(SheetViewTableHeader, { "data-testid": "SheetViewVirtualTable_UnpinnedTableHeader", columnsSorting: columnsSorting, onColumnSort: onColumnSort, columns: unpinnedColumnsData, headerProps: headerProps, showBackDrop: showBackDrop, pinnedColumns: [...pinnedStartColumns, ...pinnedEndColumns], onColumnPin: handleColumnPin, isPinnable: isPinnable, lastColumnId: lastColumnId, selectedColumn: selectedColumn, onColumnClick: handleColumnClick }) })), _jsx(TableWrapper, Object.assign({ "data-testid": "VirtualTable_TableWrapper", sx: {
141
159
  width: '100%',
142
160
  minWidth: 'fit-content',
143
161
  } }, { children: _jsx(StyledBox, Object.assign({ "data-testid": "SheetViewVirtualTable_ScrollableStyledBox", hidePadding: true, className: "list-wrapper" }, { children: createVirtualTableContainer(unpinnedColumnsData, 'scrollable', false) })) }))] })) })) })), renderPinnedColumn('end', pinnedEndColumnsData, pinnedEndColumnsWidth, [...pinnedStartColumns, ...pinnedEndColumns])] })), !showNoDataView && areTotalRowsNotFillingHeight && !isFetchingNextPage && (_jsx(TableLastItem, { height: (itemsCount + 1) * TABLE_ROW_HEIGHT, sandboxMode: footerProps === null || footerProps === void 0 ? void 0 : footerProps.sandboxMode, "data-testid": "SheetViewVirtualTable_TableLastItem" }))] }), _jsx(TableFooter, Object.assign({ "data-testid": "SheetViewVirtualTable_TableFooter", showSeparator: true, showBackDrop: showBackDrop, onPointerDown: onPointerDown }, footerProps))] }));
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import type { AnimationType, IColumnProps } from '../../../../types/index.js';
3
+ interface ISheetViewTableLoadingProps {
4
+ columns: IColumnProps[];
5
+ isLoaded?: boolean;
6
+ animationType?: AnimationType;
7
+ isLoading?: boolean;
8
+ rowsCount?: number;
9
+ }
10
+ declare function SheetViewTableLoading({ columns, isLoaded, animationType, isLoading, rowsCount }: ISheetViewTableLoadingProps): import("react/jsx-runtime").JSX.Element;
11
+ declare const _default: import("react").MemoExoticComponent<typeof SheetViewTableLoading>;
12
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo } from 'react';
3
+ import { styled } from '@mui/material/styles';
4
+ import uniqueId from 'lodash/uniqueId';
5
+ import { calculateMaxAllowedRows } from '../../../../utils/index.js';
6
+ import SheetViewTableRowLoading from './SheetViewTableRowLoading';
7
+ const Wrapper = styled('section')(({ isLoaded = false }) => ({
8
+ overflow: 'hidden',
9
+ paddingInline: isLoaded ? '32px' : '0px',
10
+ backgroundColor: isLoaded ? 'rgba(255, 255, 255, 0.60)' : 'none',
11
+ filter: isLoaded ? 'blur(8px)' : 'none',
12
+ marginTop: isLoaded ? '1rem' : '0',
13
+ height: 'auto',
14
+ }));
15
+ function SheetViewTableLoading({ columns, isLoaded = false, animationType, isLoading = false, rowsCount }) {
16
+ let maxAllowedRows = rowsCount || calculateMaxAllowedRows(isLoaded, isLoading);
17
+ maxAllowedRows = rowsCount || Math.max(maxAllowedRows, 25);
18
+ return (_jsx(Wrapper, Object.assign({ isLoaded: isLoaded, "data-testid": "SheetViewTableLoading" }, { children: [...Array(maxAllowedRows)].map((_, index) => (_jsx(SheetViewTableRowLoading, { columns: columns, animationType: animationType, rowIndex: index }, `i-${uniqueId('SheetViewTableLoadingRow_')}`))) })));
19
+ }
20
+ export default memo(SheetViewTableLoading);
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import type { IColumnProps, IVirtualTable } from '../../../../types/index.js';
3
+ interface SheetViewTableNoDataProps {
4
+ tableEmpty: boolean;
5
+ tableLoading: boolean;
6
+ isTimeoutError: boolean;
7
+ error: Error | null;
8
+ tableError: boolean;
9
+ orderedColumns: IColumnProps[];
10
+ triggerDataRefetch: () => Promise<unknown>;
11
+ footerProps: IVirtualTable['footerProps'];
12
+ }
13
+ declare function SheetViewTableNoData({ error, tableEmpty, isTimeoutError, tableError, tableLoading, orderedColumns, triggerDataRefetch, footerProps, }: SheetViewTableNoDataProps): JSX.Element;
14
+ declare namespace SheetViewTableNoData {
15
+ var displayName: string;
16
+ }
17
+ declare const _default: import("react").MemoExoticComponent<typeof SheetViewTableNoData>;
18
+ export default _default;
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo } from 'react';
3
+ import { backendErrorHandler } from '../../../../utils/index.js';
4
+ import EmptyList from '../../components/EmptyList/EmptyList';
5
+ import ErrorList from '../../components/ErrorList/ErrorList';
6
+ import SheetViewTableLoading from './SheetViewTableLoading';
7
+ import { StyledSolidBackground } from '../../style';
8
+ function SheetViewTableNoData({ error, tableEmpty, isTimeoutError, tableError, tableLoading, orderedColumns, triggerDataRefetch, footerProps, }) {
9
+ let content;
10
+ if (tableLoading) {
11
+ content = (_jsx(StyledSolidBackground, Object.assign({ "data-testid": "SheetViewVirtualTable_SolidBackground" }, { children: _jsx(SheetViewTableLoading, { "data-testid": "SheetViewVirtualTable_TableLoading", columns: orderedColumns, isLoading: true }) })));
12
+ }
13
+ else if (isTimeoutError) {
14
+ content = (_jsx(ErrorList, { "data-testid": "SheetViewVirtualTable_ErrorList_timeoutError", shouldMinimizeWidth: true, heading: "timeOut", message: "yourRequestOutPleaseTryAgain", triggerDataRefetch: triggerDataRefetch, sandboxMode: footerProps === null || footerProps === void 0 ? void 0 : footerProps.sandboxMode }));
15
+ }
16
+ else if (tableError) {
17
+ const axiosErr = error;
18
+ const { formatted } = backendErrorHandler({ error: axiosErr, fallbackMessage: 'connectionErrorMsg' });
19
+ content = (_jsx(ErrorList, { "data-testid": "SheetViewVirtualTable_ErrorList_tableError", heading: "somethingWentWrong", message: formatted, triggerDataRefetch: triggerDataRefetch, sandboxMode: footerProps === null || footerProps === void 0 ? void 0 : footerProps.sandboxMode }));
20
+ }
21
+ else if (tableEmpty) {
22
+ const axiosErr = error;
23
+ const { formatted } = backendErrorHandler({ error: axiosErr, fallbackMessage: 'tryAdjustingTheDateOrFilters' });
24
+ content = _jsx(EmptyList, { sandboxMode: footerProps === null || footerProps === void 0 ? void 0 : footerProps.sandboxMode, heading: "nothingFound", message: formatted });
25
+ }
26
+ else {
27
+ content = (_jsx(ErrorList, { "data-testid": "SheetViewVirtualTable_ErrorList_tableError", heading: "somethingWentWrong", message: "connectionErrorMsg", triggerDataRefetch: triggerDataRefetch, sandboxMode: footerProps === null || footerProps === void 0 ? void 0 : footerProps.sandboxMode }));
28
+ }
29
+ return content;
30
+ }
31
+ SheetViewTableNoData.displayName = 'SheetViewTableNoData';
32
+ export default memo(SheetViewTableNoData);
@@ -0,0 +1,12 @@
1
+ import { CSSProperties } from 'react';
2
+ import type { AnimationType, IColumnProps } from '../../../../types/index.js';
3
+ interface ISheetViewTableRowLoadingProps {
4
+ columns: IColumnProps[];
5
+ index?: number;
6
+ animationType?: AnimationType;
7
+ style?: CSSProperties;
8
+ rowIndex?: number;
9
+ }
10
+ declare function SheetViewTableRowLoading({ columns, style, index, animationType, rowIndex }: ISheetViewTableRowLoadingProps): import("react/jsx-runtime").JSX.Element;
11
+ declare const _default: import("react").MemoExoticComponent<typeof SheetViewTableRowLoading>;
12
+ export default _default;
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo } from 'react';
3
+ import Skeleton from '@mui/material/Skeleton';
4
+ import { styled } from '@mui/material/styles';
5
+ import TableCell from '@mui/material/TableCell';
6
+ import MUITableRow from '@mui/material/TableRow';
7
+ import { areEqual } from 'react-window';
8
+ const StyledSkeleton = styled(Skeleton)(() => ({
9
+ backgroundColor: '#F4F4F4',
10
+ borderRadius: '64px',
11
+ width: '100%',
12
+ minWidth: '20px',
13
+ }));
14
+ function SheetViewTableRowLoading({ columns, style, index, animationType, rowIndex = 0 }) {
15
+ return (_jsx(MUITableRow, Object.assign({ sx: Object.assign(Object.assign({}, style), { display: 'flex', borderBottom: '1px solid #F2F2F2', minHeight: '28px', height: '28px', alignItems: 'center', '&:hover': {
16
+ backgroundColor: 'transparent !important',
17
+ } }), component: "div", hover: true }, { children: columns.map((column, colIndex) => {
18
+ var _a;
19
+ const isLastColumn = colIndex === columns.length - 1;
20
+ const isFirstColumn = colIndex === 0;
21
+ const shouldShowActualData = isFirstColumn && column.render;
22
+ return (_jsx(TableCell, Object.assign({ sx: {
23
+ width: column.width || `${100 / columns.length}%` || '20%',
24
+ paddingBlock: '0',
25
+ paddingInline: '8px !important',
26
+ paddingLeft: isFirstColumn ? '8px !important' : '8px !important',
27
+ paddingRight: isLastColumn ? '8px !important' : '8px !important',
28
+ borderRight: isLastColumn ? 'none' : '1px solid #F2F2F2',
29
+ borderLeft: isFirstColumn ? '1px solid #F2F2F2' : 'none',
30
+ height: '100%',
31
+ display: 'flex',
32
+ alignItems: 'center',
33
+ boxSizing: 'border-box',
34
+ whiteSpace: 'nowrap',
35
+ overflow: 'hidden',
36
+ }, component: "div" }, { children: shouldShowActualData ? ((_a = column.render) === null || _a === void 0 ? void 0 : _a.call(column, {
37
+ index: rowIndex,
38
+ row: {},
39
+ column,
40
+ value: rowIndex + 1,
41
+ })) : (_jsx(StyledSkeleton, { variant: "rectangular", animation: animationType, height: 16 })) }), `${column.id}-${colIndex}`));
42
+ }) }), index));
43
+ }
44
+ export default memo(SheetViewTableRowLoading, areEqual);
@@ -0,0 +1,3 @@
1
+ export { default as SheetViewTableLoading } from './SheetViewTableLoading';
2
+ export { default as SheetViewTableRowLoading } from './SheetViewTableRowLoading';
3
+ export { default as SheetViewTableNoData } from './SheetViewTableNoData';
@@ -0,0 +1,3 @@
1
+ export { default as SheetViewTableLoading } from './SheetViewTableLoading';
2
+ export { default as SheetViewTableRowLoading } from './SheetViewTableRowLoading';
3
+ export { default as SheetViewTableNoData } from './SheetViewTableNoData';
@@ -68,6 +68,7 @@ export interface BusinessMerchant {
68
68
  platforms: Array<{
69
69
  id: string;
70
70
  brand: {
71
+ logo?: string;
71
72
  name: Array<{
72
73
  lang: string;
73
74
  text: string;
@@ -76,7 +76,7 @@ export const getLoggedInUserSegment = () => {
76
76
  const userData = getLoggedInUserData();
77
77
  if (!userData)
78
78
  return null;
79
- return getSegmentData(userData === null || userData === void 0 ? void 0 : userData.segments, userData === null || userData === void 0 ? void 0 : userData.active_segment_id, userData === null || userData === void 0 ? void 0 : userData.active_segments);
79
+ return getSegmentData(userData === null || userData === void 0 ? void 0 : userData.segments, userData === null || userData === void 0 ? void 0 : userData.active_segment_id);
80
80
  };
81
81
  export const getLoggedInUserActiveSegment = () => {
82
82
  const userData = getLoggedInUserData();
@@ -1,2 +1,2 @@
1
1
  import { Segment, SegmentData } from '../types/index.js';
2
- export declare const getSegmentData: (segments: Segment[], activeSegmentId: string, activeSegments: Segment[]) => SegmentData;
2
+ export declare const getSegmentData: (segments: Segment[], activeSegmentId: string) => SegmentData;
@@ -1,12 +1,9 @@
1
1
  import { getDefaultEntityCountry } from './entity';
2
- export const getSegmentData = (segments, activeSegmentId, activeSegments) => {
3
- var _a, _b, _c;
2
+ export const getSegmentData = (segments, activeSegmentId) => {
3
+ var _a, _b;
4
4
  const newSegment = (_a = segments.find((segment) => segment.id === activeSegmentId)) !== null && _a !== void 0 ? _a : {};
5
- const activeSegment = (_b = activeSegments.find((segment) => segment.id === activeSegmentId)) !== null && _b !== void 0 ? _b : {};
6
- const defaultCountry = activeSegment.countries.length === 1
7
- ? newSegment.countries.find((country) => { var _a; return country.id === ((_a = activeSegment.countries) === null || _a === void 0 ? void 0 : _a[0].id); })
8
- : getDefaultEntityCountry(newSegment === null || newSegment === void 0 ? void 0 : newSegment.countries);
9
- const defaultEntity = (_c = defaultCountry === null || defaultCountry === void 0 ? void 0 : defaultCountry.entities) === null || _c === void 0 ? void 0 : _c.find((entity) => entity.default);
5
+ const defaultCountry = getDefaultEntityCountry(newSegment === null || newSegment === void 0 ? void 0 : newSegment.countries);
6
+ const defaultEntity = (_b = defaultCountry === null || defaultCountry === void 0 ? void 0 : defaultCountry.entities) === null || _b === void 0 ? void 0 : _b.find((entity) => entity.default);
10
7
  return Object.assign(Object.assign({}, newSegment), { defaultCountry,
11
8
  defaultEntity });
12
9
  };
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.0.263",
5
- "testVersion": 2,
4
+ "version": "0.0.266",
5
+ "testVersion": 1,
6
6
  "type": "module",
7
7
  "main": "build/index.js",
8
8
  "module": "build/index.js",
@@ -60,7 +60,7 @@
60
60
  ],
61
61
  "scripts": {
62
62
  "ts:build": "rm -rf build && tsc -p tsconfig.npm.json && tsc-alias -p tsconfig.npm.json",
63
- "push": "npm version patch --no-git-tag-version && npm run ts:build && npm publish --access public",
63
+ "push": "npm run ts:build && npm publish --access public",
64
64
  "push:test": "node scripts/increment-test-version.cjs && npm run ts:build && npm publish --access public --tag test && node scripts/restore-version.cjs",
65
65
  "dev": "vite",
66
66
  "build": "tsc -b && vite build ",