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

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,16 @@
1
+ import { CustomColumnFilterProps } from '../VirtualTables';
2
+ export interface ListColumnFilterProps extends CustomColumnFilterProps {
3
+ apiKey: string;
4
+ placeholder: string;
5
+ onConfirm: () => void;
6
+ onClear: () => void;
7
+ inputValue: string;
8
+ onInputValueChange: (val: string) => void;
9
+ list: {
10
+ id: string;
11
+ name: string;
12
+ }[];
13
+ onClickItem: (id: string) => void;
14
+ selectedListItems: string[];
15
+ }
16
+ export default function ListColumnFilter({ anchorEl, onCloseDropdown, list, apiKey, placeholder, onConfirm, onClear, onClickItem, inputValue, onInputValueChange, selectedListItems, }: ListColumnFilterProps): 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 { Box } from '@mui/material';
5
+ import { SearchListInput, FilterTitle, FilterOkayButton, FilterFooter, FilterCancelButton } from '../index.js';
6
+ import { FilterMenu, Container, ListColumnFilterID, ListColumnFilterMenuItem, ListColumnFilterName, ListColumnFilterWrapper } from './style';
7
+ export default function ListColumnFilter({ anchorEl, onCloseDropdown, list, apiKey, placeholder, onConfirm, onClear, onClickItem, inputValue, onInputValueChange, selectedListItems, }) {
8
+ const { t } = useTranslation();
9
+ const handleOkButtonClick = (e) => {
10
+ onConfirm();
11
+ onCloseDropdown(e);
12
+ };
13
+ const onCancel = (e) => {
14
+ onClear();
15
+ onCloseDropdown(e);
16
+ };
17
+ const isInputHasValue = !!inputValue.trim().length;
18
+ const onClickResetInput = () => {
19
+ if (isInputHasValue)
20
+ onInputValueChange('');
21
+ };
22
+ const onChangeInput = (value) => {
23
+ onInputValueChange(value);
24
+ };
25
+ // filter the list based on input value
26
+ const filteredList = useMemo(() => {
27
+ if (!isInputHasValue)
28
+ return list;
29
+ return list === null || list === void 0 ? void 0 : list.filter((item) => item.name.toLowerCase().includes(inputValue.trim().toLowerCase()));
30
+ }, [inputValue, isInputHasValue, list]);
31
+ const noListDataAvailable = (isInputHasValue && !filteredList.length) || !list.length;
32
+ const selectedSet = useMemo(() => new Set(selectedListItems), [selectedListItems]);
33
+ return (_jsxs(FilterMenu, Object.assign({ open: !!anchorEl, anchorEl: anchorEl }, { children: [_jsx(FilterTitle, Object.assign({ component: "span" }, { children: t('filterBy') })), _jsx(SearchListInput, { value: inputValue, name: apiKey, placeholder: placeholder, onSearchChange: onChangeInput, onSearchReset: onClickResetInput }), _jsx(Container, { children: !noListDataAvailable ? (filteredList === null || filteredList === void 0 ? void 0 : filteredList.map((item, index) => (_jsx(ListColumnFilterMenuItem, Object.assign({ isSelected: selectedSet.has(item === null || item === void 0 ? void 0 : item.id), onClick: () => {
34
+ onClickItem(item === null || item === void 0 ? void 0 : item.id);
35
+ } }, { children: _jsxs(ListColumnFilterWrapper, { children: [_jsx(ListColumnFilterName, { children: item.name }), _jsx(ListColumnFilterID, Object.assign({ component: "span" }, { children: item.id }))] }) }), `${item.id}-${index}`)))) : (_jsx(Box, Object.assign({ sx: { p: 1, textAlign: 'center', fontSize: '11px' } }, { children: "No data available" }))) }), _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 ListColumnFilter, type ListColumnFilterProps } from './ListColumnFilter';
@@ -0,0 +1 @@
1
+ export { default as ListColumnFilter } from './ListColumnFilter';
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ export declare const Container: 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 ListColumnFilterMenuItem: import("@emotion/styled").StyledComponent<import("../MenuItem/MenuItem").MenuItemProps & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
6
+ export declare const ListColumnFilterWrapper: 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 ListColumnFilterID: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material/styles").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
10
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
11
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material/styles").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
12
+ export declare const ListColumnFilterName: 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>, {}, {}>;
15
+ 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>, {}, {}>;
@@ -0,0 +1,35 @@
1
+ import { styled, alpha } from '@mui/material/styles';
2
+ import Box from '@mui/material/Box';
3
+ import { Menu, MenuItem } from '../index.js';
4
+ export const Container = styled(Box)(() => ({
5
+ maxHeight: '210px',
6
+ maxWidth: '177px',
7
+ overflowY: 'auto',
8
+ padding: 0,
9
+ }));
10
+ export const ListColumnFilterMenuItem = styled(MenuItem)(() => ({
11
+ padding: '12px 16px',
12
+ border: 'none !important',
13
+ '&:hover': { boxShadow: '0px 0px 16px 0px #00000021' },
14
+ maxHeight: 35,
15
+ minHeight: 35,
16
+ }));
17
+ export const ListColumnFilterWrapper = styled(Box)(() => ({
18
+ display: 'flex',
19
+ flexDirection: 'column',
20
+ gap: '2px',
21
+ }));
22
+ export const ListColumnFilterID = styled(Box)(({ theme }) => ({
23
+ color: alpha(theme.palette.text.primary, 0.5),
24
+ fontSize: '9px',
25
+ }));
26
+ export const ListColumnFilterName = styled(Box)(() => ({
27
+ fontSize: '11px',
28
+ overflow: 'hidden',
29
+ textOverflow: 'ellipsis',
30
+ whiteSpace: 'nowrap',
31
+ maxWidth: '120px',
32
+ }));
33
+ export const FilterMenu = styled(Menu)(() => ({
34
+ marginBottom: '8px',
35
+ }));
@@ -151,3 +151,4 @@ export * from './AmountConversionFilter';
151
151
  export * from './PartnersFilter';
152
152
  export * from './SalesChannelFilter';
153
153
  export * from './ReferenceTypeFilter';
154
+ export * from './ListColumnFilter';
@@ -151,3 +151,4 @@ export * from './AmountConversionFilter';
151
151
  export * from './PartnersFilter';
152
152
  export * from './SalesChannelFilter';
153
153
  export * from './ReferenceTypeFilter';
154
+ export * from './ListColumnFilter';
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.299",
4
+ "version": "0.1.300",
5
5
  "testVersion": 0,
6
6
  "type": "module",
7
7
  "main": "build/index.js",