Skip to content

Commit

Permalink
Don't highlight active controls and update label for hidden columns
Browse files Browse the repository at this point in the history
  • Loading branch information
jughosta committed Nov 15, 2023
1 parent 0d47cd7 commit 8eb7277
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ const renderCustomToolbar: EuiDataGridToolbarProps['renderCustomToolbar'] = ({
{hasRoomForGridControls && (
<EuiDataGridToolbarControl
iconType="brush"
badgeCount={10}
badgeContent={10}
onClick={() => {}}
>
Custom left side
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ exports[`useDataGridColumnSorting columnSorting [React 16] renders a toolbar but
data-test-subj="dataGridColumnSortingPopover"
>
<button
class="euiButtonEmpty euiDataGrid__controlBtn euiDataGrid__controlBtn--active emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
class="euiButtonEmpty euiDataGrid__controlBtn emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
data-test-subj="dataGridColumnSortingButton"
type="button"
>
Expand Down Expand Up @@ -288,7 +288,7 @@ exports[`useDataGridColumnSorting columnSorting [React 17] renders a toolbar but
data-test-subj="dataGridColumnSortingPopover"
>
<button
class="euiButtonEmpty euiDataGrid__controlBtn euiDataGrid__controlBtn--active emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
class="euiButtonEmpty euiDataGrid__controlBtn emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
data-test-subj="dataGridColumnSortingButton"
type="button"
>
Expand Down Expand Up @@ -570,7 +570,7 @@ exports[`useDataGridColumnSorting columnSorting [React 18] renders a toolbar but
data-test-subj="dataGridColumnSortingPopover"
>
<button
class="euiButtonEmpty euiDataGrid__controlBtn euiDataGrid__controlBtn--active emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
class="euiButtonEmpty euiDataGrid__controlBtn emotion-euiButtonDisplay-euiButtonEmpty-xs-empty-text"
data-test-subj="dataGridColumnSortingButton"
type="button"
>
Expand Down
6 changes: 3 additions & 3 deletions src/components/datagrid/controls/column_selector.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ describe('useDataGridColumnSelector', () => {
/>
);

expect(component.text()).toEqual('2 columns hidden');
expect(component.text()).toEqual('Columns0/2');
});

it('toggles column visibility on switch interaction', () => {
Expand All @@ -207,7 +207,7 @@ describe('useDataGridColumnSelector', () => {
).simulate('click');
forceUpdate(component);

expect(component.text()).toEqual('1 column hidden1');
expect(component.text()).toEqual('Columns1/2');

findTestSubject(
component,
Expand All @@ -230,7 +230,7 @@ describe('useDataGridColumnSelector', () => {
).simulate('click');
forceUpdate(component);

expect(component.text()).toEqual('2 columns hidden');
expect(component.text()).toEqual('Columns0/2');

findTestSubject(
component,
Expand Down
29 changes: 8 additions & 21 deletions src/components/datagrid/controls/column_selector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -119,28 +119,10 @@ export const useDataGridColumnSelector = (
'Drag handle'
);

let buttonText = (
const buttonText = (
<EuiI18n token="euiColumnSelector.button" default="Columns" />
);

if (numberOfHiddenFields === 1) {
buttonText = (
<EuiI18n
token="euiColumnSelector.buttonActiveSingular"
default="{numberOfHiddenFields} column hidden"
values={{ numberOfHiddenFields }}
/>
);
} else if (numberOfHiddenFields > 1) {
buttonText = (
<EuiI18n
token="euiColumnSelector.buttonActivePlural"
default="{numberOfHiddenFields} columns hidden"
values={{ numberOfHiddenFields }}
/>
);
}

const orderedVisibleColumns = useMemo(
() =>
visibleColumns
Expand All @@ -165,8 +147,13 @@ export const useDataGridColumnSelector = (
hasDragDrop
button={
<EuiDataGridToolbarControl
badgeCount={orderedVisibleColumns.length}
isActive={numberOfHiddenFields > 0}
badgeContent={
numberOfHiddenFields > 0
? `${orderedVisibleColumns.length}/${
numberOfHiddenFields + orderedVisibleColumns.length
}`
: orderedVisibleColumns.length
}
iconType="tableDensityNormal"
data-test-subj="dataGridColumnSelectorButton"
onClick={() => setIsOpen(!isOpen)}
Expand Down
3 changes: 1 addition & 2 deletions src/components/datagrid/controls/column_sorting.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,7 @@ export const useDataGridColumnSorting = (
hasDragDrop
button={
<EuiDataGridToolbarControl
badgeCount={sorting.columns.length}
isActive={sorting.columns.length > 0}
badgeContent={sorting.columns.length}
iconType="sortable"
data-test-subj="dataGridColumnSortingButton"
onClick={() => setIsOpen(!isOpen)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ describe('euiDataGridToolbarControl', () => {

const { container } = render(
<EuiDataGridToolbarControl
badgeCount={5}
badgeContent={5}
size="xs"
iconType="sortable"
color="text"
Expand All @@ -35,7 +35,7 @@ describe('euiDataGridToolbarControl', () => {

const { container } = render(
<EuiDataGridToolbarControl
badgeCount={undefined}
badgeContent={undefined}
size="xs"
iconType="sortable"
color="text"
Expand Down
12 changes: 4 additions & 8 deletions src/components/datagrid/controls/data_grid_toolbar_control.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,17 @@ import { EuiDataGridToolbarControlProps } from '../data_grid_types';

export const EuiDataGridToolbarControl = ({
children,
badgeCount,
isActive,
badgeContent,
...buttonProps
}: EuiDataGridToolbarControlProps) => {
const badgeAriaLabel = useEuiI18n(
'euiDataGridToolbarControl.badgeAriaLabel',
'Current count: {count}',
{ count: badgeCount }
{ count: badgeContent }
);

const controlBtnClasses = classNames(
'euiDataGrid__controlBtn',
{
'euiDataGrid__controlBtn--active': isActive,
},
buttonProps.className
);

Expand All @@ -48,14 +44,14 @@ export const EuiDataGridToolbarControl = ({
gutterSize="s"
>
<EuiFlexItem grow={false}>{children}</EuiFlexItem>
{typeof badgeCount === 'number' && badgeCount > 0 && (
{Boolean(badgeContent) && (
<EuiFlexItem grow={false}>
<EuiNotificationBadge
color="subdued"
aria-label={badgeAriaLabel}
role="marquee" // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/marquee_role
>
{badgeCount}
{badgeContent}
</EuiNotificationBadge>
</EuiFlexItem>
)}
Expand Down
3 changes: 1 addition & 2 deletions src/components/datagrid/data_grid_types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ export interface EuiDataGridCustomToolbarProps {
}

export type EuiDataGridToolbarControlProps = EuiButtonEmptyProps & {
badgeCount?: number;
isActive?: boolean;
badgeContent?: number | string;
};

export interface EuiDataGridPaginationRendererProps
Expand Down

0 comments on commit 8eb7277

Please sign in to comment.