Skip to content

Commit

Permalink
UIBULKED-313 Filter column names (#428)
Browse files Browse the repository at this point in the history
  • Loading branch information
vashjs authored Dec 12, 2023
1 parent e48b56f commit a9a5794
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 7 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
* [UIBULKED-388](https://issues.folio.org/browse/UIBULKED-388) Bulk edit - Scrollable element not keyboard accessible.
* [UIBULKED-384](https://issues.folio.org/browse/UIBULKED-384) Rendering holdings electronic access properties.
* [UIBULKED-382](https://issues.folio.org/browse/UIBULKED-382) Update Item record column names.
* [UIBULKED-313](https://issues.folio.org/browse/UIBULKED-313) Filter column names.


## [4.0.0](https://github.com/folio-org/ui-bulk-edit/tree/v4.0.0) (2023-10-12)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
.ActionMenu {
max-width: 250px;
}

.ActionMenuGroup {
margin-bottom: 20px;
}
Expand Down
30 changes: 23 additions & 7 deletions src/components/BulkEditActionMenu/BulkEditActionMenu.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import { FormattedMessage, useIntl } from 'react-intl';
import PropTypes from 'prop-types';
import { saveAs } from 'file-saver';

import {
Button,
Icon,
TextField,
} from '@folio/stripes/components';
import { CheckboxFilter } from '@folio/stripes/smart-components';
import React, { useContext, useState } from 'react';
import { Preloader } from '@folio/stripes-data-transfer-components';
import { useLocation } from 'react-router-dom';
import css from './ActionMenuGroup/ActionMenuGroup.css';
import { ActionMenuGroup } from './ActionMenuGroup/ActionMenuGroup';
import {
APPROACHES,
Expand Down Expand Up @@ -43,6 +44,8 @@ const BulkEditActionMenu = ({
const capability = search.get('capabilities');
const step = search.get('step');

const [columnSearch, setColumnSearch] = useState('');

const {
hasUserEditLocalPerm,
hasHoldingsInventoryEdit,
Expand Down Expand Up @@ -164,13 +167,26 @@ const BulkEditActionMenu = ({
};

const renderColumnsFilter = () => {
const filteredColumns = columnsOptions
.filter(item => item.label.toLowerCase().includes(columnSearch.toLowerCase()));

const allDisabled = columnsOptions.every(item => item.disabled);

return (
<CheckboxFilter
dataOptions={columnsOptions}
name="filter"
onChange={handleColumnChange}
selectedValues={selectedValues}
/>
<div className={css.ActionMenu}>
<TextField
value={columnSearch}
onChange={e => setColumnSearch(e.target.value)}
aria-label={intl.formatMessage({ id: 'ui-bulk-edit.ariaLabel.columnFilter' })}
disabled={allDisabled}
/>
<CheckboxFilter
dataOptions={filteredColumns}
name="filter"
onChange={handleColumnChange}
selectedValues={selectedValues}
/>
</div>
);
};

Expand Down
15 changes: 15 additions & 0 deletions src/components/BulkEditActionMenu/BulkEditActionMenu.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,21 @@ describe('BulkEditActionMenu', () => {
]);
});

it('should filter columns based on value in input', () => {
const setVisibleColumns = jest.fn();

const { getByRole, queryByText } = renderBulkEditActionMenu({
step: EDITING_STEPS.UPLOAD,
capability: CAPABILITIES.USER,
providerState: { ...defaultProviderState, setVisibleColumns, countOfRecords: 1 },
});

act(() => userEvent.type(getByRole('textbox'), 'name'));

expect(queryByText('ui-bulk-edit.columns.USER.name')).toBeVisible();
expect(queryByText('ui-bulk-edit.columns.USER.uuid')).not.toBeInTheDocument();
});

it('should not change visibleColumns when checkbox is pressed and only one option is selected ', () => {
const setVisibleColumns = jest.fn();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
background-color: #ccc;
}

.ElectronicAccess th:nth-child(1) { width: 15% }
.ElectronicAccess th:nth-child(2) { width: 30% }
.ElectronicAccess th:nth-child(3) { width: 15% }
.ElectronicAccess th:nth-child(4) { width: 15% }
.ElectronicAccess th:nth-child(5) { width: 20% }

.ElectronicAccess th, .ElectronicAccess td {
border: 1px solid var(--color-border-p2);
padding: var(--gutter-static-one-third) var(--gutter-static-two-thirds);
Expand Down
1 change: 1 addition & 0 deletions translations/ui-bulk-edit/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,7 @@
"ariaLabel.statusSelect": "Status select",
"ariaLabel.loanTypeSelect": "Loan type select",
"ariaLabel.urlRelationshipSelect": "Url relationship select",
"ariaLabel.columnFilter": "Column filter input",

"permissionsModal.title": "Select Permissions",
"permissionsModal.filter.title": "Search & filter",
Expand Down

0 comments on commit a9a5794

Please sign in to comment.