@tap-payments/os-micro-frontend-shared 0.1.365-test.22 → 0.1.365-test.24
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/ActivityAreaChart/ActivityAreaChart.js +25 -39
- package/build/components/ActivityAreaChart/components/ChartTooltip.d.ts +3 -0
- package/build/components/ActivityAreaChart/components/ChartTooltip.js +24 -0
- package/build/components/ActivityAreaChart/components/LoadingChart.d.ts +2 -0
- package/build/components/ActivityAreaChart/components/{LoadingChart/LoadingChart.js → LoadingChart.js} +2 -1
- package/build/components/ActivityAreaChart/components/index.d.ts +2 -3
- package/build/components/ActivityAreaChart/components/index.js +2 -3
- package/build/components/ActivityAreaChart/styles.d.ts +1 -3
- package/build/components/ActivityAreaChart/styles.js +4 -4
- package/build/components/ActivityAreaChart/types.d.ts +11 -13
- package/build/components/FilterDropdown/FilterDropdown.d.ts +4 -1
- package/build/components/FilterDropdown/FilterDropdown.js +2 -2
- package/package.json +2 -2
- package/build/components/ActivityAreaChart/components/ChartLegend/ChartLegend.d.ts +0 -8
- package/build/components/ActivityAreaChart/components/ChartLegend/ChartLegend.js +0 -31
- package/build/components/ActivityAreaChart/components/ChartLegend/LegendLabel.d.ts +0 -6
- package/build/components/ActivityAreaChart/components/ChartLegend/LegendLabel.js +0 -4
- package/build/components/ActivityAreaChart/components/ChartLegend/constant.d.ts +0 -17
- package/build/components/ActivityAreaChart/components/ChartLegend/constant.js +0 -17
- package/build/components/ActivityAreaChart/components/ChartLegend/index.d.ts +0 -3
- package/build/components/ActivityAreaChart/components/ChartLegend/index.js +0 -3
- package/build/components/ActivityAreaChart/components/ChartLegend/style.d.ts +0 -8
- package/build/components/ActivityAreaChart/components/ChartLegend/style.js +0 -23
- package/build/components/ActivityAreaChart/components/ChartLegend/type.d.ts +0 -2
- package/build/components/ActivityAreaChart/components/ChartLegend/type.js +0 -1
- package/build/components/ActivityAreaChart/components/ChartTooltip/ChartTooltip.d.ts +0 -2
- package/build/components/ActivityAreaChart/components/ChartTooltip/ChartTooltip.js +0 -24
- package/build/components/ActivityAreaChart/components/ChartTooltip/index.d.ts +0 -1
- package/build/components/ActivityAreaChart/components/ChartTooltip/index.js +0 -1
- package/build/components/ActivityAreaChart/components/LoadingChart/LoadingChart.d.ts +0 -1
- package/build/components/ActivityAreaChart/components/LoadingChart/index.d.ts +0 -1
- package/build/components/ActivityAreaChart/components/LoadingChart/index.js +0 -1
|
@@ -1,57 +1,43 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo, useState } from 'react';
|
|
3
3
|
import { Tooltip, ResponsiveContainer, Area, AreaChart } from 'recharts';
|
|
4
|
-
import {
|
|
4
|
+
import { useTheme } from '@mui/material/styles';
|
|
5
|
+
import { ChartTooltip, LoadingChart } from './components';
|
|
5
6
|
const ActivityAreaChart = ({ data, dataKey, isLoading, dateRange, selectedCurrency }) => {
|
|
7
|
+
const theme = useTheme();
|
|
6
8
|
const [chartHovered, setChartHovered] = useState(false);
|
|
7
9
|
const [cursorPosition, setCursorPosition] = useState({ x: 0, y: 0 });
|
|
8
|
-
const [activeLegend, setActiveLegend] = useState(LEGENDS.CHARGE.key);
|
|
9
10
|
const isEmpty = (data === null || data === void 0 ? void 0 : data.length) === 0;
|
|
10
|
-
const isAmountDataKeyActive = dataKey === 'amount';
|
|
11
11
|
const handleMouseMove = (e) => {
|
|
12
12
|
if (e.activeCoordinate && e.isTooltipActive) {
|
|
13
13
|
setCursorPosition(e.activeCoordinate);
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
16
|
const MemoizedChartTooltip = useMemo(() => {
|
|
17
|
-
return
|
|
17
|
+
return _jsx(ChartTooltip, { position: cursorPosition, dateRange: dateRange, selectedCurrency: selectedCurrency });
|
|
18
18
|
}, [cursorPosition]);
|
|
19
19
|
if (isLoading || isEmpty) {
|
|
20
20
|
return _jsx(LoadingChart, {});
|
|
21
21
|
}
|
|
22
|
-
return (
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
strokeWidth: 2,
|
|
43
|
-
stroke: 'white',
|
|
44
|
-
cursor: chartHovered ? 'pointer' : 'default',
|
|
45
|
-
onMouseOver: () => setChartHovered(true),
|
|
46
|
-
onMouseLeave: () => setChartHovered(false),
|
|
47
|
-
} }, `${activeLegend}-${LEGENDS.TRANSACTIONS.key}`), activeLegend === LEGENDS.CHARGE.key && (_jsx(Area, { dataKey: "chargeRateValue", type: "monotone", stackId: "1", fill: "#1F88D007", stroke: LEGENDS.CHARGE.color, activeDot: {
|
|
48
|
-
r: 5,
|
|
49
|
-
fill: LEGENDS.CHARGE.color,
|
|
50
|
-
strokeWidth: 2,
|
|
51
|
-
stroke: 'white',
|
|
52
|
-
cursor: chartHovered ? 'pointer' : 'default',
|
|
53
|
-
onMouseOver: () => setChartHovered(true),
|
|
54
|
-
onMouseLeave: () => setChartHovered(false),
|
|
55
|
-
} }, `${activeLegend}-${LEGENDS.CHARGE.key}`))] })) }), _jsx(ChartLegend, { activeLegend: activeLegend, onSelectLegend: setActiveLegend })] }));
|
|
22
|
+
return (_jsx(ResponsiveContainer, { children: _jsxs(AreaChart, Object.assign({ margin: {
|
|
23
|
+
top: 20,
|
|
24
|
+
}, data: data, onMouseMove: handleMouseMove }, { children: [data.length > 0 && (_jsx(Tooltip, { content: MemoizedChartTooltip, cursor: {
|
|
25
|
+
fill: '#A5A8A3',
|
|
26
|
+
stroke: '#A5A8A3',
|
|
27
|
+
strokeWidth: 1,
|
|
28
|
+
strokeOpacity: 1,
|
|
29
|
+
stopOpacity: 0.3,
|
|
30
|
+
strokeDasharray: '5 5',
|
|
31
|
+
strokeLinecap: 'round',
|
|
32
|
+
strokeLinejoin: 'round',
|
|
33
|
+
} })), _jsx(Area, { dataKey: dataKey, type: "monotone", fill: "#76BB4012", stroke: theme.palette.success.dark, activeDot: {
|
|
34
|
+
r: 5,
|
|
35
|
+
fill: theme.palette.success.dark,
|
|
36
|
+
strokeWidth: 2,
|
|
37
|
+
stroke: 'white',
|
|
38
|
+
cursor: chartHovered ? 'pointer' : 'default',
|
|
39
|
+
onMouseOver: () => setChartHovered(true),
|
|
40
|
+
onMouseLeave: () => setChartHovered(false),
|
|
41
|
+
} })] })) }));
|
|
56
42
|
};
|
|
57
43
|
export default ActivityAreaChart;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import dayjs from 'dayjs';
|
|
4
|
+
import Box from '@mui/material/Box';
|
|
5
|
+
import { getLocalizedUnitLabel } from '../../../utils/index.js';
|
|
6
|
+
import { DATA_KEY } from '../../../constants/index.js';
|
|
7
|
+
import CountryFlag from '../../CountryFlag';
|
|
8
|
+
import { TooltipContainer, TimeTypography, ValueTypography, CurrencyBox, CurrencyText } from '../styles';
|
|
9
|
+
import { getTooltipFormattedValue, getFormattedDateWithTimezone } from '../utils';
|
|
10
|
+
const ChartTooltip = ({ active, payload, dateRange, selectedCurrency }) => {
|
|
11
|
+
var _a, _b, _c, _d;
|
|
12
|
+
const { t } = useTranslation();
|
|
13
|
+
const dateRangeFrom = dayjs(dateRange === null || dateRange === void 0 ? void 0 : dateRange[0]);
|
|
14
|
+
const dateRangeTo = dayjs(dateRange === null || dateRange === void 0 ? void 0 : dateRange[1]);
|
|
15
|
+
const isSingleDay = dateRangeFrom === null || dateRangeFrom === void 0 ? void 0 : dateRangeFrom.isSame(dateRangeTo, 'day');
|
|
16
|
+
if (active && (payload === null || payload === void 0 ? void 0 : payload.length)) {
|
|
17
|
+
const point = payload[0];
|
|
18
|
+
const localizedUnitLabel = getLocalizedUnitLabel(point === null || point === void 0 ? void 0 : point.dataKey, point === null || point === void 0 ? void 0 : point.value);
|
|
19
|
+
const formattedDate = ((_a = point === null || point === void 0 ? void 0 : point.payload) === null || _a === void 0 ? void 0 : _a.date) && getFormattedDateWithTimezone((_b = point === null || point === void 0 ? void 0 : point.payload) === null || _b === void 0 ? void 0 : _b.date, isSingleDay, (_c = point === null || point === void 0 ? void 0 : point.payload) === null || _c === void 0 ? void 0 : _c.hour);
|
|
20
|
+
return (_jsxs(TooltipContainer, Object.assign({ className: "chart-tooltip" }, { children: [_jsx(TimeTypography, { children: formattedDate !== null && formattedDate !== void 0 ? formattedDate : (_d = point === null || point === void 0 ? void 0 : point.payload) === null || _d === void 0 ? void 0 : _d.date }), _jsxs(ValueTypography, { children: [(point === null || point === void 0 ? void 0 : point.dataKey) === DATA_KEY.AMOUNT && (_jsxs(CurrencyBox, { children: [_jsx(CountryFlag, { currencyCode: selectedCurrency, width: 12 }), _jsx(CurrencyText, { children: selectedCurrency })] })), _jsx(Box, { children: `${getTooltipFormattedValue(point, t(localizedUnitLabel), selectedCurrency)}` })] })] })));
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
};
|
|
24
|
+
export default ChartTooltip;
|
|
@@ -10,8 +10,9 @@ const loadingData = [
|
|
|
10
10
|
{ dataKey: 94.3882 },
|
|
11
11
|
{ dataKey: 110.406 },
|
|
12
12
|
];
|
|
13
|
-
|
|
13
|
+
const LoadingChart = () => {
|
|
14
14
|
return (_jsx(ResponsiveContainer, { children: _jsxs(AreaChart, Object.assign({ margin: {
|
|
15
15
|
top: 40,
|
|
16
16
|
}, data: loadingData }, { children: [_jsx("defs", { children: _jsxs("linearGradient", Object.assign({ id: "loadingGradient", x1: "0", y1: "0", x2: "0", y2: "1", gradientUnits: "objectBoundingBox" }, { children: [_jsx("stop", { offset: "0.54", stopColor: "rgba(67, 67, 67, 0.035)" }), _jsx("stop", { offset: "1", stopColor: "rgba(255, 255, 255, 0)" })] })) }), _jsx(Area, { dataKey: "dataKey", type: "linear", fill: "url(#loadingGradient)", fillOpacity: 1, stroke: "#C2C2C2", strokeWidth: 1, strokeLinecap: "round", strokeDasharray: "4 4", activeDot: false })] })) }));
|
|
17
17
|
};
|
|
18
|
+
export default LoadingChart;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export * from './ChartLegend';
|
|
1
|
+
export { default as ChartTooltip } from './ChartTooltip';
|
|
2
|
+
export { default as LoadingChart } from './LoadingChart';
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export * from './ChartLegend';
|
|
1
|
+
export { default as ChartTooltip } from './ChartTooltip';
|
|
2
|
+
export { default as LoadingChart } from './LoadingChart';
|
|
@@ -13,6 +13,4 @@ export declare const CurrencyBox: import("@emotion/styled").StyledComponent<impo
|
|
|
13
13
|
}, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
|
14
14
|
export declare const CurrencyText: import("@emotion/styled").StyledComponent<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
|
|
15
15
|
ref?: ((instance: HTMLSpanElement | null) => void) | import("react").RefObject<HTMLSpanElement> | null | undefined;
|
|
16
|
-
}, "width" | "minHeight" | "height" | "bottom" | "left" | "right" | "top" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "visibility" | "whiteSpace" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "classes" | "align" | "className" | "style" | "children" | "gutterBottom" | "noWrap" | "paragraph" | "sx" | "variant" | "variantMapping"> & {
|
|
17
|
-
component?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
18
|
-
} & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
|
16
|
+
}, "width" | "minHeight" | "height" | "bottom" | "left" | "right" | "top" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "visibility" | "whiteSpace" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "classes" | "align" | "className" | "style" | "children" | "gutterBottom" | "noWrap" | "paragraph" | "sx" | "variant" | "variantMapping"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import Text from '../Text';
|
|
2
1
|
import { Box, Typography, styled } from '@mui/material';
|
|
3
2
|
export const TooltipContainer = styled(Box)(() => ({
|
|
4
3
|
width: 'auto',
|
|
@@ -34,13 +33,14 @@ export const ValueTypography = styled(Typography)({
|
|
|
34
33
|
export const CurrencyBox = styled(Box)({
|
|
35
34
|
display: 'flex',
|
|
36
35
|
alignItems: 'center',
|
|
37
|
-
|
|
36
|
+
height: '100%',
|
|
38
37
|
gap: '2.6px',
|
|
39
38
|
maxHeight: '19px',
|
|
40
39
|
});
|
|
41
|
-
export const CurrencyText = styled(
|
|
42
|
-
fontWeight:
|
|
40
|
+
export const CurrencyText = styled(Typography)({
|
|
41
|
+
fontWeight: 500,
|
|
43
42
|
fontSize: 11,
|
|
44
43
|
lineHeight: '130%',
|
|
44
|
+
color: '#4B4847',
|
|
45
45
|
letterSpacing: '-0.14px',
|
|
46
46
|
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { LegendKey } from './components';
|
|
2
1
|
export interface ActivityAreaChartProps {
|
|
3
2
|
data: ChartDataPoint[];
|
|
4
3
|
dataKey: string;
|
|
@@ -6,23 +5,17 @@ export interface ActivityAreaChartProps {
|
|
|
6
5
|
dateRange: [Date, Date];
|
|
7
6
|
selectedCurrency: string;
|
|
8
7
|
}
|
|
9
|
-
export interface ChartDataPoint {
|
|
10
|
-
date: string;
|
|
11
|
-
chargeCount: number;
|
|
12
|
-
chargeAmount: number;
|
|
13
|
-
chargeRate: number;
|
|
14
|
-
refundCount: number;
|
|
15
|
-
refundAmount: number;
|
|
16
|
-
hour?: number;
|
|
17
|
-
}
|
|
18
8
|
export interface ChartTooltipProps {
|
|
19
9
|
active?: boolean;
|
|
20
|
-
activeLegend: LegendKey;
|
|
21
|
-
activeDataKey: string;
|
|
22
10
|
payload?: Array<{
|
|
23
11
|
value?: number;
|
|
24
12
|
dataKey?: string;
|
|
25
|
-
payload?:
|
|
13
|
+
payload?: {
|
|
14
|
+
date?: string;
|
|
15
|
+
count?: number;
|
|
16
|
+
amount?: number;
|
|
17
|
+
hour?: number;
|
|
18
|
+
};
|
|
26
19
|
}>;
|
|
27
20
|
position?: {
|
|
28
21
|
x: number;
|
|
@@ -31,4 +24,9 @@ export interface ChartTooltipProps {
|
|
|
31
24
|
dateRange: [Date, Date];
|
|
32
25
|
selectedCurrency: string;
|
|
33
26
|
}
|
|
27
|
+
export interface ChartDataPoint {
|
|
28
|
+
date: string;
|
|
29
|
+
count: number;
|
|
30
|
+
amount: number;
|
|
31
|
+
}
|
|
34
32
|
export type PayloadItem = NonNullable<ChartTooltipProps['payload']>[number];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { BoxProps } from '@mui/material/Box';
|
|
2
3
|
import { SxProps } from '@mui/material';
|
|
3
4
|
interface FilterDropdownProps extends BoxProps {
|
|
@@ -8,6 +9,8 @@ interface FilterDropdownProps extends BoxProps {
|
|
|
8
9
|
icon?: string;
|
|
9
10
|
title?: string;
|
|
10
11
|
menuStyle?: SxProps;
|
|
12
|
+
hideTitle?: boolean;
|
|
13
|
+
renderButton?: ReactNode;
|
|
11
14
|
}
|
|
12
|
-
export default function FilterDropdown({ onConfirm, onCancel, isOkayButDisabled, children, isDisabled, icon, title, menuStyle, ...props }: Readonly<FilterDropdownProps>): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default function FilterDropdown({ onConfirm, onCancel, isOkayButDisabled, children, isDisabled, icon, title, menuStyle, hideTitle, renderButton, ...props }: Readonly<FilterDropdownProps>): import("react/jsx-runtime").JSX.Element;
|
|
13
16
|
export {};
|
|
@@ -18,7 +18,7 @@ import { darkFilterIcon } from '../../constants/index.js';
|
|
|
18
18
|
import { Menu, CustomBackdrop } from '../index.js';
|
|
19
19
|
import { CancelButton, FilterButton, Footer, OkayButton, TitleStyled } from './style';
|
|
20
20
|
export default function FilterDropdown(_a) {
|
|
21
|
-
var { onConfirm, onCancel, isOkayButDisabled, children, isDisabled, icon, title, menuStyle } = _a, props = __rest(_a, ["onConfirm", "onCancel", "isOkayButDisabled", "children", "isDisabled", "icon", "title", "menuStyle"]);
|
|
21
|
+
var { onConfirm, onCancel, isOkayButDisabled, children, isDisabled, icon, title, menuStyle, hideTitle = false, renderButton } = _a, props = __rest(_a, ["onConfirm", "onCancel", "isOkayButDisabled", "children", "isDisabled", "icon", "title", "menuStyle", "hideTitle", "renderButton"]);
|
|
22
22
|
const [anchorEl, setAnchorEl] = useState(null);
|
|
23
23
|
const open = Boolean(anchorEl);
|
|
24
24
|
const { t } = useTranslation();
|
|
@@ -62,5 +62,5 @@ export default function FilterDropdown(_a) {
|
|
|
62
62
|
onConfirm();
|
|
63
63
|
onClose();
|
|
64
64
|
};
|
|
65
|
-
return (_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCancel }, { children: _jsxs(Box, Object.assign({}, props, { children: [_jsx(FilterButton, Object.assign({ className: "filter-button", isActive: open, onClick: onOpen, sx: Object.assign({}, (isDisabled && Object.assign({ pointerEvents: 'none', opacity: 0.5 }, props.sx))) }, { children: _jsx(Box, { component: "img", src: icon !== null && icon !== void 0 ? icon : darkFilterIcon, alt: "filter" }) })), _jsxs(Menu, Object.assign({ anchorEl: anchorEl, open: open, sx: Object.assign({ marginTop: '8px', marginBottom: '8px', width: 193 }, menuStyle), placement: "bottom-end" }, { children: [_jsx(TitleStyled, Object.assign({ component: "span" }, { children: title !== null && title !== void 0 ? title : t('filterBy') })), children, _jsxs(Footer, { children: [_jsx(CancelButton, Object.assign({ onClick: handleCancel }, { children: t('cancel') })), _jsx(OkayButton, Object.assign({ disabled: isOkayButDisabled, onClick: handleConfirm }, { children: t('okay') }))] })] })), open && _jsx(CustomBackdrop, { onClick: onClose })] })) })));
|
|
65
|
+
return (_jsx(ClickAwayListener, Object.assign({ onClickAway: handleCancel }, { children: _jsxs(Box, Object.assign({}, props, { children: [_jsx(FilterButton, Object.assign({ className: "filter-button", isActive: open, onClick: onOpen, sx: Object.assign({}, (isDisabled && Object.assign({ pointerEvents: 'none', opacity: 0.5 }, props.sx))) }, { children: renderButton !== null && renderButton !== void 0 ? renderButton : _jsx(Box, { component: "img", src: icon !== null && icon !== void 0 ? icon : darkFilterIcon, alt: "filter" }) })), _jsxs(Menu, Object.assign({ anchorEl: anchorEl, open: open, sx: Object.assign({ marginTop: '8px', marginBottom: '8px', width: 193 }, menuStyle), placement: "bottom-end" }, { children: [!hideTitle && _jsx(TitleStyled, Object.assign({ component: "span" }, { children: title !== null && title !== void 0 ? title : t('filterBy') })), children, _jsxs(Footer, { children: [_jsx(CancelButton, Object.assign({ onClick: handleCancel }, { children: t('cancel') })), _jsx(OkayButton, Object.assign({ disabled: isOkayButDisabled, onClick: handleConfirm }, { children: t('okay') }))] })] })), open && _jsx(CustomBackdrop, { onClick: onClose })] })) })));
|
|
66
66
|
}
|
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.365-test.
|
|
5
|
-
"testVersion":
|
|
4
|
+
"version": "0.1.365-test.24",
|
|
5
|
+
"testVersion": 24,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "build/index.js",
|
|
8
8
|
"module": "build/index.js",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { BoxProps } from '@mui/material/Box';
|
|
2
|
-
import { LegendKey } from './type';
|
|
3
|
-
interface ChartLegendProps extends BoxProps {
|
|
4
|
-
activeLegend: LegendKey;
|
|
5
|
-
onSelectLegend: (key: LegendKey) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare const ChartLegend: ({ activeLegend, onSelectLegend }: ChartLegendProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export {};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { createElement as _createElement } from "react";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import Box from '@mui/material/Box';
|
|
5
|
-
import { MenuItem } from '../../../index.js';
|
|
6
|
-
import { downArrowIcon } from '../../../../constants/index.js';
|
|
7
|
-
import { LegendLabel } from './LegendLabel';
|
|
8
|
-
import { LEGENDS } from './constant';
|
|
9
|
-
import { ChartLegendContainer, StyledMenu, LegendWrapper } from './style';
|
|
10
|
-
export const ChartLegend = ({ activeLegend, onSelectLegend }) => {
|
|
11
|
-
const [anchorEl, setAnchorEl] = useState(null);
|
|
12
|
-
const open = Boolean(anchorEl);
|
|
13
|
-
const active = LEGENDS[activeLegend];
|
|
14
|
-
const onOpen = (e) => {
|
|
15
|
-
setAnchorEl(e.currentTarget);
|
|
16
|
-
};
|
|
17
|
-
const onClose = () => {
|
|
18
|
-
setAnchorEl(null);
|
|
19
|
-
};
|
|
20
|
-
const onSelect = (key) => {
|
|
21
|
-
onSelectLegend(key);
|
|
22
|
-
onClose();
|
|
23
|
-
};
|
|
24
|
-
return (_jsxs(ChartLegendContainer, Object.assign({ sx: {
|
|
25
|
-
backgroundImage: activeLegend === LEGENDS.REFUNDS.key
|
|
26
|
-
? 'linear-gradient(180deg, rgba(94, 48, 235, 0.025) 38.02%, rgba(255, 255, 255, 0) 99.99%)'
|
|
27
|
-
: 'linear-gradient(180deg, rgba(118, 187, 64, 0.025) 49.57%, rgba(255, 255, 255, 0) 100%)',
|
|
28
|
-
} }, { children: [_jsx(LegendLabel, Object.assign({}, LEGENDS.TRANSACTIONS)), _jsxs(LegendWrapper, Object.assign({ onMouseEnter: onOpen, onMouseLeave: onClose }, { children: [_jsx(LegendLabel, Object.assign({}, active)), _jsx(Box, { component: "img", src: downArrowIcon, alt: "down arrow", sx: { width: 15, marginTop: '2px' } }), _jsx(StyledMenu, Object.assign({ open: open, anchorEl: anchorEl, placement: "bottom-start" }, { children: Object.values(LEGENDS)
|
|
29
|
-
.filter((l) => l.key !== activeLegend && l.key !== LEGENDS.TRANSACTIONS.key)
|
|
30
|
-
.map((legend) => (_jsx(MenuItem, Object.assign({ hideCheckbox: true, onClick: () => onSelect(legend.key) }, { children: _createElement(LegendLabel, Object.assign({}, legend, { key: legend.key })) }), legend.key))) }))] }))] })));
|
|
31
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
|
-
import { Text } from '../../../index.js';
|
|
4
|
-
export const LegendLabel = ({ label, color }) => (_jsxs(Box, Object.assign({ sx: { display: 'flex', alignItems: 'center', gap: '4px' } }, { children: [_jsx(Box, { sx: { background: color, width: 8, height: 8, borderRadius: '50%' } }), _jsx(Text, Object.assign({ sx: { fontWeight: 500, fontSize: '11px' } }, { children: label }))] })));
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare const LEGENDS: {
|
|
2
|
-
readonly TRANSACTIONS: {
|
|
3
|
-
readonly key: "TRANSACTIONS";
|
|
4
|
-
readonly label: "Transactions";
|
|
5
|
-
readonly color: "rgb(118, 187, 64)";
|
|
6
|
-
};
|
|
7
|
-
readonly REFUNDS: {
|
|
8
|
-
readonly key: "REFUNDS";
|
|
9
|
-
readonly label: "Refunds";
|
|
10
|
-
readonly color: "rgb(94, 48, 235)";
|
|
11
|
-
};
|
|
12
|
-
readonly CHARGE: {
|
|
13
|
-
readonly key: "CHARGE";
|
|
14
|
-
readonly label: "Charge rate";
|
|
15
|
-
readonly color: "rgb(31, 136, 208)";
|
|
16
|
-
};
|
|
17
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export const LEGENDS = {
|
|
2
|
-
TRANSACTIONS: {
|
|
3
|
-
key: 'TRANSACTIONS',
|
|
4
|
-
label: 'Transactions',
|
|
5
|
-
color: 'rgb(118, 187, 64)',
|
|
6
|
-
},
|
|
7
|
-
REFUNDS: {
|
|
8
|
-
key: 'REFUNDS',
|
|
9
|
-
label: 'Refunds',
|
|
10
|
-
color: 'rgb(94, 48, 235)',
|
|
11
|
-
},
|
|
12
|
-
CHARGE: {
|
|
13
|
-
key: 'CHARGE',
|
|
14
|
-
label: 'Charge rate',
|
|
15
|
-
color: 'rgb(31, 136, 208)',
|
|
16
|
-
},
|
|
17
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
export declare const ChartLegendContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material/styles").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
3
|
-
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
4
|
-
}, keyof import("@mui/system").BoxOwnProps<import("@mui/material/styles").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
5
|
-
export declare const StyledMenu: import("@emotion/styled").StyledComponent<Omit<import("../../../Menu/Menu").MenuProps, "ref"> & import("react").RefAttributes<HTMLDivElement> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
6
|
-
export declare const LegendWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material/styles").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<import("@mui/material/styles").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { styled } from '@mui/material/styles';
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
|
-
import Menu from '../../../Menu';
|
|
4
|
-
export const ChartLegendContainer = styled(Box)(() => ({
|
|
5
|
-
padding: '8px 16px',
|
|
6
|
-
display: 'flex',
|
|
7
|
-
alignItems: 'center',
|
|
8
|
-
gap: '12px',
|
|
9
|
-
position: 'relative',
|
|
10
|
-
}));
|
|
11
|
-
export const StyledMenu = styled(Menu)(() => ({
|
|
12
|
-
marginTop: '8px',
|
|
13
|
-
marginBottom: '8px',
|
|
14
|
-
maxHeight: '190px',
|
|
15
|
-
overflow: 'auto',
|
|
16
|
-
minWidth: '100px',
|
|
17
|
-
}));
|
|
18
|
-
export const LegendWrapper = styled(Box)(() => ({
|
|
19
|
-
display: 'flex',
|
|
20
|
-
alignItems: 'center',
|
|
21
|
-
gap: '2px',
|
|
22
|
-
cursor: 'pointer',
|
|
23
|
-
}));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import dayjs from 'dayjs';
|
|
3
|
-
import Box from '@mui/material/Box';
|
|
4
|
-
import { TooltipContainer, TimeTypography, ValueTypography } from '../../styles';
|
|
5
|
-
import {
|
|
6
|
-
// getTooltipFormattedValue,
|
|
7
|
-
getFormattedDateWithTimezone, } from '../../utils';
|
|
8
|
-
import Text from '../../../Text';
|
|
9
|
-
import { LEGENDS } from '../ChartLegend';
|
|
10
|
-
export const ChartTooltip = ({ active, payload, dateRange,
|
|
11
|
-
// selectedCurrency,
|
|
12
|
-
activeLegend, }) => {
|
|
13
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
14
|
-
const dateRangeFrom = dayjs(dateRange === null || dateRange === void 0 ? void 0 : dateRange[0]);
|
|
15
|
-
const dateRangeTo = dayjs(dateRange === null || dateRange === void 0 ? void 0 : dateRange[1]);
|
|
16
|
-
const isSingleDay = dateRangeFrom === null || dateRangeFrom === void 0 ? void 0 : dateRangeFrom.isSame(dateRangeTo, 'day');
|
|
17
|
-
if (active && (payload === null || payload === void 0 ? void 0 : payload.length)) {
|
|
18
|
-
const point = payload[0];
|
|
19
|
-
// const localizedUnitLabel = getLocalizedUnitLabel(activeDataKey, point?.value)
|
|
20
|
-
const formattedDate = ((_a = point === null || point === void 0 ? void 0 : point.payload) === null || _a === void 0 ? void 0 : _a.date) && getFormattedDateWithTimezone((_b = point === null || point === void 0 ? void 0 : point.payload) === null || _b === void 0 ? void 0 : _b.date, isSingleDay, (_c = point === null || point === void 0 ? void 0 : point.payload) === null || _c === void 0 ? void 0 : _c.hour);
|
|
21
|
-
return (_jsxs(TooltipContainer, Object.assign({ className: "chart-tooltip" }, { children: [_jsx(TimeTypography, { children: formattedDate !== null && formattedDate !== void 0 ? formattedDate : (_d = point === null || point === void 0 ? void 0 : point.payload) === null || _d === void 0 ? void 0 : _d.date }), _jsx(ValueTypography, { children: _jsxs(Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '4px' } }, { children: [activeLegend === LEGENDS.CHARGE.key && (_jsxs(Box, Object.assign({ sx: { display: 'flex', alignItems: 'center', gap: '4px' } }, { children: [_jsx(Box, { sx: { width: 12, height: 12, background: LEGENDS.CHARGE.color, borderRadius: '50%', border: `2px solid #fff`, flexShrink: 0 } }), _jsx(Text, Object.assign({ sx: { fontSize: '11px', fontWeight: 600 } }, { children: `${(_e = point.payload) === null || _e === void 0 ? void 0 : _e.chargeRate} Charge Rate` }))] }))), _jsxs(Box, Object.assign({ sx: { display: 'flex', alignItems: 'center', gap: '4px' } }, { children: [_jsx(Box, { sx: { width: 12, height: 12, background: LEGENDS.TRANSACTIONS.color, borderRadius: '50%', border: `2px solid #fff`, flexShrink: 0 } }), _jsx(Text, Object.assign({ sx: { fontSize: '11px', fontWeight: 600 } }, { children: `${(_f = point.payload) === null || _f === void 0 ? void 0 : _f.chargeCount} Transactions` }))] })), activeLegend === LEGENDS.REFUNDS.key && (_jsxs(Box, Object.assign({ sx: { display: 'flex', alignItems: 'center', gap: '4px' } }, { children: [_jsx(Box, { sx: { width: 12, height: 12, background: LEGENDS.REFUNDS.color, borderRadius: '50%', border: `2px solid #fff`, flexShrink: 0 } }), _jsx(Text, Object.assign({ sx: { fontSize: '11px', fontWeight: 600 } }, { children: `${(_g = point.payload) === null || _g === void 0 ? void 0 : _g.chargeCount} Refunds` }))] })))] })) })] })));
|
|
22
|
-
}
|
|
23
|
-
return null;
|
|
24
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ChartTooltip';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ChartTooltip';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const LoadingChart: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './LoadingChart';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './LoadingChart';
|