@tap-payments/os-micro-frontend-shared 0.1.298 → 0.1.299

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.
@@ -0,0 +1,19 @@
1
+ import { CustomColumnFilterProps } from '../VirtualTables';
2
+ export interface ReferenceTypeFilterProps extends CustomColumnFilterProps {
3
+ label: string;
4
+ onConfirm: () => void;
5
+ onClear: () => void;
6
+ selectedRadioValue?: string;
7
+ onRadioButtonChange: (val: string) => void;
8
+ radioOptions: {
9
+ value: string;
10
+ label: string;
11
+ }[];
12
+ inputValues?: Record<string, any>;
13
+ onInputValuesChange: (val: Record<string, any>) => void;
14
+ inputFilters?: {
15
+ apiKey: string;
16
+ placeholder: string;
17
+ }[];
18
+ }
19
+ export default function ReferenceTypeFilter({ selectedRadioValue, onRadioButtonChange, radioOptions, label, onConfirm, onClear, inputValues, onInputValuesChange, anchorEl, onCloseDropdown, inputFilters, }: ReferenceTypeFilterProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useTranslation } from 'react-i18next';
3
+ import { useMemo } from 'react';
4
+ import { ViewColumnRadioFilter, FilterTitle, FilterOkayButton, FilterFooter, FilterCancelButton } from '../index.js';
5
+ import { grayCloseIcon, searchIcon } from '../../constants/index.js';
6
+ import lodashValues from 'lodash/values';
7
+ import { ClearButton, ClearWrapper, FilterMenu, InputStyled, InputsWrapper } from './style';
8
+ import { Box, Collapse } from '@mui/material';
9
+ export default function ReferenceTypeFilter({ selectedRadioValue, onRadioButtonChange, radioOptions, label, onConfirm, onClear, inputValues, onInputValuesChange, anchorEl, onCloseDropdown, inputFilters = [], }) {
10
+ const { t } = useTranslation();
11
+ const handleOkButtonClick = (e) => {
12
+ onConfirm();
13
+ onCloseDropdown(e);
14
+ };
15
+ const onCancel = (e) => {
16
+ onClear();
17
+ onCloseDropdown(e);
18
+ };
19
+ const isInputHasValue = (key) => (inputValues === null || inputValues === void 0 ? void 0 : inputValues[key]) !== undefined && (inputValues === null || inputValues === void 0 ? void 0 : inputValues[key].length) > 0;
20
+ const onClickResetInput = (key) => {
21
+ if (isInputHasValue(key))
22
+ onInputValuesChange(Object.assign(Object.assign({}, inputValues), { [key]: '' }));
23
+ };
24
+ const showClearButton = useMemo(() => lodashValues(inputValues).some((x) => Boolean(x)), [inputValues]);
25
+ const onClickClear = () => {
26
+ onInputValuesChange(inputFilters.reduce((acc, { apiKey }) => (Object.assign(Object.assign({}, acc), { [apiKey]: '' })), {}));
27
+ };
28
+ return (_jsxs(FilterMenu, Object.assign({ open: !!anchorEl, anchorEl: anchorEl }, { children: [_jsx(FilterTitle, Object.assign({ component: "span" }, { children: t('filterBy') })), _jsx(ViewColumnRadioFilter, { menuLabel: label, options: radioOptions, selectedValue: selectedRadioValue, onValueChange: onRadioButtonChange }), inputFilters.length > 0 && (_jsx(InputsWrapper, Object.assign({ "data-testid": "ColumnFilterInputs_inputs", component: "main" }, { children: inputFilters.map(({ apiKey, placeholder }) => {
29
+ var _a;
30
+ return (_jsx(InputStyled, { className: "input", "data-testid": "ColumnFilterInputs_InputStyled", name: apiKey, placeholder: placeholder, onChange: (e) => {
31
+ onInputValuesChange(Object.assign(Object.assign({}, inputValues), { [apiKey]: e.target.value }));
32
+ }, defaultValue: (_a = inputValues === null || inputValues === void 0 ? void 0 : inputValues[apiKey]) !== null && _a !== void 0 ? _a : '', value: inputValues === null || inputValues === void 0 ? void 0 : inputValues[apiKey], inputProps: { autoComplete: 'off', 'data-testid': 'ColumnFilterInputs_input' }, endAdornment: _jsx(Box, { component: "img", "data-testid": "ColumnFilterInputs_icon", "data-icon": isInputHasValue(apiKey) ? 'close' : 'search', src: isInputHasValue(apiKey) ? grayCloseIcon : searchIcon, alt: "search", className: "icon", sx: { cursor: isInputHasValue(apiKey) ? 'pointer' : 'default' }, onClick: () => {
33
+ onClickResetInput(apiKey);
34
+ } }) }, apiKey));
35
+ }) }))), _jsx(Collapse, Object.assign({ in: showClearButton, component: "section", "data-testid": "ColumnFilterInputs_Collapse" }, { children: _jsx(ClearWrapper, Object.assign({ "data-testid": "ColumnFilterInputs_ClearWrapper" }, { children: _jsx(ClearButton, Object.assign({ type: "button", onClick: onClickClear, "data-testid": "ColumnFilterInputs_ClearButton" }, { children: t('clear') })) })) })), _jsxs(FilterFooter, { children: [_jsx(FilterCancelButton, Object.assign({ onClick: onCancel }, { children: t('cancel') })), _jsx(FilterOkayButton, Object.assign({ onClick: handleOkButtonClick }, { children: t('okay') }))] })] })));
36
+ }
@@ -0,0 +1 @@
1
+ export { default as ReferenceTypeFilter, type ReferenceTypeFilterProps } from './ReferenceTypeFilter';
@@ -0,0 +1 @@
1
+ export { default as ReferenceTypeFilter } from './ReferenceTypeFilter';
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ export declare const FilterMenu: import("@emotion/styled").StyledComponent<Omit<import("../Menu/Menu").MenuProps, "ref"> & import("react").RefAttributes<HTMLDivElement> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
3
+ export declare const InputStyled: import("@emotion/styled").StyledComponent<Readonly<import("@mui/material").InputProps & {
4
+ isError?: boolean | undefined;
5
+ }> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
6
+ export declare const InputsWrapper: 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>, {}, {}>;
9
+ export declare const ClearButton: import("@emotion/styled").StyledComponent<import("@mui/material/Button").ButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
10
+ ref?: ((instance: HTMLButtonElement | null) => void) | import("react").RefObject<HTMLButtonElement> | null | undefined;
11
+ }, "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<import("@mui/material/styles").Theme>, {}, {}>;
12
+ export declare const ClearWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material/styles").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<import("@mui/material/styles").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
@@ -0,0 +1,34 @@
1
+ import { styled } from '@mui/material/styles';
2
+ import { Input, Menu } from '../index.js';
3
+ import Box from '@mui/material/Box';
4
+ import Button from '@mui/material/Button';
5
+ export const FilterMenu = styled(Menu)(() => ({
6
+ marginBottom: '8px',
7
+ }));
8
+ export const InputStyled = styled(Input)(({ theme }) => ({
9
+ border: `1px solid ${theme.palette.divider}`,
10
+ '.icon': {
11
+ width: 14,
12
+ },
13
+ }));
14
+ export const InputsWrapper = styled(Box)(() => ({
15
+ padding: '8px 16px',
16
+ '> div + div': {
17
+ marginTop: '8px',
18
+ },
19
+ }));
20
+ export const ClearButton = styled(Button)(({ theme }) => ({
21
+ color: theme.palette.info.dark,
22
+ fontSize: '11px',
23
+ textTransform: 'capitalize',
24
+ padding: '4px 9px',
25
+ minWidth: 'auto',
26
+ '&:hover': {
27
+ background: 'transparent',
28
+ },
29
+ }));
30
+ export const ClearWrapper = styled(Box)(({ theme }) => ({
31
+ padding: '0 16px 8px',
32
+ textAlign: 'left',
33
+ borderBottom: `1px solid ${theme.palette.divider}`,
34
+ }));
@@ -150,3 +150,4 @@ export * from './CurrencyFilter';
150
150
  export * from './AmountConversionFilter';
151
151
  export * from './PartnersFilter';
152
152
  export * from './SalesChannelFilter';
153
+ export * from './ReferenceTypeFilter';
@@ -150,3 +150,4 @@ export * from './CurrencyFilter';
150
150
  export * from './AmountConversionFilter';
151
151
  export * from './PartnersFilter';
152
152
  export * from './SalesChannelFilter';
153
+ export * from './ReferenceTypeFilter';
package/package.json CHANGED
@@ -1,7 +1,7 @@
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.298",
4
+ "version": "0.1.299",
5
5
  "testVersion": 0,
6
6
  "type": "module",
7
7
  "main": "build/index.js",