Short variant for filter texts (#943)

* - added a short variant for filter labels in the filter bar

* - fixed tests
- moved colon to shortoperand

* - fixed formatting
This commit is contained in:
brendanlaschke
2023-07-27 17:45:15 +02:00
committed by GitHub
parent 03b619ebb5
commit e3d5f0b26f
5 changed files with 41 additions and 11 deletions

View File

@ -9,7 +9,7 @@ import { useRemoveFilter } from '../hooks/useRemoveFilter';
import { availableFiltersScopedState } from '../states/availableFiltersScopedState'; import { availableFiltersScopedState } from '../states/availableFiltersScopedState';
import { filtersScopedState } from '../states/filtersScopedState'; import { filtersScopedState } from '../states/filtersScopedState';
import { SelectedSortType } from '../types/interface'; import { SelectedSortType } from '../types/interface';
import { getOperandLabel } from '../utils/getOperandLabel'; import { getOperandLabelShort } from '../utils/getOperandLabel';
import SortOrFilterChip from './SortOrFilterChip'; import SortOrFilterChip from './SortOrFilterChip';
@ -126,7 +126,7 @@ function SortAndFilterBar<SortField>({
<SortOrFilterChip <SortOrFilterChip
key={filter.field} key={filter.field}
labelKey={filter.label} labelKey={filter.label}
labelValue={`${getOperandLabel(filter.operand)} ${ labelValue={`${getOperandLabelShort(filter.operand)} ${
filter.displayValue filter.displayValue
}`} }`}
id={filter.field} id={filter.field}

View File

@ -59,7 +59,7 @@ function SortOrFilterChip({
return ( return (
<StyledChip> <StyledChip>
<StyledIcon>{icon}</StyledIcon> <StyledIcon>{icon}</StyledIcon>
{labelKey && <StyledLabelKey>{labelKey}:&nbsp;</StyledLabelKey>} {labelKey && <StyledLabelKey>{labelKey}</StyledLabelKey>}
{labelValue} {labelValue}
<StyledDelete onClick={onRemove} data-testid={'remove-icon-' + id}> <StyledDelete onClick={onRemove} data-testid={'remove-icon-' + id}>
<IconX size={theme.icon.size.sm} stroke={theme.icon.stroke.sm} /> <IconX size={theme.icon.size.sm} stroke={theme.icon.stroke.sm} />

View File

@ -18,3 +18,21 @@ export function getOperandLabel(operand: FilterOperand | null | undefined) {
return ''; return '';
} }
} }
export function getOperandLabelShort(
operand: FilterOperand | null | undefined,
) {
switch (operand) {
case 'is':
case 'contains':
return ': ';
case 'is-not':
case 'does-not-contain':
return ': Not';
case 'greater-than':
return '\u00A0> ';
case 'less-than':
return '\u00A0< ';
default:
return ': ';
}
}

View File

@ -55,8 +55,10 @@ export const FilterByName: Story = {
expect(await canvas.findByText('Aircall')).toBeInTheDocument(); expect(await canvas.findByText('Aircall')).toBeInTheDocument();
await expect(canvas.queryAllByText('Qonto')).toStrictEqual([]); await expect(canvas.queryAllByText('Qonto')).toStrictEqual([]);
expect(await canvas.findByText('Name:')).toBeInTheDocument(); const accountOwnerFilter = canvas.getAllByText('Name').find((item) => {
expect(await canvas.findByText('Contains Air')).toBeInTheDocument(); return item.parentElement?.textContent?.includes('Name: Air');
});
expect(accountOwnerFilter).toBeInTheDocument();
}, },
}; };
@ -100,7 +102,13 @@ export const FilterByAccountOwner: Story = {
// expect(await canvas.findByText('Airbnb')).toBeInTheDocument(); // expect(await canvas.findByText('Airbnb')).toBeInTheDocument();
// await expect(canvas.queryAllByText('Qonto')).toStrictEqual([]); // await expect(canvas.queryAllByText('Qonto')).toStrictEqual([]);
expect(await canvas.findByText('Account owner:')).toBeInTheDocument(); const accountOwnerFilter = canvas
expect(await canvas.findByText('Is Charles Test')).toBeInTheDocument(); .getAllByText('Account owner')
.find((item) => {
return item.parentElement?.textContent?.includes(
'Account owner: Charles Test',
);
});
expect(accountOwnerFilter).toBeInTheDocument();
}, },
}; };

View File

@ -54,8 +54,10 @@ export const Email: Story = {
expect(await canvas.findByText('Alexandre Prot')).toBeInTheDocument(); expect(await canvas.findByText('Alexandre Prot')).toBeInTheDocument();
await expect(canvas.queryAllByText('John Doe')).toStrictEqual([]); await expect(canvas.queryAllByText('John Doe')).toStrictEqual([]);
expect(await canvas.findByText('Email:')).toBeInTheDocument(); const emailFilter = canvas.getAllByText('Email').find((item) => {
expect(await canvas.findByText('Contains al')).toBeInTheDocument(); return item.parentElement?.textContent?.includes('Email: al');
});
expect(emailFilter).toBeInTheDocument();
}, },
}; };
@ -99,7 +101,9 @@ export const CompanyName: Story = {
// expect(await canvas.findByText('Alexandre Prot')).toBeInTheDocument(); // expect(await canvas.findByText('Alexandre Prot')).toBeInTheDocument();
// await expect(canvas.queryAllByText('John Doe')).toStrictEqual([]); // await expect(canvas.queryAllByText('John Doe')).toStrictEqual([]);
expect(await canvas.findByText('Company:')).toBeInTheDocument(); const companyFilter = canvas.getAllByText('Company').find((item) => {
expect(await canvas.findByText('Is Qonto')).toBeInTheDocument(); return item.parentElement?.textContent?.includes('Company: Qonto');
});
expect(companyFilter).toBeInTheDocument();
}, },
}; };