- {}}>
- New button
-
- {}}>
- Another button
-
- >
- ),
- append: (
+ // Use of a fragment for multiple items will insure proper margins
+ additionalControls: {
+ left: {
+ prepend: (
+ <>
+ {}}>
+ New button
+
+ {}}>
+ Another button
+
+ >
+ ),
+ append: (
+ <>
+ {}}>
+ New button
+
+ {}}>
+ Another button
+
+ >
+ ),
+ },
+ right: (
<>
- {}}>
- New button
-
- {}}>
- Another button
-
+
+ {}}
+ />
+
+
+ {}}
+ />
+
>
),
},
- right: (
- <>
-
- {}}
- />
-
-
- {}}
- />
-
- >
- )
- }
-}}
+ // Additional controls can also be passed to the display settings popover
+ showDisplaySelector: {
+ additionalDisplaySettings: Custom settings content
,
+ },
+ }}
/>
`;
@@ -246,8 +250,7 @@ export const DataGridToolbarExample = {
renderCustomToolbar={({ displayControl }) => Custom toolbar content {displayControl}
}
toolbarVisibility={{
showDisplaySelector: {
- allowResetButton: false,
- additionalDisplaySettings: Custom settings content
+ customRender: ({ densityControl }) => Custom display selector {densityControl}
}
}}
/>`,
diff --git a/packages/eui/src-docs/src/views/datagrid/toolbar/render_custom_toolbar.tsx b/packages/eui/src-docs/src/views/datagrid/toolbar/render_custom_toolbar.tsx
index 1f3944e4a0b..b104a00ed58 100644
--- a/packages/eui/src-docs/src/views/datagrid/toolbar/render_custom_toolbar.tsx
+++ b/packages/eui/src-docs/src/views/datagrid/toolbar/render_custom_toolbar.tsx
@@ -1,4 +1,4 @@
-import React, { useCallback, useState } from 'react';
+import React, { useCallback, useMemo, useState } from 'react';
import { css } from '@emotion/react';
import { faker } from '@faker-js/faker';
@@ -8,12 +8,18 @@ import {
EuiDataGridColumnSortingConfig,
EuiDataGridToolbarProps,
EuiDataGridToolbarControl,
+ EuiDataGridStyle,
+ EuiDataGridStyleBorders,
+ EuiDataGridDisplaySelectorCustomRender,
+ EuiSpacer,
+ EuiHorizontalRule,
EuiFormRow,
- EuiRange,
+ EuiButtonGroup,
EuiFlexGroup,
EuiFlexItem,
euiScreenReaderOnly,
RenderCellValue,
+ EuiSwitch,
} from '../../../../../src';
const raw_data: Array<{ [key: string]: string }> = [];
@@ -57,6 +63,7 @@ const renderCustomToolbar: EuiDataGridToolbarProps['renderCustomToolbar'] = ({
justifyContent="spaceBetween"
alignItems="center"
css={mobileStyles}
+ className="euiDataGrid__controls"
>
{hasRoomForGridControls && (
@@ -86,29 +93,6 @@ const renderCustomToolbar: EuiDataGridToolbarProps['renderCustomToolbar'] = ({
const renderCellValue: RenderCellValue = ({ rowIndex, columnId }) =>
raw_data[rowIndex][columnId];
-// Some additional custom settings to show in the Display popover
-const AdditionalDisplaySettings = () => {
- const [exampleSettingValue, setExampleSettingValue] = useState(10);
-
- return (
-
- {
- setExampleSettingValue(Number(event.currentTarget.value));
- }}
- />
-
- );
-};
-
export default () => {
// Column visibility
const [visibleColumns, setVisibleColumns] = useState(() =>
@@ -123,6 +107,51 @@ export default () => {
setSortingColumns(sortingColumns);
}, []);
+ // Custom display settings
+ const [borders, setGridBorders] = useState('none');
+ const [rowStripes, setRowStripes] = useState(false);
+ const gridStyle: EuiDataGridStyle = useMemo(
+ () => ({
+ border: borders,
+ header: borders === 'none' ? 'underline' : 'shade',
+ stripes: rowStripes,
+ }),
+ [borders, rowStripes]
+ );
+ const customDisplayControls: EuiDataGridDisplaySelectorCustomRender =
+ useCallback(
+ ({ densityControl, rowHeightControl }) => {
+ return (
+ <>
+
+ setRowStripes(!rowStripes)}
+ />
+
+ {densityControl}
+
+ setGridBorders(id as EuiDataGridStyleBorders)}
+ />
+
+ {rowHeightControl}
+ >
+ );
+ },
+ [borders, rowStripes]
+ );
+
return (
{
sorting={{ columns: sortingColumns, onSort }}
rowCount={raw_data.length}
renderCellValue={renderCellValue}
- gridStyle={{ border: 'none', header: 'underline' }}
+ gridStyle={gridStyle}
renderCustomToolbar={renderCustomToolbar}
toolbarVisibility={{
showDisplaySelector: {
allowResetButton: false,
- additionalDisplaySettings: ,
+ customRender: customDisplayControls,
},
}}
/>