From 83bb0c32c525e7f47d469b7fbb3ad438b18c8885 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Fri, 16 Jul 2021 16:13:05 +0300
Subject: [PATCH 01/57] Add auto height possibility to row
---
.../src/views/datagrid/row_height_options.js | 4 +-
src/components/datagrid/data_grid.tsx | 11 +-
src/components/datagrid/data_grid_body.tsx | 27 +++-
src/components/datagrid/data_grid_cell.tsx | 15 +-
src/components/datagrid/data_grid_types.ts | 1 +
src/components/datagrid/row_height_utils.ts | 141 +++++++++++++-----
6 files changed, 149 insertions(+), 50 deletions(-)
diff --git a/src-docs/src/views/datagrid/row_height_options.js b/src-docs/src/views/datagrid/row_height_options.js
index f69ab70515a..1438a096f09 100644
--- a/src-docs/src/views/datagrid/row_height_options.js
+++ b/src-docs/src/views/datagrid/row_height_options.js
@@ -74,9 +74,7 @@ export default () => {
const rowHeightsOptions = useMemo(
() => ({
- defaultHeight: {
- lineCount: 2,
- },
+ defaultHeight: 'auto',
rowHeights: {
1: {
lineCount: 5,
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index 4fbc397e3ae..f5034b95fcd 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -70,6 +70,8 @@ import {
import { useDataGridColumnSorting } from './column_sorting';
import { RowHeightUtils } from './row_height_utils';
+const rowHeightUtils = new RowHeightUtils();
+
// Used to short-circuit some async browser behaviour that is difficult to account for in tests
const IS_JEST_ENVIRONMENT = global.hasOwnProperty('_isJest');
@@ -886,11 +888,12 @@ export const EuiDataGrid: FunctionComponent = (props) => {
}
}, [focusedCell, contentRef]);
- const [rowHeightUtils] = useState(new RowHeightUtils());
-
useEffect(() => {
- rowHeightUtils.computeStylesForGridCell(gridStyles);
- }, [gridStyles, rowHeightUtils]);
+ rowHeightUtils.computeStylesForGridCell({
+ cellPadding: gridStyles.cellPadding,
+ fontSize: gridStyles.fontSize,
+ });
+ }, [gridStyles.cellPadding, gridStyles.fontSize, rowHeightUtils]);
const classes = classNames(
'euiDataGrid',
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index 259ff36a563..7a04d18f784 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -56,7 +56,7 @@ import {
DataGridWrapperRowsContext,
} from './data_grid_context';
import { useResizeObserver } from '../observer/resize_observer';
-import { RowHeightUtils } from './row_height_utils';
+import { RowHeightUtils, AUTO_HEIGHT } from './row_height_utils';
export interface EuiDataGridBodyProps {
isFullScreen: boolean;
@@ -143,6 +143,7 @@ const Cell: FunctionComponent = ({
schemaDetectors,
rowHeightsOptions,
getRowHeight,
+ rowHeightUtils,
} = data;
const { headerRowHeight } = useContext(DataGridWrapperRowsContext);
@@ -209,6 +210,7 @@ const Cell: FunctionComponent = ({
setRowHeight={setRowHeight}
getRowHeight={getRowHeight}
rowHeightsOptions={rowHeightsOptions}
+ rowHeightUtils={rowHeightUtils}
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
@@ -235,6 +237,7 @@ const Cell: FunctionComponent = ({
className={classes}
rowHeightsOptions={rowHeightsOptions}
getRowHeight={getRowHeight}
+ rowHeightUtils={rowHeightUtils}
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
@@ -271,6 +274,7 @@ const Cell: FunctionComponent = ({
className={classes}
rowHeightsOptions={rowHeightsOptions}
getRowHeight={getRowHeight}
+ rowHeightUtils={rowHeightUtils}
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
@@ -506,7 +510,7 @@ export const EuiDataGridBody: FunctionComponent = (
(rowIndex: number) => {
let rowIndexWithOffset = rowIndex;
- if (rowIndex - paginationOffset <= 0) {
+ if (rowIndex - paginationOffset < 0) {
rowIndexWithOffset = rowIndex + paginationOffset;
}
@@ -554,6 +558,13 @@ export const EuiDataGridBody: FunctionComponent = (
);
const [minRowHeight, setRowHeight] = useState(INITIAL_ROW_HEIGHT);
+
+ useEffect(() => {
+ if (gridRef.current) {
+ rowHeightUtils.setGrid(gridRef.current);
+ }
+ }, [gridRef.current]);
+
const defaultHeight = useMemo(
() =>
rowHeightsOptions?.defaultHeight
@@ -568,7 +579,7 @@ export const EuiDataGridBody: FunctionComponent = (
const getRowHeight = useCallback(
(rowIndex) => {
const correctRowIndex = getCorrectRowIndex(rowIndex);
- let height = defaultHeight;
+ let height;
if (rowHeightsOptions) {
if (rowHeightsOptions.rowHeights) {
@@ -577,13 +588,18 @@ export const EuiDataGridBody: FunctionComponent = (
if (initialHeight) {
height = rowHeightUtils.getCalculatedHeight(
initialHeight,
- minRowHeight
+ minRowHeight,
+ correctRowIndex
);
}
}
+
+ if (!height && rowHeightsOptions.defaultHeight === AUTO_HEIGHT) {
+ return rowHeightUtils.getRowHeight(correctRowIndex);
+ }
}
- return height;
+ return height || defaultHeight;
},
[
minRowHeight,
@@ -711,6 +727,7 @@ export const EuiDataGridBody: FunctionComponent = (
renderCellValue,
interactiveCellId,
rowHeightsOptions,
+ rowHeightUtils,
}}
rowCount={
IS_JEST_ENVIRONMENT || headerRowHeight > 0
diff --git a/src/components/datagrid/data_grid_cell.tsx b/src/components/datagrid/data_grid_cell.tsx
index 3d63e0644a4..56984157172 100644
--- a/src/components/datagrid/data_grid_cell.tsx
+++ b/src/components/datagrid/data_grid_cell.tsx
@@ -34,7 +34,7 @@ import { EuiFocusTrap } from '../focus_trap';
import { keys } from '../../services';
import { EuiDataGridCellButtons } from './data_grid_cell_buttons';
import { EuiDataGridCellPopover } from './data_grid_cell_popover';
-import { getStylesForCell } from './row_height_utils';
+import { RowHeightUtils } from './row_height_utils';
export interface EuiDataGridCellValueElementProps {
/**
@@ -85,6 +85,7 @@ export interface EuiDataGridCellProps {
getRowHeight?: (rowIndex: number) => number;
style?: React.CSSProperties;
rowHeightsOptions?: EuiDataGridRowHeightsOptions;
+ rowHeightUtils?: RowHeightUtils;
}
interface EuiDataGridCellState {
@@ -115,6 +116,7 @@ const EuiDataGridCellContent: FunctionComponent<
rowHeightsOptions,
rowIndex,
colIndex,
+ rowHeightUtils,
...rest
} = props;
@@ -143,7 +145,9 @@ const EuiDataGridCellContent: FunctionComponent<
{
@@ -481,6 +491,7 @@ export class EuiDataGridCell extends Component<
isDetails: false,
setCellContentsRef: this.setCellContentsRef,
rowHeightsOptions: this.props.rowHeightsOptions,
+ rowHeightUtils: this.props.rowHeightUtils,
};
let anchorContent = (
diff --git a/src/components/datagrid/data_grid_types.ts b/src/components/datagrid/data_grid_types.ts
index e539712bef9..15a6948a57f 100644
--- a/src/components/datagrid/data_grid_types.ts
+++ b/src/components/datagrid/data_grid_types.ts
@@ -321,6 +321,7 @@ export type EuiDataGridOnColumnResizeHandler = (
export type EuiDataGridRowHeightOption =
| number
+ | string
| ExclusiveUnion<{ lineCount: number }, { height: number }>;
export interface EuiDataGridRowHeightsOptions {
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 7ed002386c9..ee98d8d64cd 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -7,6 +7,7 @@
*/
import { CSSProperties } from 'react';
+import type { VariableSizeGrid as Grid } from 'react-window';
import { isObject, isNumber } from '../../services/predicate';
import {
EuiDataGridStyleCellPaddings,
@@ -32,15 +33,69 @@ function getNumberFromPx(style?: string) {
return style ? parseInt(style.replace('px', ''), 10) : 0;
}
+export const AUTO_HEIGHT = 'auto';
+
// So that we use lineCount options we should know exactly row height which allow to show defined line count.
// For this we should know paddings and line height. Because of this we should compute styles for cell with grid styles
export class RowHeightUtils {
private styles: {
- paddingTop?: string;
- paddingBottom?: string;
- lineHeight?: string;
- } = {};
+ paddingTop: number;
+ paddingBottom: number;
+ lineHeight: number;
+ } = {
+ paddingTop: 0,
+ paddingBottom: 0,
+ lineHeight: 1,
+ };
private fakeCell = document.createElement('div');
+ private heightsCache = new Map();
+ private timerId: any;
+ private grid?: Grid;
+
+ setRowHeight(rowIndex: number, height: number) {
+ clearTimeout(this.timerId);
+ const cachedHeight = this.heightsCache.get(rowIndex) || 0;
+ const adaptedHeight =
+ height + this.styles.paddingTop + this.styles.paddingBottom;
+ if (cachedHeight < adaptedHeight) {
+ this.heightsCache.set(rowIndex, adaptedHeight);
+ }
+ this.timerId = setTimeout(() => this.resetGrid(), 100);
+ }
+
+ getRowHeight(rowIndex: number) {
+ return this.heightsCache.get(rowIndex) || 0;
+ }
+
+ resetGrid() {
+ this.grid?.resetAfterRowIndex(0);
+ }
+
+ setGrid(grid: Grid) {
+ this.grid = grid;
+ }
+
+ clearHeightsCache() {
+ this.heightsCache.clear();
+ }
+
+ isAutoHeight(
+ rowIndex: number,
+ rowHeightsOptions: EuiDataGridRowHeightsOptions
+ ) {
+ if (
+ rowHeightsOptions.rowHeights &&
+ rowHeightsOptions.rowHeights[rowIndex]
+ ) {
+ return rowHeightsOptions.rowHeights[rowIndex] === AUTO_HEIGHT;
+ }
+
+ if (rowHeightsOptions.defaultHeight) {
+ return rowHeightsOptions.defaultHeight === AUTO_HEIGHT;
+ }
+
+ return false;
+ }
computeStylesForGridCell(gridStyles: EuiDataGridStyle) {
this.fakeCell.className = `
@@ -51,23 +106,27 @@ export class RowHeightUtils {
document.body.appendChild(this.fakeCell);
const allStyles = getComputedStyle(this.fakeCell);
this.styles = {
- paddingTop: allStyles.paddingTop,
- paddingBottom: allStyles.paddingBottom,
- lineHeight: allStyles.lineHeight,
+ paddingTop: getNumberFromPx(allStyles.paddingTop),
+ paddingBottom: getNumberFromPx(allStyles.paddingBottom),
+ lineHeight: getNumberFromPx(allStyles.lineHeight),
};
document.body.removeChild(this.fakeCell);
+ // we need clear height cache so that recalculate heigths for new styles.
+ this.clearHeightsCache();
}
calculateHeightForLineCount(lineCount: number) {
- const paddingTop = getNumberFromPx(this.styles.paddingTop);
- const paddingBottom = getNumberFromPx(this.styles.paddingBottom);
- const lineHeight = getNumberFromPx(this.styles.lineHeight);
- return Math.ceil(lineCount * lineHeight + paddingTop + paddingBottom);
+ return Math.ceil(
+ lineCount * this.styles.lineHeight +
+ this.styles.paddingTop +
+ this.styles.paddingBottom
+ );
}
getCalculatedHeight(
heightOption: EuiDataGridRowHeightOption,
- defaultHeight: number
+ defaultHeight: number,
+ rowIndex?: number
) {
if (isObject(heightOption)) {
if (heightOption.lineCount) {
@@ -83,37 +142,47 @@ export class RowHeightUtils {
return Math.max(heightOption, defaultHeight);
}
+ if (heightOption && heightOption === AUTO_HEIGHT && rowIndex) {
+ return this.getRowHeight(rowIndex);
+ }
+
return defaultHeight;
}
-}
-export const getStylesForCell = (
- rowHeightsOptions: EuiDataGridRowHeightsOptions,
- rowIndex: number
-): CSSProperties => {
- let initialHeight =
- rowHeightsOptions.rowHeights && rowHeightsOptions.rowHeights[rowIndex];
+ getStylesForCell = (
+ rowHeightsOptions: EuiDataGridRowHeightsOptions,
+ rowIndex: number
+ ): CSSProperties => {
+ const styles: CSSProperties = {
+ wordBreak: 'break-all',
+ flexGrow: 1,
+ };
+ let initialHeight =
+ rowHeightsOptions.rowHeights && rowHeightsOptions.rowHeights[rowIndex];
- if (!initialHeight) {
- initialHeight = rowHeightsOptions.defaultHeight;
- }
+ if (this.isAutoHeight(rowIndex, rowHeightsOptions)) {
+ return styles;
+ }
+
+ if (!initialHeight) {
+ initialHeight = rowHeightsOptions.defaultHeight;
+ }
+
+ if (isObject(initialHeight) && initialHeight.lineCount) {
+ return {
+ WebkitLineClamp: initialHeight.lineCount,
+ display: '-webkit-box',
+ WebkitBoxOrient: 'vertical',
+ height: '100%',
+ overflow: 'hidden',
+ ...styles,
+ };
+ }
- if (isObject(initialHeight) && initialHeight.lineCount) {
return {
- WebkitLineClamp: initialHeight.lineCount,
- display: '-webkit-box',
- WebkitBoxOrient: 'vertical',
height: '100%',
overflow: 'hidden',
- flexGrow: 1,
- wordBreak: 'break-all',
+ ...styles,
};
- }
-
- return {
- height: '100%',
- overflow: 'hidden',
- flexGrow: 1,
- wordBreak: 'break-all',
};
-};
+}
From 39bfc86a6898051dfab36d9314230b2e5a39239e Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Fri, 16 Jul 2021 17:18:12 +0300
Subject: [PATCH 02/57] Fix eslint
---
src/components/datagrid/data_grid.tsx | 2 +-
src/components/datagrid/data_grid_body.tsx | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index f5034b95fcd..d7c15ae97e3 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -893,7 +893,7 @@ export const EuiDataGrid: FunctionComponent = (props) => {
cellPadding: gridStyles.cellPadding,
fontSize: gridStyles.fontSize,
});
- }, [gridStyles.cellPadding, gridStyles.fontSize, rowHeightUtils]);
+ }, [gridStyles.cellPadding, gridStyles.fontSize]);
const classes = classNames(
'euiDataGrid',
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index 7a04d18f784..f97a1744934 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -563,7 +563,7 @@ export const EuiDataGridBody: FunctionComponent = (
if (gridRef.current) {
rowHeightUtils.setGrid(gridRef.current);
}
- }, [gridRef.current]);
+ }, [gridRef.current, rowHeightUtils]);
const defaultHeight = useMemo(
() =>
From 40c2cf036718955d0282d8257831ad969376c23d Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Mon, 19 Jul 2021 17:59:45 +0300
Subject: [PATCH 03/57] Fix some problems with hiding column
---
src/components/datagrid/data_grid.tsx | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index d7c15ae97e3..80ef23f5006 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -865,6 +865,10 @@ export const EuiDataGrid: FunctionComponent = (props) => {
orderedVisibleColumns
);
+ useEffect(() => {
+ rowHeightUtils.clearHeightsCache();
+ }, [orderedVisibleColumns]);
+
const [contentRef, setContentRef] = useState(null);
useEffect(() => {
From e76129d1585563490b60dcb54627c0c507a98f44 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Mon, 19 Jul 2021 18:29:13 +0300
Subject: [PATCH 04/57] Fix example
---
.../datagrid_height_options_example.js | 101 ++++++++++----
.../src/views/datagrid/row_auto_height.js | 125 ++++++++++++++++++
src/components/datagrid/data_grid.tsx | 4 +-
3 files changed, 203 insertions(+), 27 deletions(-)
create mode 100644 src-docs/src/views/datagrid/row_auto_height.js
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index a6b288a87f9..861d95138a3 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -7,11 +7,15 @@ import {
EuiCode,
EuiCodeBlock,
EuiSpacer,
+ EuiText,
} from '../../../../src/components';
import DataGridRowHeightOptions from './row_height_options';
const dataGridRowHeightOptionsSource = require('!!raw-loader!./row_height_options');
const dataGridRowHeightOptionsHtml = renderToHtml(DataGridRowHeightOptions);
+import DataGridRowAutoHeight from './row_auto_height';
+const dataGridRowAutoHeightSource = require('!!raw-loader!./row_auto_height');
+const dataGridRowAutoHeightHtml = renderToHtml(DataGridRowAutoHeight);
const rowHeightsSnippet = `
{
@@ -28,8 +32,50 @@ const rowHeightsSnippet = `
}
`;
+const autoRowHeightsSnippet = `
+ {
+ defaultHeight: 'auto', // each row auto fit to content except rows which was defined in 'rowHeights'
+ rowHeights: {
+ 1: {
+ lineCount: 5, // for row which have index 1 we allow to show 5 lines after that we truncate
+ },
+ 4: 140, // for row which have index 4 we set 140 pixel
+ },
+ }
+`;
+
export const DataGridRowHeightOptionsExample = {
title: 'Data grid row height options',
+ intro: (
+
+
+
+ Row height options can be passed down to the grid through the{' '}
+ rowHeightsOptions prop. It accepts an object
+ configuring the default height and/or specific row heights:
+
+
+
+ defaultHeight - defines the default size for all
+ rows
+
+
+ rowHeights - overrides the height for a specific
+ row
+
+
+
+
+
+
+ Rows must be at least 34 pixels tall so they can
+ render at least one line of text. If you provide a smaller height the
+ row will default to 34 pixels.
+
+
+
+
+ ),
sections: [
{
source: [
@@ -42,33 +88,9 @@ export const DataGridRowHeightOptionsExample = {
code: dataGridRowHeightOptionsHtml,
},
],
+ title: 'Fixed heights for rows',
text: (
-
- Row height options can be passed down to the grid through the{' '}
- rowHeightsOptions prop. It accepts an object
- configuring the default height and/or specific row heights:
-
-
-
- defaultHeight - defines the default size for
- all rows
-
-
- rowHeights - overrides the height for a
- specific row
-
-
-
-
- Rows must be at least 34 pixels tall so they can
- render at least one line of text. If you provide a smaller height
- the row will default to 34 pixels.
-
-
-
{rowHeightsSnippet}
@@ -77,5 +99,34 @@ export const DataGridRowHeightOptionsExample = {
components: { DataGridRowHeightOptions },
demo: ,
},
+ {
+ source: [
+ {
+ type: GuideSectionTypes.JS,
+ code: dataGridRowAutoHeightSource,
+ },
+ {
+ type: GuideSectionTypes.HTML,
+ code: dataGridRowAutoHeightHtml,
+ },
+ ],
+ title: 'Auto-fit row to content',
+ text: (
+
+
+ Row height options also supports to set value so that rows auto fit
+ to content. Just provide auto as value for{' '}
+ defaultHeight or for one of the rows in{' '}
+ rowHeights
+
+
+
+ {autoRowHeightsSnippet}
+
+
+ ),
+ components: { DataGridRowAutoHeight },
+ demo: ,
+ },
],
};
diff --git a/src-docs/src/views/datagrid/row_auto_height.js b/src-docs/src/views/datagrid/row_auto_height.js
new file mode 100644
index 00000000000..13a23e9655d
--- /dev/null
+++ b/src-docs/src/views/datagrid/row_auto_height.js
@@ -0,0 +1,125 @@
+import React, {
+ useCallback,
+ useState,
+ createContext,
+ useContext,
+ useMemo,
+ useEffect,
+} from 'react';
+import { fake } from 'faker';
+
+import { EuiDataGrid, EuiText } from '../../../../src/components/';
+
+const DataContext = createContext();
+
+const columns = [
+ {
+ id: 'name',
+ displayAsText: 'Name',
+ defaultSortDirection: 'asc',
+ },
+ {
+ id: 'text',
+ },
+];
+
+// it is expensive to compute 10000 rows of fake data
+// instead of loading up front, generate entries on the fly
+const raw_data = [];
+
+function RenderCellValue({ rowIndex, columnId }) {
+ const { data, adjustMountedCellCount } = useContext(DataContext);
+
+ useEffect(() => {
+ adjustMountedCellCount(1);
+ return () => adjustMountedCellCount(-1);
+ }, [adjustMountedCellCount]);
+
+ if (data[rowIndex] == null) {
+ data[rowIndex] = {
+ name: fake('{{lorem.text}}'),
+ text: fake('{{lorem.text}}'),
+ };
+ }
+
+ return data[rowIndex][columnId];
+}
+
+export default () => {
+ // ** Pagination config
+ const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 });
+
+ const onChangeItemsPerPage = useCallback(
+ (pageSize) =>
+ setPagination((pagination) => ({
+ ...pagination,
+ pageSize,
+ pageIndex: 0,
+ })),
+ [setPagination]
+ );
+
+ const onChangePage = useCallback(
+ (pageIndex) =>
+ setPagination((pagination) => ({ ...pagination, pageIndex })),
+ [setPagination]
+ );
+
+ // Column visibility
+ const [visibleColumns, setVisibleColumns] = useState(() =>
+ columns.map(({ id }) => id)
+ ); // initialize to the full set of columns
+
+ const [mountedCellCount, setMountedCellCount] = useState(0);
+
+ const rowHeightsOptions = useMemo(
+ () => ({
+ defaultHeight: 'auto',
+ rowHeights: {
+ 1: {
+ lineCount: 5,
+ },
+ 4: 140,
+ },
+ }),
+ []
+ );
+
+ const dataContext = useMemo(
+ () => ({
+ data: raw_data,
+ adjustMountedCellCount: (adjustment) =>
+ setMountedCellCount(
+ (mountedCellCount) => mountedCellCount + adjustment
+ ),
+ }),
+ []
+ );
+
+ const grid = (
+
+ );
+
+ return (
+
+
+ There are {mountedCellCount} rendered cells
+
+ {grid}
+
+ );
+};
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index 80ef23f5006..cbe217a3d71 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -70,8 +70,6 @@ import {
import { useDataGridColumnSorting } from './column_sorting';
import { RowHeightUtils } from './row_height_utils';
-const rowHeightUtils = new RowHeightUtils();
-
// Used to short-circuit some async browser behaviour that is difficult to account for in tests
const IS_JEST_ENVIRONMENT = global.hasOwnProperty('_isJest');
@@ -865,6 +863,8 @@ export const EuiDataGrid: FunctionComponent = (props) => {
orderedVisibleColumns
);
+ const [rowHeightUtils] = useState(new RowHeightUtils());
+
useEffect(() => {
rowHeightUtils.clearHeightsCache();
}, [orderedVisibleColumns]);
From c2de61144be1eacc88f06dde3d63a39c4c74c631 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Mon, 19 Jul 2021 18:30:06 +0300
Subject: [PATCH 05/57] Fix example
---
src-docs/src/views/datagrid/row_height_options.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src-docs/src/views/datagrid/row_height_options.js b/src-docs/src/views/datagrid/row_height_options.js
index 1438a096f09..f69ab70515a 100644
--- a/src-docs/src/views/datagrid/row_height_options.js
+++ b/src-docs/src/views/datagrid/row_height_options.js
@@ -74,7 +74,9 @@ export default () => {
const rowHeightsOptions = useMemo(
() => ({
- defaultHeight: 'auto',
+ defaultHeight: {
+ lineCount: 2,
+ },
rowHeights: {
1: {
lineCount: 5,
From 428860f459c5c48dbb474cd530c628ab0754612d Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Thu, 22 Jul 2021 18:11:24 +0300
Subject: [PATCH 06/57] fix calculation height so that work for images and fix
problems with font
---
.../src/views/datagrid/row_auto_height.js | 63 +++++++++++++++++--
src/components/datagrid/data_grid.tsx | 2 +-
src/components/datagrid/data_grid_cell.tsx | 49 +++++++++++++--
src/components/datagrid/row_height_utils.ts | 15 ++++-
4 files changed, 116 insertions(+), 13 deletions(-)
diff --git a/src-docs/src/views/datagrid/row_auto_height.js b/src-docs/src/views/datagrid/row_auto_height.js
index 13a23e9655d..b47ce95924f 100644
--- a/src-docs/src/views/datagrid/row_auto_height.js
+++ b/src-docs/src/views/datagrid/row_auto_height.js
@@ -8,7 +8,13 @@ import React, {
} from 'react';
import { fake } from 'faker';
-import { EuiDataGrid, EuiText } from '../../../../src/components/';
+import {
+ EuiDataGrid,
+ EuiText,
+ EuiImage,
+ EuiButtonGroup,
+ EuiSpacer,
+} from '../../../../src/components/';
const DataContext = createContext();
@@ -27,8 +33,10 @@ const columns = [
// instead of loading up front, generate entries on the fly
const raw_data = [];
-function RenderCellValue({ rowIndex, columnId }) {
- const { data, adjustMountedCellCount } = useContext(DataContext);
+function RenderCellValue({ rowIndex, columnId, onCellLoaded }) {
+ const { data, adjustMountedCellCount, contentTypeSelected } = useContext(
+ DataContext
+ );
useEffect(() => {
adjustMountedCellCount(1);
@@ -42,12 +50,35 @@ function RenderCellValue({ rowIndex, columnId }) {
};
}
- return data[rowIndex][columnId];
+ const firstNumberSize = rowIndex < 7 && rowIndex > 0 ? rowIndex : 5;
+
+ return contentTypeSelected === 'images' ? (
+
+ ) : (
+ data[rowIndex][columnId]
+ );
}
+const contentTypeOptions = [
+ {
+ id: 'text',
+ label: 'Text',
+ },
+ {
+ id: 'images',
+ label: 'Images',
+ },
+];
+
export default () => {
// ** Pagination config
const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 });
+ const [contentTypeSelected, setContentTypeSelected] = useState('text');
const onChangeItemsPerPage = useCallback(
(pageSize) =>
@@ -59,6 +90,11 @@ export default () => {
[setPagination]
);
+ const onContentTypeChange = useCallback(
+ (optionId) => setContentTypeSelected(optionId),
+ [setContentTypeSelected]
+ );
+
const onChangePage = useCallback(
(pageIndex) =>
setPagination((pagination) => ({ ...pagination, pageIndex })),
@@ -82,18 +118,19 @@ export default () => {
4: 140,
},
}),
- []
+ [contentTypeSelected]
);
const dataContext = useMemo(
() => ({
data: raw_data,
+ contentTypeSelected,
adjustMountedCellCount: (adjustment) =>
setMountedCellCount(
(mountedCellCount) => mountedCellCount + adjustment
),
}),
- []
+ [contentTypeSelected]
);
const grid = (
@@ -119,6 +156,20 @@ export default () => {
There are {mountedCellCount} rendered cells
+
+
+ Type of content
+
+
+
+
{grid}
);
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index cbe217a3d71..7aa054aa4ac 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -867,7 +867,7 @@ export const EuiDataGrid: FunctionComponent = (props) => {
useEffect(() => {
rowHeightUtils.clearHeightsCache();
- }, [orderedVisibleColumns]);
+ }, [orderedVisibleColumns, rowHeightsOptions]);
const [contentRef, setContentRef] = useState(null);
diff --git a/src/components/datagrid/data_grid_cell.tsx b/src/components/datagrid/data_grid_cell.tsx
index a442f8003a8..33b1d16db27 100644
--- a/src/components/datagrid/data_grid_cell.tsx
+++ b/src/components/datagrid/data_grid_cell.tsx
@@ -252,11 +252,30 @@ export class EuiDataGridCell extends Component<
[this.props.colIndex, this.props.visibleRowIndex],
this.onFocusUpdate
);
- if (this.cellContentsRef?.offsetHeight) {
+
+ if (this.cellContentsRef?.offsetHeight && this.props.rowHeightsOptions) {
this.props.rowHeightUtils?.setRowHeight(
this.props.rowIndex,
this.cellContentsRef?.offsetHeight
);
+
+ const font = this.props.rowHeightUtils?.getFont();
+
+ if (this.cellContentsRef.innerText && font) {
+ // we should download needed fonts so that we can get a right height of text
+ if (
+ !(document as any).fonts.check(font, this.cellContentsRef.innerText)
+ ) {
+ (document as any).fonts
+ .load(font, this.cellContentsRef.innerText)
+ .then(() => {
+ this.props.rowHeightUtils?.setRowHeight(
+ this.props.rowIndex,
+ this.cellContentsRef?.offsetHeight
+ );
+ });
+ }
+ }
}
}
@@ -311,12 +330,22 @@ export class EuiDataGridCell extends Component<
return true;
// check if we should update cell because height was changed
- if (this.cellRef.current && nextProps.getRowHeight) {
+ if (
+ this.cellRef.current &&
+ nextProps.getRowHeight &&
+ nextProps.rowHeightUtils
+ ) {
if (
- this.cellRef.current.offsetHeight &&
- this.cellRef.current.offsetHeight !==
+ !nextProps.rowHeightUtils?.compareHeights(
+ this.cellRef.current.offsetHeight,
nextProps.getRowHeight(nextProps.rowIndex)
+ )
) {
+ // we cann't use it in componentDidUpdate because we should set new height only in this case
+ nextProps.rowHeightUtils?.setRowHeight(
+ nextProps.rowIndex,
+ this.cellContentsRef?.offsetHeight
+ );
return true;
}
}
@@ -324,6 +353,17 @@ export class EuiDataGridCell extends Component<
return false;
}
+ // needed so that we calculate right height for cell if content is image
+ // because we can get right height only after image will loaded
+ onCellLoaded = () => {
+ if (this.props.rowHeightUtils) {
+ this.props.rowHeightUtils?.setRowHeight(
+ this.props.rowIndex,
+ this.cellContentsRef?.offsetHeight
+ );
+ }
+ };
+
setCellProps = (cellProps: HTMLAttributes) => {
this.setState({ cellProps });
};
@@ -492,6 +532,7 @@ export class EuiDataGridCell extends Component<
setCellContentsRef: this.setCellContentsRef,
rowHeightsOptions: this.props.rowHeightsOptions,
rowHeightUtils: this.props.rowHeightUtils,
+ onCellLoaded: this.onCellLoaded,
};
const anchorClass = classNames('euiDataGridRowCell__expandFlex', {
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 2dc6d61544f..11607570685 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -42,17 +42,23 @@ export class RowHeightUtils {
paddingTop: number;
paddingBottom: number;
lineHeight: number;
+ font: string;
} = {
paddingTop: 0,
paddingBottom: 0,
lineHeight: 1,
+ font: '',
};
private fakeCell = document.createElement('div');
private heightsCache = new Map();
private timerId: any;
private grid?: Grid;
- setRowHeight(rowIndex: number, height: number) {
+ getFont() {
+ return this.styles.font;
+ }
+
+ setRowHeight(rowIndex: number, height: number = 32) {
clearTimeout(this.timerId);
const cachedHeight = this.heightsCache.get(rowIndex) || 0;
const adaptedHeight =
@@ -60,13 +66,17 @@ export class RowHeightUtils {
if (cachedHeight < adaptedHeight) {
this.heightsCache.set(rowIndex, adaptedHeight);
}
- this.timerId = setTimeout(() => this.resetGrid(), 100);
+ this.timerId = setTimeout(() => this.resetGrid(), 0);
}
getRowHeight(rowIndex: number) {
return this.heightsCache.get(rowIndex) || 0;
}
+ compareHeights(currentRowHeight: number, cachedRowHeight: number) {
+ return currentRowHeight === cachedRowHeight;
+ }
+
resetGrid() {
this.grid?.resetAfterRowIndex(0);
}
@@ -109,6 +119,7 @@ export class RowHeightUtils {
paddingTop: getNumberFromPx(allStyles.paddingTop),
paddingBottom: getNumberFromPx(allStyles.paddingBottom),
lineHeight: getNumberFromPx(allStyles.lineHeight),
+ font: allStyles.font,
};
document.body.removeChild(this.fakeCell);
// we need clear height cache so that recalculate heigths for new styles.
From 05c52a85af80265fd3e57a4a790f38dbb1913769 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Fri, 23 Jul 2021 14:53:11 +0300
Subject: [PATCH 07/57] Fix tests
---
src/components/datagrid/data_grid.test.tsx | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/components/datagrid/data_grid.test.tsx b/src/components/datagrid/data_grid.test.tsx
index 3aa781434cb..a1ad4a423d1 100644
--- a/src/components/datagrid/data_grid.test.tsx
+++ b/src/components/datagrid/data_grid.test.tsx
@@ -24,6 +24,18 @@ jest.mock('./row_height_utils', () => {
RowHeightUtils: jest.fn().mockImplementation(() => {
return {
computeStylesForGridCell: () => {},
+ clearHeightsCache: () => {},
+ setGrid: () => {},
+ getStylesForCell: () => ({
+ wordWrap: 'break-word',
+ wordBreak: 'break-word',
+ flexGrow: 1,
+ }),
+ setRowHeight: () => {},
+ getRowHeight: () => 32,
+ getFont: () => null,
+ compareHeights: (currentRowHeight: number, cachedRowHeight: number) =>
+ currentRowHeight === cachedRowHeight,
getCalculatedHeight: (
heightOption: EuiDataGridRowHeightOption,
defaultHeight: number
@@ -46,7 +58,6 @@ jest.mock('./row_height_utils', () => {
},
};
}),
- getStylesForCell: () => ({}),
};
});
From eca4c2bb5cdec74bab3d45fc3ae7d57ec87246da Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Fri, 23 Jul 2021 15:38:31 +0300
Subject: [PATCH 08/57] fix eslint
---
src-docs/src/views/datagrid/row_auto_height.js | 2 +-
src/components/datagrid/data_grid.tsx | 4 ++--
src/components/datagrid/data_grid_body.tsx | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src-docs/src/views/datagrid/row_auto_height.js b/src-docs/src/views/datagrid/row_auto_height.js
index b47ce95924f..a2c815c86c5 100644
--- a/src-docs/src/views/datagrid/row_auto_height.js
+++ b/src-docs/src/views/datagrid/row_auto_height.js
@@ -115,7 +115,7 @@ export default () => {
1: {
lineCount: 5,
},
- 4: 140,
+ 4: contentTypeSelected === 'images' ? 240 : 140,
},
}),
[contentTypeSelected]
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index 7aa054aa4ac..ebedabf0689 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -867,7 +867,7 @@ export const EuiDataGrid: FunctionComponent = (props) => {
useEffect(() => {
rowHeightUtils.clearHeightsCache();
- }, [orderedVisibleColumns, rowHeightsOptions]);
+ }, [orderedVisibleColumns, rowHeightsOptions, rowHeightUtils]);
const [contentRef, setContentRef] = useState(null);
@@ -897,7 +897,7 @@ export const EuiDataGrid: FunctionComponent = (props) => {
cellPadding: gridStyles.cellPadding,
fontSize: gridStyles.fontSize,
});
- }, [gridStyles.cellPadding, gridStyles.fontSize]);
+ }, [gridStyles.cellPadding, gridStyles.fontSize, rowHeightUtils]);
const classes = classNames(
'euiDataGrid',
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index f97a1744934..f1ce27236b0 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -563,7 +563,7 @@ export const EuiDataGridBody: FunctionComponent = (
if (gridRef.current) {
rowHeightUtils.setGrid(gridRef.current);
}
- }, [gridRef.current, rowHeightUtils]);
+ }, [gridRef, rowHeightUtils]);
const defaultHeight = useMemo(
() =>
From 82f698a9b9c3d56f6938e3031ab4ab66396e6021 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Tue, 27 Jul 2021 00:56:36 +0300
Subject: [PATCH 09/57] fix some problems
---
src/components/datagrid/data_grid_body.tsx | 2 +-
src/components/datagrid/data_grid_cell.tsx | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index f1ce27236b0..e34ec3b8942 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -563,7 +563,7 @@ export const EuiDataGridBody: FunctionComponent = (
if (gridRef.current) {
rowHeightUtils.setGrid(gridRef.current);
}
- }, [gridRef, rowHeightUtils]);
+ });
const defaultHeight = useMemo(
() =>
diff --git a/src/components/datagrid/data_grid_cell.tsx b/src/components/datagrid/data_grid_cell.tsx
index 33b1d16db27..2dab8fe0cd1 100644
--- a/src/components/datagrid/data_grid_cell.tsx
+++ b/src/components/datagrid/data_grid_cell.tsx
@@ -261,13 +261,13 @@ export class EuiDataGridCell extends Component<
const font = this.props.rowHeightUtils?.getFont();
- if (this.cellContentsRef.innerText && font) {
+ if (this.cellContentsRef.textContent && font) {
// we should download needed fonts so that we can get a right height of text
if (
- !(document as any).fonts.check(font, this.cellContentsRef.innerText)
+ !(document as any).fonts.check(font, this.cellContentsRef.textContent)
) {
(document as any).fonts
- .load(font, this.cellContentsRef.innerText)
+ .load(font, this.cellContentsRef.textContent)
.then(() => {
this.props.rowHeightUtils?.setRowHeight(
this.props.rowIndex,
From 253f16a46bb3828d52c82f108615210aef5b1940 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Tue, 27 Jul 2021 16:52:17 +0300
Subject: [PATCH 10/57] use resizeObserver instead of handling height in
didMount method
---
.../src/views/datagrid/row_auto_height.js | 3 +-
src/components/datagrid/data_grid_cell.tsx | 75 ++++++++-----------
2 files changed, 34 insertions(+), 44 deletions(-)
diff --git a/src-docs/src/views/datagrid/row_auto_height.js b/src-docs/src/views/datagrid/row_auto_height.js
index a2c815c86c5..ffbe265dc2b 100644
--- a/src-docs/src/views/datagrid/row_auto_height.js
+++ b/src-docs/src/views/datagrid/row_auto_height.js
@@ -33,7 +33,7 @@ const columns = [
// instead of loading up front, generate entries on the fly
const raw_data = [];
-function RenderCellValue({ rowIndex, columnId, onCellLoaded }) {
+function RenderCellValue({ rowIndex, columnId }) {
const { data, adjustMountedCellCount, contentTypeSelected } = useContext(
DataContext
);
@@ -57,7 +57,6 @@ function RenderCellValue({ rowIndex, columnId, onCellLoaded }) {
size={'original'}
alt="Fake img"
url={`https://source.unsplash.com/${firstNumberSize}00x${firstNumberSize}00/?starwars`}
- onLoad={onCellLoaded}
/>
) : (
data[rowIndex][columnId]
diff --git a/src/components/datagrid/data_grid_cell.tsx b/src/components/datagrid/data_grid_cell.tsx
index 2dab8fe0cd1..bc8cb2ff74d 100644
--- a/src/components/datagrid/data_grid_cell.tsx
+++ b/src/components/datagrid/data_grid_cell.tsx
@@ -252,31 +252,6 @@ export class EuiDataGridCell extends Component<
[this.props.colIndex, this.props.visibleRowIndex],
this.onFocusUpdate
);
-
- if (this.cellContentsRef?.offsetHeight && this.props.rowHeightsOptions) {
- this.props.rowHeightUtils?.setRowHeight(
- this.props.rowIndex,
- this.cellContentsRef?.offsetHeight
- );
-
- const font = this.props.rowHeightUtils?.getFont();
-
- if (this.cellContentsRef.textContent && font) {
- // we should download needed fonts so that we can get a right height of text
- if (
- !(document as any).fonts.check(font, this.cellContentsRef.textContent)
- ) {
- (document as any).fonts
- .load(font, this.cellContentsRef.textContent)
- .then(() => {
- this.props.rowHeightUtils?.setRowHeight(
- this.props.rowIndex,
- this.cellContentsRef?.offsetHeight
- );
- });
- }
- }
- }
}
onFocusUpdate = (isFocused: boolean) => {
@@ -294,6 +269,23 @@ export class EuiDataGridCell extends Component<
}
}
+ componentDidUpdate() {
+ if (
+ this.cellRef.current &&
+ this.props.getRowHeight &&
+ this.props.rowHeightUtils &&
+ !this.props.rowHeightUtils?.compareHeights(
+ this.cellRef.current.offsetHeight,
+ this.props.getRowHeight(this.props.rowIndex)
+ )
+ ) {
+ this.props.rowHeightUtils?.setRowHeight(
+ this.props.rowIndex,
+ this.cellContentsRef?.offsetHeight
+ );
+ }
+ }
+
shouldComponentUpdate(
nextProps: EuiDataGridCellProps,
nextState: EuiDataGridCellState
@@ -341,11 +333,6 @@ export class EuiDataGridCell extends Component<
nextProps.getRowHeight(nextProps.rowIndex)
)
) {
- // we cann't use it in componentDidUpdate because we should set new height only in this case
- nextProps.rowHeightUtils?.setRowHeight(
- nextProps.rowIndex,
- this.cellContentsRef?.offsetHeight
- );
return true;
}
}
@@ -353,23 +340,28 @@ export class EuiDataGridCell extends Component<
return false;
}
- // needed so that we calculate right height for cell if content is image
- // because we can get right height only after image will loaded
- onCellLoaded = () => {
- if (this.props.rowHeightUtils) {
- this.props.rowHeightUtils?.setRowHeight(
- this.props.rowIndex,
- this.cellContentsRef?.offsetHeight
- );
- }
- };
-
setCellProps = (cellProps: HTMLAttributes) => {
this.setState({ cellProps });
};
setCellContentsRef = (ref: HTMLDivElement | null) => {
this.cellContentsRef = ref;
+ if (this.props.rowHeightUtils) {
+ if (ref && hasResizeObserver) {
+ this.observer = new (window as any).ResizeObserver(() => {
+ const rowHeight = this.cellContentsRef?.getBoundingClientRect()
+ .height;
+
+ this.props.rowHeightUtils?.setRowHeight(
+ this.props.rowIndex,
+ rowHeight
+ );
+ });
+ this.observer.observe(ref);
+ } else if (this.observer) {
+ this.observer.disconnect();
+ }
+ }
this.preventTabbing();
};
@@ -532,7 +524,6 @@ export class EuiDataGridCell extends Component<
setCellContentsRef: this.setCellContentsRef,
rowHeightsOptions: this.props.rowHeightsOptions,
rowHeightUtils: this.props.rowHeightUtils,
- onCellLoaded: this.onCellLoaded,
};
const anchorClass = classNames('euiDataGridRowCell__expandFlex', {
From 9fe02702497a96d0bd5f8364f34dbbd931442e7d Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Wed, 28 Jul 2021 18:21:45 +0300
Subject: [PATCH 11/57] Fix some remarks
---
src/components/datagrid/data_grid.tsx | 2 +-
src/components/datagrid/data_grid_cell.tsx | 38 ++++++++++++----------
2 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index ebedabf0689..b1fdf16e204 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -863,7 +863,7 @@ export const EuiDataGrid: FunctionComponent = (props) => {
orderedVisibleColumns
);
- const [rowHeightUtils] = useState(new RowHeightUtils());
+ const rowHeightUtils = useMemo(() => new RowHeightUtils(), []);
useEffect(() => {
rowHeightUtils.clearHeightsCache();
diff --git a/src/components/datagrid/data_grid_cell.tsx b/src/components/datagrid/data_grid_cell.tsx
index bc8cb2ff74d..35ac2d4c13f 100644
--- a/src/components/datagrid/data_grid_cell.tsx
+++ b/src/components/datagrid/data_grid_cell.tsx
@@ -170,12 +170,27 @@ const hasResizeObserver =
typeof window !== 'undefined' &&
typeof (window as any).ResizeObserver !== 'undefined';
+function observeHeight(
+ component: HTMLDivElement | null,
+ setRowHeight?: (rowHeight: number) => void
+) {
+ const observer = new (window as any).ResizeObserver(() => {
+ const rowHeight = component!.getBoundingClientRect().height;
+ if (setRowHeight) {
+ setRowHeight(rowHeight);
+ }
+ });
+ observer.observe(component);
+ return observer;
+}
+
export class EuiDataGridCell extends Component<
EuiDataGridCellProps,
EuiDataGridCellState
> {
cellRef = createRef() as MutableRefObject;
- observer!: any; // ResizeObserver
+ observer!: any; // Cell ResizeObserver
+ contentObserver!: any; // Cell Content ResizeObserver
popoverPanelRef: MutableRefObject = createRef();
cellContentsRef: HTMLDivElement | null = null;
state: EuiDataGridCellState = {
@@ -196,14 +211,7 @@ export class EuiDataGridCell extends Component<
// watch the first cell for size changes and use that to re-compute row heights
if (this.props.colIndex === 0 && this.props.visibleRowIndex === 0) {
if (ref && hasResizeObserver) {
- this.observer = new (window as any).ResizeObserver(() => {
- const rowHeight = this.cellRef.current!.getBoundingClientRect()
- .height;
- if (this.props.setRowHeight) {
- this.props.setRowHeight(rowHeight);
- }
- });
- this.observer.observe(ref);
+ this.observer = observeHeight(ref, this.props.setRowHeight);
} else if (this.observer) {
this.observer.disconnect();
}
@@ -348,18 +356,14 @@ export class EuiDataGridCell extends Component<
this.cellContentsRef = ref;
if (this.props.rowHeightUtils) {
if (ref && hasResizeObserver) {
- this.observer = new (window as any).ResizeObserver(() => {
- const rowHeight = this.cellContentsRef?.getBoundingClientRect()
- .height;
-
+ const setRowHeight = (rowHeight: number) =>
this.props.rowHeightUtils?.setRowHeight(
this.props.rowIndex,
rowHeight
);
- });
- this.observer.observe(ref);
- } else if (this.observer) {
- this.observer.disconnect();
+ this.contentObserver = observeHeight(ref, setRowHeight);
+ } else if (this.contentObserver) {
+ this.contentObserver.disconnect();
}
}
this.preventTabbing();
From 266408064d8c824b5ee9b466f52e7fd072617797 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Fri, 30 Jul 2021 16:40:54 +0300
Subject: [PATCH 12/57] fix some problems with shrinking
---
src/components/datagrid/data_grid_body.tsx | 7 ++++--
src/components/datagrid/data_grid_cell.tsx | 2 ++
src/components/datagrid/row_height_utils.ts | 27 ++++++++++++---------
3 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index e34ec3b8942..22b186d09df 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -625,8 +625,11 @@ export const EuiDataGridBody: FunctionComponent = (
const rowCountToAffordFor = pagination
? pagination.pageSize
: visibleRowIndices.length;
- const unconstrainedHeight =
- defaultHeight * rowCountToAffordFor + headerRowHeight + footerRowHeight;
+ const unconstrainedHeight = useMemo(
+ () =>
+ defaultHeight * rowCountToAffordFor + headerRowHeight + footerRowHeight,
+ [defaultHeight, rowCountToAffordFor, headerRowHeight, footerRowHeight]
+ );
// unable to determine this until the container's size is known anyway
const unconstrainedWidth = 0;
diff --git a/src/components/datagrid/data_grid_cell.tsx b/src/components/datagrid/data_grid_cell.tsx
index 1863dddd8e0..181f38ea4cc 100644
--- a/src/components/datagrid/data_grid_cell.tsx
+++ b/src/components/datagrid/data_grid_cell.tsx
@@ -300,6 +300,7 @@ export class EuiDataGridCell extends Component<
) {
this.props.rowHeightUtils?.setRowHeight(
this.props.rowIndex,
+ this.props.colIndex,
this.cellContentsRef?.offsetHeight
);
}
@@ -370,6 +371,7 @@ export class EuiDataGridCell extends Component<
const setRowHeight = (rowHeight: number) =>
this.props.rowHeightUtils?.setRowHeight(
this.props.rowIndex,
+ this.props.colIndex,
rowHeight
);
this.contentObserver = observeHeight(ref, setRowHeight);
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 11607570685..3d4b3175af3 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -50,27 +50,29 @@ export class RowHeightUtils {
font: '',
};
private fakeCell = document.createElement('div');
- private heightsCache = new Map();
+ private heightsCache = new Map>();
private timerId: any;
private grid?: Grid;
- getFont() {
- return this.styles.font;
- }
-
- setRowHeight(rowIndex: number, height: number = 32) {
+ setRowHeight(rowIndex: number, colIndex: number, height: number = 32) {
clearTimeout(this.timerId);
- const cachedHeight = this.heightsCache.get(rowIndex) || 0;
+ const rowHeights = this.heightsCache.get(rowIndex) || {};
const adaptedHeight =
height + this.styles.paddingTop + this.styles.paddingBottom;
- if (cachedHeight < adaptedHeight) {
- this.heightsCache.set(rowIndex, adaptedHeight);
- }
- this.timerId = setTimeout(() => this.resetGrid(), 0);
+ rowHeights[colIndex] = adaptedHeight;
+ this.heightsCache.set(rowIndex, rowHeights);
+ this.timerId = setTimeout(() => this.resetGrid(), 1);
}
getRowHeight(rowIndex: number) {
- return this.heightsCache.get(rowIndex) || 0;
+ const rowHeights = this.heightsCache.get(rowIndex) || {};
+ const rowHeightValues = Object.values(rowHeights);
+
+ if (rowHeightValues.length) {
+ return Math.max(...rowHeightValues);
+ }
+
+ return 0;
}
compareHeights(currentRowHeight: number, cachedRowHeight: number) {
@@ -78,6 +80,7 @@ export class RowHeightUtils {
}
resetGrid() {
+ console.log('resetGrid');
this.grid?.resetAfterRowIndex(0);
}
From 517ebcb95c06efd6d41cc096e81ce83980e62779 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Fri, 30 Jul 2021 18:49:55 +0300
Subject: [PATCH 13/57] Fix scrolling
---
src/components/datagrid/row_height_utils.ts | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 3d4b3175af3..b816733a11c 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -55,10 +55,15 @@ export class RowHeightUtils {
private grid?: Grid;
setRowHeight(rowIndex: number, colIndex: number, height: number = 32) {
- clearTimeout(this.timerId);
const rowHeights = this.heightsCache.get(rowIndex) || {};
const adaptedHeight =
height + this.styles.paddingTop + this.styles.paddingBottom;
+
+ if (rowHeights[colIndex] === adaptedHeight) {
+ return;
+ }
+
+ clearTimeout(this.timerId);
rowHeights[colIndex] = adaptedHeight;
this.heightsCache.set(rowIndex, rowHeights);
this.timerId = setTimeout(() => this.resetGrid(), 1);
From 752b354e1ccb5f143595be020df616a675e62acb Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Wed, 4 Aug 2021 12:34:17 +0300
Subject: [PATCH 14/57] Some performance improvements
---
src/components/datagrid/data_grid.test.tsx | 1 +
src/components/datagrid/data_grid_cell.tsx | 14 +++++++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/components/datagrid/data_grid.test.tsx b/src/components/datagrid/data_grid.test.tsx
index a1ad4a423d1..adcb9e2f2e0 100644
--- a/src/components/datagrid/data_grid.test.tsx
+++ b/src/components/datagrid/data_grid.test.tsx
@@ -31,6 +31,7 @@ jest.mock('./row_height_utils', () => {
wordBreak: 'break-word',
flexGrow: 1,
}),
+ isAutoHeight: () => false,
setRowHeight: () => {},
getRowHeight: () => 32,
getFont: () => null,
diff --git a/src/components/datagrid/data_grid_cell.tsx b/src/components/datagrid/data_grid_cell.tsx
index 181f38ea4cc..9154f5a1542 100644
--- a/src/components/datagrid/data_grid_cell.tsx
+++ b/src/components/datagrid/data_grid_cell.tsx
@@ -293,6 +293,11 @@ export class EuiDataGridCell extends Component<
this.cellRef.current &&
this.props.getRowHeight &&
this.props.rowHeightUtils &&
+ this.props.rowHeightsOptions &&
+ this.props.rowHeightUtils.isAutoHeight(
+ this.props.rowIndex,
+ this.props.rowHeightsOptions
+ ) &&
!this.props.rowHeightUtils?.compareHeights(
this.cellRef.current.offsetHeight,
this.props.getRowHeight(this.props.rowIndex)
@@ -366,7 +371,14 @@ export class EuiDataGridCell extends Component<
setCellContentsRef = (ref: HTMLDivElement | null) => {
this.cellContentsRef = ref;
- if (this.props.rowHeightUtils) {
+ if (
+ this.props.rowHeightUtils &&
+ this.props.rowHeightsOptions &&
+ this.props.rowHeightUtils.isAutoHeight(
+ this.props.rowIndex,
+ this.props.rowHeightsOptions
+ )
+ ) {
if (ref && hasResizeObserver) {
const setRowHeight = (rowHeight: number) =>
this.props.rowHeightUtils?.setRowHeight(
From ce4ffa4896b2fd43a7765e0047b619c24e201e06 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Thu, 5 Aug 2021 16:07:32 +0300
Subject: [PATCH 15/57] use callback ref for setting grid in rowHeigthsUtils
instead of useEffect
---
src/components/datagrid/data_grid_body.tsx | 28 +++++++++++++++-------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index 22b186d09df..2ba29894349 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -523,7 +523,8 @@ export const EuiDataGridBody: FunctionComponent = (
[paginationOffset, rowMap]
);
- const gridRef = useRef(null);
+ const gridRef = useRef(null);
+
useEffect(() => {
if (gridRef.current) {
gridRef.current.resetAfterColumnIndex(0);
@@ -557,13 +558,17 @@ export const EuiDataGridBody: FunctionComponent = (
]
);
- const [minRowHeight, setRowHeight] = useState(INITIAL_ROW_HEIGHT);
+ const setGridRef = useCallback(
+ (ref: Grid | null) => {
+ gridRef.current = ref;
+ if (ref) {
+ rowHeightUtils.setGrid(ref);
+ }
+ },
+ [rowHeightUtils]
+ );
- useEffect(() => {
- if (gridRef.current) {
- rowHeightUtils.setGrid(gridRef.current);
- }
- });
+ const [minRowHeight, setRowHeight] = useState(INITIAL_ROW_HEIGHT);
const defaultHeight = useMemo(
() =>
@@ -614,7 +619,12 @@ export const EuiDataGridBody: FunctionComponent = (
if (gridRef.current && rowHeightsOptions) {
gridRef.current.resetAfterRowIndex(0);
}
- }, [pagination?.pageIndex, rowHeightsOptions, gridStyles]);
+ }, [
+ pagination?.pageIndex,
+ rowHeightsOptions,
+ gridStyles?.cellPadding,
+ gridStyles?.fontSize,
+ ]);
useEffect(() => {
if (gridRef.current) {
@@ -699,7 +709,7 @@ export const EuiDataGridBody: FunctionComponent = (
Date: Mon, 9 Aug 2021 16:38:44 +0300
Subject: [PATCH 16/57] Add new properties
---
src/components/datagrid/data_grid.tsx | 12 ++++++++++++
src/components/datagrid/data_grid_body.tsx | 7 +++++++
src/components/datagrid/data_grid_types.ts | 6 +++++-
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index b1fdf16e204..ec041ca47f1 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -154,6 +154,14 @@ type CommonGridProps = CommonProps &
* Sets the grid's width, forcing it to overflow in a scrollable container with cell virtualization
*/
width?: CSSProperties['width'];
+ /**
+ * The number of rows to render outside of the visible area.
+ */
+ overscanRowCount?: number;
+ /**
+ * The number of columns to render outside of the visible area.
+ */
+ overscanColumnCount?: number;
/**
* A #EuiDataGridRowHeightsOptions object that provides row heights options
*/
@@ -690,6 +698,8 @@ export const EuiDataGrid: FunctionComponent = (props) => {
height,
width,
rowHeightsOptions,
+ overscanColumnCount,
+ overscanRowCount,
...rest
} = props;
@@ -1141,6 +1151,8 @@ export const EuiDataGrid: FunctionComponent = (props) => {
interactiveCellId={interactiveCellId}
rowHeightsOptions={rowHeightsOptions}
rowHeightUtils={rowHeightUtils}
+ overscanColumnCount={overscanColumnCount}
+ overscanRowCount={overscanRowCount}
gridStyles={gridStyles}
/>
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index 2ba29894349..cb0f8da9d8e 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -83,6 +83,8 @@ export interface EuiDataGridBodyProps {
toolbarHeight: number;
rowHeightsOptions?: EuiDataGridRowHeightsOptions;
rowHeightUtils: RowHeightUtils;
+ overscanColumnCount?: number;
+ overscanRowCount?: number;
gridStyles?: EuiDataGridStyle;
}
@@ -342,6 +344,8 @@ export const EuiDataGridBody: FunctionComponent = (
toolbarHeight,
rowHeightsOptions,
rowHeightUtils,
+ overscanRowCount,
+ overscanColumnCount,
gridStyles,
} = props;
@@ -719,6 +723,9 @@ export const EuiDataGridBody: FunctionComponent = (
}
width={finalWidth}
columnWidth={getWidth}
+ overscanRowCount={overscanRowCount || 1}
+ overscanColumnCount={overscanColumnCount || 1}
+ estimatedRowHeight={rowHeightsOptions?.estimatedRowHeight || defaultHeight}
height={finalHeight}
rowHeight={getRowHeight}
itemData={{
diff --git a/src/components/datagrid/data_grid_types.ts b/src/components/datagrid/data_grid_types.ts
index 15a6948a57f..fcde757e751 100644
--- a/src/components/datagrid/data_grid_types.ts
+++ b/src/components/datagrid/data_grid_types.ts
@@ -321,7 +321,7 @@ export type EuiDataGridOnColumnResizeHandler = (
export type EuiDataGridRowHeightOption =
| number
- | string
+ | 'auto'
| ExclusiveUnion<{ lineCount: number }, { height: number }>;
export interface EuiDataGridRowHeightsOptions {
@@ -333,4 +333,8 @@ export interface EuiDataGridRowHeightsOptions {
* Defines the height for a specific row. It can be line count or just height.
*/
rowHeights?: Record;
+ /**
+ * Average (or estimated) row height for unrendered rows.
+ */
+ estimatedRowHeight?: number;
}
From e949d6bd3a99e3a8ed51958854053d9c93304e62 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Mon, 9 Aug 2021 16:41:58 +0300
Subject: [PATCH 17/57] add changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e25d23f29d9..095043ed8ee 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
## [`master`](https://github.com/elastic/eui/tree/master)
- Added `isDisabled` prop to `EuiFormRow` that disables the child field element ([#4908](https://github.com/elastic/eui/pull/4908))
+- Added `auto` as value for `defaultHeight` in prop `rowHeightsOptions` in `EuiDataGrid` that allows to content auto-fit to row ([#4958](https://github.com/elastic/eui/pull/4958))
## [`37.0.0`](https://github.com/elastic/eui/tree/v37.0.0)
From ffa0926563c79748a9bcac6f88e3df1acd7aeef3 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Mon, 9 Aug 2021 17:00:26 +0300
Subject: [PATCH 18/57] Fix lint
---
src/components/datagrid/data_grid.tsx | 4 ++--
src/components/datagrid/data_grid_body.tsx | 4 +++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/components/datagrid/data_grid.tsx b/src/components/datagrid/data_grid.tsx
index ec041ca47f1..8ed97bc3a70 100644
--- a/src/components/datagrid/data_grid.tsx
+++ b/src/components/datagrid/data_grid.tsx
@@ -155,13 +155,13 @@ type CommonGridProps = CommonProps &
*/
width?: CSSProperties['width'];
/**
- * The number of rows to render outside of the visible area.
+ * The number of rows to render outside of the visible area.
*/
overscanRowCount?: number;
/**
* The number of columns to render outside of the visible area.
*/
- overscanColumnCount?: number;
+ overscanColumnCount?: number;
/**
* A #EuiDataGridRowHeightsOptions object that provides row heights options
*/
diff --git a/src/components/datagrid/data_grid_body.tsx b/src/components/datagrid/data_grid_body.tsx
index cb0f8da9d8e..ca737b1e945 100644
--- a/src/components/datagrid/data_grid_body.tsx
+++ b/src/components/datagrid/data_grid_body.tsx
@@ -725,7 +725,9 @@ export const EuiDataGridBody: FunctionComponent = (
columnWidth={getWidth}
overscanRowCount={overscanRowCount || 1}
overscanColumnCount={overscanColumnCount || 1}
- estimatedRowHeight={rowHeightsOptions?.estimatedRowHeight || defaultHeight}
+ estimatedRowHeight={
+ rowHeightsOptions?.estimatedRowHeight || defaultHeight
+ }
height={finalHeight}
rowHeight={getRowHeight}
itemData={{
From 4a7fddad57fe9d0ccbc4d8e0ff77aa212dd1fbaf Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Fri, 13 Aug 2021 12:34:12 -0600
Subject: [PATCH 19/57] convert autoheight example to TS
---
package.json | 1 +
...row_auto_height.js => row_auto_height.tsx} | 50 +++++++++++++------
yarn.lock | 5 ++
3 files changed, 40 insertions(+), 16 deletions(-)
rename src-docs/src/views/datagrid/{row_auto_height.js => row_auto_height.tsx} (77%)
diff --git a/package.json b/package.json
index fce80195a4f..b1f2dc630d4 100644
--- a/package.json
+++ b/package.json
@@ -107,6 +107,7 @@
"@svgr/plugin-svgo": "^4.0.3",
"@types/classnames": "^2.2.10",
"@types/enzyme": "^3.10.5",
+ "@types/faker": "^5.5.8",
"@types/jest": "^24.0.6",
"@types/node": "^10.17.5",
"@types/react": "^16.9.34",
diff --git a/src-docs/src/views/datagrid/row_auto_height.js b/src-docs/src/views/datagrid/row_auto_height.tsx
similarity index 77%
rename from src-docs/src/views/datagrid/row_auto_height.js
rename to src-docs/src/views/datagrid/row_auto_height.tsx
index ffbe265dc2b..8797eeb6313 100644
--- a/src-docs/src/views/datagrid/row_auto_height.js
+++ b/src-docs/src/views/datagrid/row_auto_height.tsx
@@ -10,13 +10,26 @@ import { fake } from 'faker';
import {
EuiDataGrid,
- EuiText,
- EuiImage,
- EuiButtonGroup,
- EuiSpacer,
-} from '../../../../src/components/';
+ EuiDataGridProps,
+} from '../../../../src/components/datagrid';
+import { EuiText } from '../../../../src/components/text';
+import { EuiImage } from '../../../../src/components/image';
+import { EuiButtonGroup } from '../../../../src/components/button';
+import { EuiSpacer } from '../../../../src/components/spacer';
+
+interface DataShape {
+ name: string;
+ text: string;
+}
-const DataContext = createContext();
+type DataContextShape =
+ | undefined
+ | {
+ data: DataShape[];
+ contentTypeSelected: 'text' | 'images';
+ adjustMountedCellCount: (adjustment: number) => void;
+ };
+const DataContext = createContext(undefined);
const columns = [
{
@@ -27,16 +40,19 @@ const columns = [
{
id: 'text',
},
-];
+] as EuiDataGridProps['columns'];
// it is expensive to compute 10000 rows of fake data
// instead of loading up front, generate entries on the fly
-const raw_data = [];
+const raw_data: DataShape[] = [];
-function RenderCellValue({ rowIndex, columnId }) {
+const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
+ rowIndex,
+ columnId,
+}) => {
const { data, adjustMountedCellCount, contentTypeSelected } = useContext(
DataContext
- );
+ )!;
useEffect(() => {
adjustMountedCellCount(1);
@@ -59,9 +75,9 @@ function RenderCellValue({ rowIndex, columnId }) {
url={`https://source.unsplash.com/${firstNumberSize}00x${firstNumberSize}00/?starwars`}
/>
) : (
- data[rowIndex][columnId]
+ data[rowIndex][columnId as 'text' | 'name']
);
-}
+};
const contentTypeOptions = [
{
@@ -77,7 +93,9 @@ const contentTypeOptions = [
export default () => {
// ** Pagination config
const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 });
- const [contentTypeSelected, setContentTypeSelected] = useState('text');
+ const [contentTypeSelected, setContentTypeSelected] = useState<
+ 'text' | 'images'
+ >('text');
const onChangeItemsPerPage = useCallback(
(pageSize) =>
@@ -109,7 +127,7 @@ export default () => {
const rowHeightsOptions = useMemo(
() => ({
- defaultHeight: 'auto',
+ defaultHeight: 'auto' as const,
rowHeights: {
1: {
lineCount: 5,
@@ -120,11 +138,11 @@ export default () => {
[contentTypeSelected]
);
- const dataContext = useMemo(
+ const dataContext = useMemo(
() => ({
data: raw_data,
contentTypeSelected,
- adjustMountedCellCount: (adjustment) =>
+ adjustMountedCellCount: (adjustment: number) =>
setMountedCellCount(
(mountedCellCount) => mountedCellCount + adjustment
),
diff --git a/yarn.lock b/yarn.lock
index 570c292e4a2..d6115b86315 100755
--- a/yarn.lock
+++ b/yarn.lock
@@ -1615,6 +1615,11 @@
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+"@types/faker@^5.5.8":
+ version "5.5.8"
+ resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.8.tgz#6649adfdfdbb0acf95361fc48f2d0ca6e88bd1cf"
+ integrity sha512-bsl0rYsaZVHlZkynL5O04q6YXDmVjcid6MbOHWqvtE2WWs/EKhp0qchDDhVWlWyQXUffX1G83X9LnMxRl8S/Mw==
+
"@types/glob@^7.1.1":
version "7.1.1"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
From 145754410220fdfa272037ee171d34bebc58a750 Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Wed, 18 Aug 2021 22:21:53 -0600
Subject: [PATCH 20/57] With data
---
.../src/views/datagrid/row_auto_height.tsx | 185 +-
.../views/datagrid/row_auto_height_data.json | 13054 ++++++++++++++++
2 files changed, 13166 insertions(+), 73 deletions(-)
create mode 100644 src-docs/src/views/datagrid/row_auto_height_data.json
diff --git a/src-docs/src/views/datagrid/row_auto_height.tsx b/src-docs/src/views/datagrid/row_auto_height.tsx
index 8797eeb6313..c6fde0d1cfc 100644
--- a/src-docs/src/views/datagrid/row_auto_height.tsx
+++ b/src-docs/src/views/datagrid/row_auto_height.tsx
@@ -5,97 +5,159 @@ import React, {
useContext,
useMemo,
useEffect,
+ ReactNode,
} from 'react';
-import { fake } from 'faker';
+// @ts-ignore not configured to import json
+import githubData from './row_auto_height_data.json';
import {
EuiDataGrid,
EuiDataGridProps,
} from '../../../../src/components/datagrid';
import { EuiText } from '../../../../src/components/text';
-import { EuiImage } from '../../../../src/components/image';
-import { EuiButtonGroup } from '../../../../src/components/button';
import { EuiSpacer } from '../../../../src/components/spacer';
+import { EuiLink } from '../../../../src/components/link';
+import { EuiIcon } from '../../../../src/components/icon';
+import { EuiToolTip } from '../../../../src/components/tool_tip';
+import { EuiAvatar } from '../../../../src/components/avatar';
+import { EuiBadge } from '../../../../src/components/badge';
+import { EuiMarkdownFormat } from '../../../../src/components/markdown_editor';
interface DataShape {
- name: string;
- text: string;
+ html_url: string;
+ title: string;
+ user: {
+ login: string;
+ avatar_url: string;
+ };
+ labels: Array<{
+ name: string;
+ color: string;
+ }>;
+ comments: number;
+ created_at: string;
+ body?: string;
+}
+
+// convert strings to Date objects
+for (let i = 0; i < githubData.length; i++) {
+ githubData[i].created_at = new Date(githubData[i].created_at);
}
type DataContextShape =
| undefined
| {
data: DataShape[];
- contentTypeSelected: 'text' | 'images';
adjustMountedCellCount: (adjustment: number) => void;
};
const DataContext = createContext(undefined);
const columns = [
{
- id: 'name',
- displayAsText: 'Name',
- defaultSortDirection: 'asc',
+ id: 'created',
+ displayAsText: 'Created',
+ schema: 'datetime',
+ isExpandable: false,
+ },
+ {
+ id: 'title',
+ displayAsText: 'Title',
+ isExpandable: false,
},
{
- id: 'text',
+ id: 'user',
+ displayAsText: 'User',
+ isExpandable: false,
},
-] as EuiDataGridProps['columns'];
+ {
+ id: 'body',
+ displayAsText: 'Description',
+ },
+ {
+ id: 'labels',
+ displayAsText: 'Labels',
+ isExpandable: false,
+ },
+];
// it is expensive to compute 10000 rows of fake data
// instead of loading up front, generate entries on the fly
-const raw_data: DataShape[] = [];
+const raw_data: DataShape[] = githubData;
const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
rowIndex,
columnId,
+ isDetails,
}) => {
- const { data, adjustMountedCellCount, contentTypeSelected } = useContext(
- DataContext
- )!;
+ const { data, adjustMountedCellCount } = useContext(DataContext)!;
useEffect(() => {
adjustMountedCellCount(1);
return () => adjustMountedCellCount(-1);
}, [adjustMountedCellCount]);
- if (data[rowIndex] == null) {
- data[rowIndex] = {
- name: fake('{{lorem.text}}'),
- text: fake('{{lorem.text}}'),
- };
+ const item = data[rowIndex];
+ let content: ReactNode = '';
+
+ if (columnId === 'title') {
+ content = (
+ <>
+ {item.comments >= 1 && (
+
+
+
+ )}
+
+ {item.title}
+
+ >
+ );
+ } else if (columnId === 'user') {
+ content = (
+ <>
+
+ {item.user.login}
+ >
+ );
+ } else if (columnId === 'labels') {
+ content = (
+ <>
+ {item.labels.map(({ name, color }) => (
+ {name}
+ ))}
+ >
+ );
+ } else if (columnId === 'created') {
+ content = item.created_at.toString();
+ } else if (columnId === 'body') {
+ if (isDetails) {
+ // expanded in a popover
+ content = {item.body ?? ''} ;
+ } else {
+ // a full issue description is a *lot* to shove into a cell
+ content = (item.body ?? '').slice(0, 300);
+ }
}
- const firstNumberSize = rowIndex < 7 && rowIndex > 0 ? rowIndex : 5;
-
- return contentTypeSelected === 'images' ? (
-
- ) : (
- data[rowIndex][columnId as 'text' | 'name']
- );
+ return content;
};
-const contentTypeOptions = [
- {
- id: 'text',
- label: 'Text',
- },
- {
- id: 'images',
- label: 'Images',
- },
-];
-
export default () => {
// ** Pagination config
const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 });
- const [contentTypeSelected, setContentTypeSelected] = useState<
- 'text' | 'images'
- >('text');
+
+ // ** Sorting config
+ const [sortingColumns, setSortingColumns] = useState([]);
+ const onSort = useCallback(
+ (sortingColumns) => {
+ setSortingColumns(sortingColumns);
+ },
+ [setSortingColumns]
+ );
const onChangeItemsPerPage = useCallback(
(pageSize) =>
@@ -107,11 +169,6 @@ export default () => {
[setPagination]
);
- const onContentTypeChange = useCallback(
- (optionId) => setContentTypeSelected(optionId),
- [setContentTypeSelected]
- );
-
const onChangePage = useCallback(
(pageIndex) =>
setPagination((pagination) => ({ ...pagination, pageIndex })),
@@ -128,26 +185,19 @@ export default () => {
const rowHeightsOptions = useMemo(
() => ({
defaultHeight: 'auto' as const,
- rowHeights: {
- 1: {
- lineCount: 5,
- },
- 4: contentTypeSelected === 'images' ? 240 : 140,
- },
}),
- [contentTypeSelected]
+ []
);
const dataContext = useMemo(
() => ({
data: raw_data,
- contentTypeSelected,
adjustMountedCellCount: (adjustment: number) =>
setMountedCellCount(
(mountedCellCount) => mountedCellCount + adjustment
),
}),
- [contentTypeSelected]
+ []
);
const grid = (
@@ -155,9 +205,11 @@ export default () => {
aria-label="Row height options with auto demo"
columns={columns}
columnVisibility={{ visibleColumns, setVisibleColumns }}
- rowCount={10000}
+ rowCount={raw_data.length}
height={400}
renderCellValue={RenderCellValue}
+ inMemory={{ level: 'sorting' }}
+ sorting={{ columns: sortingColumns, onSort }}
rowHeightsOptions={rowHeightsOptions}
pagination={{
...pagination,
@@ -174,19 +226,6 @@ export default () => {
There are {mountedCellCount} rendered cells
-
- Type of content
-
-
-
-
{grid}
);
diff --git a/src-docs/src/views/datagrid/row_auto_height_data.json b/src-docs/src/views/datagrid/row_auto_height_data.json
new file mode 100644
index 00000000000..c905eb01e22
--- /dev/null
+++ b/src-docs/src/views/datagrid/row_auto_height_data.json
@@ -0,0 +1,13054 @@
+[
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5049",
+ "title": "[Tech debt] Remove Prettier `jsxBracketSameLine` rule",
+ "user": {
+ "login": "constancecchen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549407?v=4",
+ "html_url": "https://github.com/constancecchen"
+ },
+ "labels": [
+ {
+ "id": 2767044132,
+ "node_id": "MDU6TGFiZWwyNzY3MDQ0MTMy",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-changelog",
+ "name": "skip-changelog",
+ "color": "FC0E3C",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-08-18T18:34:24Z",
+ "author_association": "MEMBER",
+ "body": "### Summary\r\n\r\nSee https://prettier.io/docs/en/options.html#jsx-brackets for documentation on the rule.\r\n\r\nWhy change it?\r\n\r\n- Consistency with Kibana (and baseline Prettier defaults, which means the majority of most codebases)\r\n- Per @snide's context, it's an old rule (3yr+) that likely came along with other projects at the time\r\n- (My 2c) It's visually easier to distinguish between a component's props and its child content with the `>` on a newline\r\n\r\n> ⚠️ This is a draft PR, per @snide's recommendation, to reduce merge conflicts/thrash with other in-flight PRs.\r\n> On Friday I'll un-draft it, pull latest master, re-run `yarn prettier --write \"{src,src-docs}/**/*.{tsx,js}`, and then (hopefully) merge.\r\n\r\n### Checklist\r\n\r\n- [x] Smoke test docs & ensure no console errors\r\n\r\nNo CHANGELOG was included, per the documentation wiki:\r\n\r\n> Avoid documenting internal implementation changes that don't affect the public interface"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5048",
+ "title": "[EuiPagination] Extract `PaginationButton` creation",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [],
+ "comments": 4,
+ "created_at": "2021-08-18T15:06:36Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nFixes #5046, in which EuiPagination failed to update state in EuiResizableContainer. The problem was not with EuiResizableContainer specifically, but could occur anytime a pagination change resulted in a parent rerender. Because the internal `PaginationButton` component was created _inside_ another component, it was recreated with old state on every rerender.\r\n\r\nThe solution here is to extract `PaginationButton` creation, eliminating rerender recreation.\r\n\r\nSee the to-be-reverted change in the [first EuiResizableContainer example](https://eui.elastic.co/pr_5048/#/layout/resizable-container#horizontal-resizing) for verification.\r\n\r\n### Checklist\r\n\r\n~- [ ] Check against **all themes** for compatibility in both light and dark modes~\r\n~- [ ] Checked in **mobile**~\r\n\r\n- [x] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n\r\n~- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~\r\n~- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~\r\n- [x] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n\r\n~- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**~\r\n\r\n- [x] Checked for **breaking changes** and labeled appropriately\r\n- [x] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n- [x] Reverted `revert me` docs commit\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5047",
+ "title": "[EuiDataGrid] Should not lose focus when scrolling ",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-08-18T14:04:07Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When you focus a cell in data grid than scroll it out of view and back an, the focus on that cell is lost.\r\n\r\n**Expected behavior:** focused cells should be focused still when scrolled back into view.\r\n\r\n![Peek 2021-08-18 16-02](https://user-images.githubusercontent.com/877229/129912436-bc942f19-b312-4643-9b6d-1708d39c14a7.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5046",
+ "title": "[EuiResizableContainer] EuiPagination doesn't work inside EuiResizableContainer",
+ "user": {
+ "login": "crux153",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10908841?v=4",
+ "html_url": "https://github.com/crux153"
+ },
+ "labels": [],
+ "comments": 1,
+ "created_at": "2021-08-18T09:21:13Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "![2021-08-18 18-15-02 2021-08-18 18_16_33](https://user-images.githubusercontent.com/10908841/129872730-b765c7ae-4b96-4256-a7a8-502ac0d5919a.gif)\r\n\r\n`EuiPagination` component doesn't work inside `EuiResizableContainer`.\r\n\r\n![2021-08-18 18-17-36 2021-08-18 18_18_07](https://user-images.githubusercontent.com/10908841/129872795-e5ded2ce-8b60-434f-a097-d31b51734dff.gif)\r\n\r\nThe arrow buttons work fine even inside `EuiResizableContainer`.\r\n\r\nCodeSandbox: [https://codesandbox.io/s/tender-swartz-7o5l2](https://codesandbox.io/s/tender-swartz-7o5l2)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5045",
+ "title": "[Tech debt] Update various linter ignore files",
+ "user": {
+ "login": "constancecchen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549407?v=4",
+ "html_url": "https://github.com/constancecchen"
+ },
+ "labels": [
+ {
+ "id": 2767044132,
+ "node_id": "MDU6TGFiZWwyNzY3MDQ0MTMy",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-changelog",
+ "name": "skip-changelog",
+ "color": "FC0E3C",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-17T23:41:21Z",
+ "author_association": "MEMBER",
+ "body": "### Summary\r\n\r\nThis PR updates various linter ignore files to more accurately reflect what our CI/precommit checks require.\r\n\r\nI recommend following along by commit for granular diffs/commit messages, but I'll additionally add code comments below with screenshots of the errors I was seeing.\r\n\r\n#### Extra context \r\n\r\nI opened this PR primarily from the perspective of VSCode, which does a lot more live-checking of issues than other IDEs do OOTB (I could be totally wrong about this, but in-IDE catches of Typescript issues it's definitely one of the reasons why I switched over from Sublime when I started working in Kibana).\r\n\r\nFor repro: the 3 VSCode extensions I have installed are [ESLint](https://github.com/Microsoft/vscode-eslint), [Prettier](https://github.com/prettier/prettier-vscode), and [stylelint](https://github.com/stylelint/vscode-stylelint).\r\n\r\n### Checklist\r\n\r\nN/A, dev-only change"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5044",
+ "title": "Convert remaining `.js` files in `src/` to `.ts`",
+ "user": {
+ "login": "constancecchen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549407?v=4",
+ "html_url": "https://github.com/constancecchen"
+ },
+ "labels": [],
+ "comments": 9,
+ "created_at": "2021-08-17T22:17:36Z",
+ "author_association": "MEMBER",
+ "body": "## Summary\r\n\r\ncloses #5034\r\n\r\n### What this PR does:\r\n\r\n- Converts `src/components/index.js` to `.ts` (9ce7d2b)\r\n- Converts `src/index.js` to `.ts` (98542a6)\r\n- Fixes the 2 typescript errors that arose from `yarn build`/`tsc --noEmit -p tsconfig-builttypes.json` (d8733a7)\r\n- Converts all index.ts exports from specific component exports to `*` wildcard exports (373e92c)\r\n\r\nI leaned hard on Greg's previous PR #4695 for this work - thanks for doing the heavy lifting @thompsongl!\r\n\r\n### What this PR does not do:\r\n\r\n- Address https://github.com/elastic/eui/blob/master/scripts/dtsgenerator.js#L95-L99\r\n\r\n## QA\r\n\r\n- [x] `yarn build` in EUI passed with no typescript errors\r\n- [x] `yarn kbn boostrap --no-validate` in Kibana passed with no errors when pointed at the built tgz\r\n- [x] `yarn start` in Kibana started with no errors, and styles/components loaded normally at a quick glance (including dark mode)\r\n- [x] `node scripts/type_check` passed in Kibana with no errors \r\n\r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n~- [ ] Checked in **mobile**~\r\n~- [ ] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**~\r\n~- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~\r\n~- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~\r\n~- [ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples~\r\n~- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**~\r\n~- [ ] Checked for **breaking changes** and labeled appropriately~\r\n~- [ ] Checked for **accessibility** including keyboard-only and screenreader modes~\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5043",
+ "title": "[Data Grid] Pluralization of sort button",
+ "user": {
+ "login": "babs20",
+ "avatar_url": "https://avatars.githubusercontent.com/u/63428137?v=4",
+ "html_url": "https://github.com/babs20"
+ },
+ "labels": [],
+ "comments": 5,
+ "created_at": "2021-08-17T19:16:44Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\nFixes #5037 \r\n\r\nUpdated the `EuiDataGrid` sort button text to include pluralization of the text when fields are sorted.\r\n\r\nBefore:\r\n \r\n \r\n\r\nAfter:\r\n \r\n \r\n \r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n- [x] Checked in **mobile**\r\n- [x] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n~- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~\r\n~- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~\r\n- [x] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [x] Checked for **breaking changes** and labeled appropriately\r\n- [x] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5042",
+ "title": "[WIP] Adding Cypress for e2e & browser-based testing",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [],
+ "comments": 2,
+ "created_at": "2021-08-17T19:15:18Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Why\r\n\r\nSome things are incredibly hard to write jest tests for, especially focus management or other low-level browser things. `.innerText` vs `.innerContent` is another good example, which we deal with in _inner_text.tsx_ and account for via interesting ways in that component's unit tests.\r\n\r\n### Questions/Explorations\r\n\r\n* [ ] Visual regression testing (do we want this?)\r\n* [ ] Establish/document when to use cypress vs jest\r\n* [ ] Do we want integration testing? (tests against any docs pages, instead of specifically against a component)\r\n* [x] ~Weren't you opening this as a discussion?~ Yes but then I opted for a PR so it includes the diff\r\n\r\n### Cypress links\r\n[Support landing page](https://www.cypress.io/support)\r\n[Overview, guides](https://docs.cypress.io/guides/overview/why-cypress)\r\n[API docs](https://docs.cypress.io/api/table-of-contents)\r\n[FAQ](https://docs.cypress.io/faq/questions/using-cypress-faq)\r\n\r\n### Use, how to run\r\n\r\n#### e2e/integration test\r\n`yarn cypress open` to launch the cypress app and run the focus_trap.js integration test. This needs a dev server running, right now the test points at port `:9999` and the easiest way to make that work is running `yarn start-test-server` before starting cypress\r\n\r\n#### component test\r\n`yarn cypress open-ct` launches a chrome window controlled by cypress, which lists out the discovered tests (only _focus_test.spec.js_ at the moment) and allows executing/interacting from that window.\r\n\r\n### Changes\r\n\r\n* adds cypress & related packages\r\n* includes a sample integration test (_cypress/integration/focus_trap.js_) against the focus trap's docs page\r\n* includes a sample component test (_src/components/focus_trap/focus_trap.spec.js_) which re-implements the [skipped jest](https://github.com/elastic/eui/blob/master/src/components/focus_trap/focus_trap.test.tsx#L112) test\r\n* new _cypress.json_ file added for basic configuration\r\n* _cypress/plugins/index.js_ modified to use our webpack config\r\n* _src/webpack.config.js_ modified to not exclude `externals`, which are only useful for the `dist` bundle/build anyway (a quick stop-gap to get this running)\r\n\r\n### Checklist\r\n\r\n- [ ] Check against **all themes** for compatibility in both light and dark modes\r\n- [ ] Checked in **mobile**\r\n- [ ] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**\r\n- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**\r\n- [ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [ ] Checked for **breaking changes** and labeled appropriately\r\n- [ ] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [ ] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5040",
+ "title": "[EuiSuperDatePicker] `data-test-subj` doesn't show up as an attribute in rendered DOM",
+ "user": {
+ "login": "ashokaditya",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1849116?v=4",
+ "html_url": "https://github.com/ashokaditya"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-08-17T15:43:35Z",
+ "author_association": "MEMBER",
+ "body": null
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5038",
+ "title": "[Data Grid] Columns list needs to be virtualized / allow for categorization",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-08-17T14:57:31Z",
+ "author_association": "MEMBER",
+ "body": "The columns list needs to be virtualized and allow for a top level category. Right now the Security product has 100s of fields, and relizes on a weird passdown solution where you select the fields in a model first, then pass them down to the data grid separate in the columns list.\r\n\r\nLikely adding categorization and virtualization to the columns list natively in EUI would negate the need for their extra (confusing) interface\r\n\r\n![image](https://user-images.githubusercontent.com/324519/129749263-5205fd89-413a-434a-af15-19a71a189793.png)\r\n\r\nExample of the separate selector they use to manage the fields.\r\n\r\n![image](https://user-images.githubusercontent.com/324519/129749721-671c4fd7-ce93-4666-8995-5781d9665403.png)\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5037",
+ "title": "[Data Grid] Pluralization of sort button",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-17T14:40:09Z",
+ "author_association": "MEMBER",
+ "body": "We likely need to pluralize this button.\r\n\r\n![image](https://user-images.githubusercontent.com/324519/129746623-c8421646-c14c-4d8e-be6d-2ded6230a2d0.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5034",
+ "title": "Finish `src` conversion to typescript",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735495843,
+ "node_id": "MDU6TGFiZWw3MzU0OTU4NDM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/chore",
+ "name": "chore",
+ "color": "d319bd",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-08-16T19:02:46Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This was previously blocked because it ran Kibana's build out of memory. Kibana has since increased its allocated memory and also restructured a lot of the build process, so we should be good to go:\r\n\r\nTask: convert _src/index.js_ to typescript; will need to account for the existing definitions in _src/index.d.ts_ as well.\r\n\r\nTesting:\r\n\r\n* `node ./scripts/compile-eui.js` (which is a part of `yarn build`) will create the build artifacts, including _eui.d.ts_ through [dtsgenerator](https://www.npmjs.com/package/dtsgenerator) + [customizations](https://github.com/elastic/eui/blob/master/scripts/dtsgenerator.js#L95-L99) (the follow-ups mentioned in the comment on line 95 are out of scope for this issue)\r\n* when the above successfully generates the intended `eui.d.ts` file, we'll need to test in Kibana\r\n * steps are documented in https://github.com/elastic/eui/blob/master/wiki/component-development.md#testing-the-component-with-kibana\r\n * after building with `yarn kbn boostrap --no-validate`, test the typescript changes with `node scripts/type_check`"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5031",
+ "title": "[Backport] 7.15",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [],
+ "comments": 0,
+ "created_at": "2021-08-16T14:06:10Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Commits to backport to `eui@37.1.2` and upgrade the Kibana 7.15 branch\r\n\r\n- [ ] #5021 (also requesting backport to 7.14.1)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5030",
+ "title": "DataGrid height doesn't update when `rowCount` does",
+ "user": {
+ "login": "machadoum",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1490444?v=4",
+ "html_url": "https://github.com/machadoum"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-08-16T08:36:26Z",
+ "author_association": "MEMBER",
+ "body": "I am having issues with DataGrid and vertical scroll. Ideally, I would like my grid never to scroll vertically. Instead, it should expand to the full height based on its content. And I am not using data grid pagination.\r\n\r\nWhen I change `rowCount` dynamically, the height doesn't get re-calculated.\r\n\r\n![Screenshot 2021-08-13 at 18 14 49](https://user-images.githubusercontent.com/1490444/129533636-df808319-fa8b-427b-b989-0619d0318627.png)\r\n\r\nI was able to isolate the issue on [codesandbox](https://codesandbox.io/s/datagrid-header-b8ejc?file=/index.js:1936-1944)\r\n\r\n\r\nThere is a second bug related to calculated height present in this sandbox that might be related. The computed height is too small when the grid has a horizontal scroll. \r\n![Screenshot 2021-08-16 at 10 28 26](https://user-images.githubusercontent.com/1490444/129534641-6f9e4b5f-c528-4176-95bf-efcf370b6700.png)\r\n\r\n\r\n\r\n "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5026",
+ "title": "[EuiDataGrid] Need to handle better \"no data\" scenarios",
+ "user": {
+ "login": "miukimiu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2750668?v=4",
+ "html_url": "https://github.com/miukimiu"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-13T14:09:24Z",
+ "author_association": "MEMBER",
+ "body": " \r\n\r\nAs we can see from the screenshot (https://codesandbox.io/s/datagrid-header-forked-svk7y?file=/index.js:2560-2571) when no data is available the **EuiDataGrid** only show the header cells, toolbar and pagination.\r\n\r\nThis behavior can look like a bug. Users don't know why is the header cells showing, why is the pagination clickable but they can't see any data.\r\n\r\nSo, we should fix the design to better handle \"no data\" scenarios. \r\n\r\n### Design improvement \r\n\r\n- We should provide a default empty state (just a text?) and probably a way to customize the text. If there's pagination and **no data**, the pagination should get disabled.\r\n- Do we need an `isLoading` state?\r\n\r\n### Bug to fix\r\n\r\nAs we can see from the [CodeSandbox](https://codesandbox.io/s/datagrid-header-forked-svk7y?file=/index.js:2560-2571) example 4, when we pass a custom `className` to **EuiDataGrid** the **Full screen** button gets the class. It shouldn't.\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5025",
+ "title": "Add ability to append any element on a EuiSideNav",
+ "user": {
+ "login": "cauemarcondes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/55978943?v=4",
+ "html_url": "https://github.com/cauemarcondes"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1399999948,
+ "node_id": "MDU6TGFiZWwxMzk5OTk5OTQ4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/prop%20request",
+ "name": "prop request",
+ "color": "3d4d9e",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-12T20:16:07Z",
+ "author_association": "NONE",
+ "body": "On APM we needed to add a new badge beside the label on the observability nav. More details here: https://github.com/elastic/kibana/issues/107718\r\n\r\n \r\n\r\nCurrently, there's no way to automatically add such a badge on `EuiSideNav`. I would like to have a new property called `append` where it would be rendered beside the label, and it should also automatically truncate the label if it is bigger than the container.\r\n\r\nI did a workaround to have it for `7.15` here https://github.com/elastic/kibana/pull/108397/files#diff-4d1ad7a610ef7e1d1282f54948f8331f0fe9effeedd43ce5ce70370501e87549R52"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5024",
+ "title": "Remove EuiComboBox down arrow button from tab order",
+ "user": {
+ "login": "cjcenizal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1238659?v=4",
+ "html_url": "https://github.com/cjcenizal"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-12T19:39:22Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I don't think the accessibility of this component is improved by making this arrow button focusable, since you can tab into the component and use the down arrow and Esc to open and close the suggestions list, respectively. Keeping it in the tab order means that users need to hit Tab an extra time to exit the component. I'd consider it an accessibility improvement if we remove it from tab order.\r\n\r\n![image](https://user-images.githubusercontent.com/1238659/129258194-773a6780-2933-4154-a0dd-8cbea5a915dd.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5019",
+ "title": "[Docs] Anchor link affordance for page sections.",
+ "user": {
+ "login": "dborodyansky",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3674406?v=4",
+ "html_url": "https://github.com/dborodyansky"
+ },
+ "labels": [],
+ "comments": 0,
+ "created_at": "2021-08-12T01:11:48Z",
+ "author_association": "NONE",
+ "body": "It is common to reference sections of EUI docs pages in communication. Section anchor URLs are accessible via side-nav sub-menus, although not immediately discoverable and not comprehensive to include Guidelines sections. On-hover affordance for anchor URLs as seen in elasic.co or docs.elastic may be worth consideration.\r\n\r\nThanks for all that you do!\r\n\r\n![image](https://user-images.githubusercontent.com/3674406/129122820-cc4e8efc-8094-4de6-9966-444d58bc0f6b.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5016",
+ "title": "Add `kbd` styling and/or component",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-11T11:38:18Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I would like there to be styling for the `kbd` tag so I can indicate shortcuts like: \r\nAlt + A \r\n\r\nLooking at the Figma (`code` page) there is also a note that says this needs to be done \r\n![image](https://user-images.githubusercontent.com/15386491/129019896-711cc78d-b599-495c-9b6c-88abd7c0ff15.png)\r\n(also kinda briefly mentioned in #1573)\r\n\r\nCurrently the only styling is \r\n```css\r\ncode, pre, kbd, samp {\r\n font-family: \"Roboto Mono\", Consolas, Menlo, Courier, monospace;\r\n}\r\n```\r\n\r\nThe linked code \r\n```css\r\n kbd {\r\n padding: 0.2em;\r\n border: $euiBorderThin;\r\n border-bottom-color: shadeOrTint($euiColorLightShade, 10%, 10%);\r\n border-radius: $euiBorderRadius;\r\n box-shadow: inset 0 -1px 0 $euiColorLightShade;\r\n }\r\n```\r\nis not in EUI (or at least in the non-Amsterdam theme)\r\n\r\nI thought I'd raise an issue as I couldn't find one.\r\n\r\nIt might be good if we could create a new component to limit what combinations we can use - I doubt it's good for people to use `` for non-shortcuts e.g.\r\n```jsx\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5015",
+ "title": "EuiWrappingPopover does not return focus to anchor",
+ "user": {
+ "login": "rshen91",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20343860?v=4",
+ "html_url": "https://github.com/rshen91"
+ },
+ "labels": [
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-10T21:40:52Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Please refer to the code sandbox example [here ](https://codesandbox.io/s/strange-black-kq8qx?file=/src/App.tsx) \r\n\r\nIn https://github.com/elastic/elastic-charts/pull/1272, I'm trying to restore focus back to the legend icon after closing the color picker with the keyboard exclusively. So hitting enter on the legend dot icon opens the color picker, and then I can tab through the various parts of the color picker and interact with it using keys. If I hit the escape key, the color picker closes, and focus is correctly returned to the legend icon. \r\nHowever, when I hit enter on the Done button in the example code below, focus does not return to the legend icon. This does work as expected when using EuiPopover instead of EuiWrappingPopover.\r\n\r\n``` js\r\nconst CustomColorPicker: LegendColorPicker = useMemo(\r\n () => ({ anchor, color, onClose, seriesIdentifiers, onChange }) => {\r\n const handleClose = () => {\r\n onClose();\r\n anchor.focus();\r\n setColors((prevColors) => ({\r\n ...prevColors,\r\n ...toEntries(seriesIdentifiers, 'key', color),\r\n }));\r\n };\r\n const handleChange = (c: Color | null) => {\r\n setColors((prevColors) => ({\r\n ...prevColors,\r\n ...toEntries(seriesIdentifiers, 'key', c),\r\n }));\r\n onChange(c);\r\n onChangeAction(c);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n handleChange(null)}>\r\n Clear color\r\n \r\n \r\n \r\n Done\r\n \r\n \r\n >\r\n );\r\n },\r\n [setColors],\r\n );\r\n```\r\n\r\nThe above example color picker does not properly return focus after hitting enter on the done button. However, if we switch the component `EuiWrappingPopover` to `EuiPopover`, the focus is returned. "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5014",
+ "title": "EuiBasicTable blocks any action while isLoading is true",
+ "user": {
+ "login": "cauemarcondes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/55978943?v=4",
+ "html_url": "https://github.com/cauemarcondes"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-08-10T17:50:48Z",
+ "author_association": "NONE",
+ "body": "on APM we’re lazy loading part of the data that we show on a EuiBasicTable . The problem is that I cannot click on anything while `isLoading = true.`\r\n\r\nhttps://user-images.githubusercontent.com/55978943/128909658-b9ac5f6d-a1d6-452f-b820-85dc6d44b1af.mov\r\n\r\nExpected behavior:\r\nThe table would allow the user to click on any link in the table even when the loading spinner is running.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5013",
+ "title": "[EuiTooltip] Add an \"alwaysVisible\" prop",
+ "user": {
+ "login": "sebelga",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2854616?v=4",
+ "html_url": "https://github.com/sebelga"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ },
+ {
+ "id": 1399999948,
+ "node_id": "MDU6TGFiZWwxMzk5OTk5OTQ4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/prop%20request",
+ "name": "prop request",
+ "color": "3d4d9e",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-08-10T07:34:24Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In https://github.com/elastic/kibana/pull/107292 @cchaos suggested to use a tooltip to give instruction on how to interact with the keyboard on a component. This works well except that, when the tooltip is shown if we mouse out it disappears.\r\n\r\nI suggest that we add a new `alwaysVisible` optional prop to the ` ` component which will always display the tooltip and not react to mouse events. The consumer would then be responsible to hide it if needed."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5011",
+ "title": "[EuiFlyout] Fix prop table; refactor",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 2767044132,
+ "node_id": "MDU6TGFiZWwyNzY3MDQ0MTMy",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-changelog",
+ "name": "skip-changelog",
+ "color": "FC0E3C",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-09T22:08:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nFixes #4980. Changes include exporting `EuiFlyout` from the definition location, and some clean up work to standardize React type imports.\r\n\r\n~### Checklist~\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5007",
+ "title": "[EuiResizableContainer] EuiResizableButton fix z-index",
+ "user": {
+ "login": "Patil2099",
+ "avatar_url": "https://avatars.githubusercontent.com/u/35653876?v=4",
+ "html_url": "https://github.com/Patil2099"
+ },
+ "labels": [],
+ "comments": 2,
+ "created_at": "2021-08-05T16:36:31Z",
+ "author_association": "NONE",
+ "body": "Fixes #5003"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5003",
+ "title": "[EuiResizableContainer] EuiResizableButton high z-index",
+ "user": {
+ "login": "0x557269656C",
+ "avatar_url": "https://avatars.githubusercontent.com/u/42144091?v=4",
+ "html_url": "https://github.com/0x557269656C"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-08-03T19:25:21Z",
+ "author_association": "NONE",
+ "body": "When selected the `.euiResizableButton ` draggable element has a default `z-index` that is higher or equal to `EuiHeader` leading to this element being superimposed on top of any `EuiHeader` element. \r\n\r\nSee the following screenshot from the docs:\r\n\r\n \r\n\r\nIs this the expected behaviour? \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/5002",
+ "title": "EuiCodeBlocks - new wrapper component for tabbed code blocks",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-08-03T13:10:15Z",
+ "author_association": "MEMBER",
+ "body": "We have several needs across our products to display a tabbed code block list. An easy example is in the EUI docs itself:\r\n\r\n![image](https://user-images.githubusercontent.com/324519/128019722-f4bd8b0a-fa9e-4755-8ddb-310fe363f767.png)\r\n\r\nIn the elastic.co docs we have times where we need to display the same type of code, but show different snippets based upon the OS the user is using. The typical example is showing Linux, OSX and Windows examples for any block.\r\n\r\nIt'd be nice to have a wrapper component to handle this easily without having to setup separate tabs and separate code blocks."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/5000",
+ "title": "[EuiDatePicker] Update styles for Amsterdam",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735487266,
+ "node_id": "MDU6TGFiZWw3MzU0ODcyNjY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/style%20only",
+ "name": "style only",
+ "color": "9fdb67",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1858600108,
+ "node_id": "MDU6TGFiZWwxODU4NjAwMTA4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/Amsterdam",
+ "name": "Amsterdam",
+ "color": "006DE4",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2021-07-30T19:49:01Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This PR only affects the Amsterdam theme by separating out the date-picker imports completely and kinda hacky. But I wanted to start clean and not try to \"override\" the default theme because it's soo many selectors.\r\n\r\nThe updated version:\r\n \r\n\r\n\r\n### The main differences are:\r\n\r\n- Month/Year selectors act like dropdowns instead of the grid selector\r\n- The Month/Year header expands the whole width, even over the time selection\r\n- Using sort arrows for cycling through months\r\n- Updates to the styling of the selected days including hover/focus states and especially when in a range\r\n\r\n \r\n\r\n- Stacks time below calendar on mobile (I know it's awkward, but its the best I could do for now).\r\n\r\n \r\n\r\n\r\n\r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n- [x] Checked in **mobile**\r\n- [x] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- ~[ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~\r\n- ~[ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~\r\n- ~[ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples~\r\n- [x] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- ~[ ] Checked for **breaking changes** and labeled appropriately~\r\n- [x] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4997",
+ "title": "[EuiDataGrid] Selection columns are not aligned",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2021-07-30T15:02:04Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I have tested the feature locally, Everything works as expected 👍 \r\nThe only thing is that I found a misalignment between the header and the row checkboxes:\r\n\r\n![misalignment](https://user-images.githubusercontent.com/17747913/127658990-18fbb0dd-acd0-441e-9e58-561e388a8e37.png)\r\n\r\n@elastic/eui-design This is caused by the EuiDataGrid using `gridStyle={{border: 'none'}}`. \r\nThe `border: none;` rule is applied to the header:\r\n![header](https://user-images.githubusercontent.com/17747913/127659796-0d9198e9-0b51-4c29-bb69-0064cb63504b.png)\r\n\r\nbut the row divs only have `border-color: transparent !important;`:\r\n![cell](https://user-images.githubusercontent.com/17747913/127660334-9dcbe4c1-0953-4509-8a61-caddc54baf70.png)\r\n\r\n_Originally posted by @semd in https://github.com/elastic/kibana/issues/107144#issuecomment-889896823_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4994",
+ "title": "Add automated a1yy tests that interact with components",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-07-29T21:32:14Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The current axe setup automatically tests every page but doesn't interact with any component. This isn't a big deal for simple components like individual buttons but for components that meaningfully change the DOM when they're interacted with, this is a huge gap."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4993",
+ "title": "[EuiCodeBlock] Add line numbers",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [],
+ "comments": 9,
+ "created_at": "2021-07-29T17:09:52Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nCloses #3140 by adding an option to render line numbers in EuiCodeBlock. Works with virtualization and fullscreen, and does not impact copy functionality.\r\n\r\n \r\n\r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n- [x] Checked in **mobile**\r\n- [x] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- [x] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**\r\n- [x] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**\r\n- [x] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [x] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [x] Checked for **breaking changes** and labeled appropriately\r\n- [x] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4992",
+ "title": "[EuiNotificationBadge] The number inside badge looks not centred, corner radius value is different than in the design component",
+ "user": {
+ "login": "yiyangliu9286",
+ "avatar_url": "https://avatars.githubusercontent.com/u/81987435?v=4",
+ "html_url": "https://github.com/yiyangliu9286"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-07-29T14:43:23Z",
+ "author_association": "NONE",
+ "body": "For `EuiNotificationBadge`, we have noticed that there are slightly differences between the component in the design system in [Figma](https://www.figma.com/file/RzfYLj2xmH9K7gQtbSKygn/Elastic-UI?node-id=12804%3A44450) vs. how it looks after implementing it. See screenshots below:\r\n\r\n- In the design system, the radius value is 3. And number looks centred.\r\n\r\n \r\n\r\n- In what has been implemented, the radius value looks bigger. The number looks slightly not centred.\r\n\r\n \r\n\r\nJust wondering if the team could take a look at it when there's a chance? Thanks.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4980",
+ "title": "[EuiFlyout] Documentation broken for EuiFlyout \"props\" tab",
+ "user": {
+ "login": "muhammadtalhas",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13083448?v=4",
+ "html_url": "https://github.com/muhammadtalhas"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 6,
+ "created_at": "2021-07-26T23:32:57Z",
+ "author_association": "NONE",
+ "body": "Seeing an error boundary instead.\r\n\r\n![image](https://user-images.githubusercontent.com/13083448/127072204-26c596a0-1c62-461b-94f2-5dc94b47af87.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4978",
+ "title": "[EUISearchBar] toESQuery does not allow AND operation ",
+ "user": {
+ "login": "PhaedrusTheGreek",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4387023?v=4",
+ "html_url": "https://github.com/PhaedrusTheGreek"
+ },
+ "labels": [],
+ "comments": 2,
+ "created_at": "2021-07-26T21:12:23Z",
+ "author_association": "NONE",
+ "body": "By default in ES, simple query string query will run in `OR` mode by default, but we should be able to change that with the `+` [syntax](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#simple-query-string-syntax).\r\n\r\nWhen I enter a query like this and run it through the `Query.toESQuery`, I get the following error:\r\n\r\n```\r\nExpected \"(\", \"-\", \"is:\", end of input, field, term, or whitespace but \"+\" found.\r\n```\r\n\r\nAlso I noticed the [default operator parameter](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#simple-query-string-top-level-params) is not set in the query output."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4974",
+ "title": "[ColorPalettes] Monochromatic palettes that start from \"no color\"",
+ "user": {
+ "login": "ghudgins",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5465514?v=4",
+ "html_url": "https://github.com/ghudgins"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-07-21T14:07:48Z",
+ "author_association": "NONE",
+ "body": "**Description**\r\nMonochromatic color palettes could start from a color stop that has \"no color\" to better emphasize values. This could be in the form of new color stops \r\n\r\n**Use case**\r\n**When** I am using a monochromatic color palette to emphasize data values\r\n**I need** palette options that start from no color and gradually work the way to the darkest single color\r\n**So I can** highlight larger / smaller values with color while leaving the lowest 10% (or values of 0) without color\r\n\r\n**Today's palette colors the 0 values**\r\n![image](https://user-images.githubusercontent.com/5465514/126501990-d04bbbfb-ca4e-4f0e-a340-020a33f81bb9.png)\r\n\r\n**Proposed palettes could start with a fully transparent stop for \"no color\"**\r\n![image](https://user-images.githubusercontent.com/5465514/126502031-7a21aa7d-0aeb-43fa-97f9-d62305bc4502.png)\r\n\r\nCC @dej611 & @MichaelMarcialis "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4973",
+ "title": "[EuiContextMenu] Hover/active state shenanigans within EuiContextMenu items",
+ "user": {
+ "login": "afgomez",
+ "avatar_url": "https://avatars.githubusercontent.com/u/57448?v=4",
+ "html_url": "https://github.com/afgomez"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-07-21T12:59:34Z",
+ "author_association": "MEMBER",
+ "body": "When opening a `EuiContextMenu`, there are some inconsistencies regarding the hover/active state.\r\n\r\nTested on macOS Big Sur, Firefox 91.\r\n\r\n### When hovering over the menu elements\r\n\r\n- The first element keeps the blue background, no matter where the user hovers.\r\n- In some cases the hovered element doesn't get an underline (see \"Go to a link\" in the attached video.)\r\n- When going to a nested panel, the default active element (the one with the blue background) is the second, no the first.\r\n- When going back, no element is marked as active element\r\n\r\n\r\n### When navigating menu elements with the arrow keys.\r\n\r\n- When the menu first opens, it takes two presses of the `down` arrow key to move down.\r\n- When the first menu element is selected, it takes two presses of the `up` arrow key to cycle to the last menu element.\r\n- When the last menu element is selected, it takes two presses of the `down` arrow key to cycle to the first menu element.\r\n\r\n\r\nhttps://user-images.githubusercontent.com/57448/126492255-017aa468-47cf-4c7d-9dfc-cf45af080d79.mov\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4972",
+ "title": "[EuiFormControlLayout] Support for more layouts",
+ "user": {
+ "login": "andreadelrio",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4016496?v=4",
+ "html_url": "https://github.com/andreadelrio"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-07-20T16:50:08Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The Dashboard team is currently working on allowing users to add input controls to dashboards. They've built their first version [here](https://ci-artifacts.kibana.dev/storybooks/pr-103512/dc18fee1c9059c5147215f55f431869aec3830eb/presentation/index.html?path=/story/input-controls--options-list-story) (you can go to the `Controls` tab to see the props). Screen captures here:\r\n\r\n![gif1_600](https://user-images.githubusercontent.com/4016496/126363317-1d12020a-ed89-4366-8622-11c37d3b3546.gif)\r\n![gif2_600](https://user-images.githubusercontent.com/4016496/126363424-c11a2f48-e35e-49d7-8312-7053a49e866b.gif)\r\n\r\n### More layouts\r\n\r\nOne of the layouts they are considering can be handled well by **EuiFormControlLayout** (the single line one). However, they're exploring a `twoLine` display which wouldn't be supported by **EuiFormControlLayout**. My question is, is this something **EuiFormControlLayout** could support in the future? \r\n\r\ncc @ThomThomson "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4960",
+ "title": "[EuiDataGrid] Hovering over a highlightet cell starts button animation again",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-07-16T15:55:41Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When you focus a cell the buttons inside it are all visible, when you now hover over that cell again it starts the animation again for those buttons looking very jumpy and buggy:\r\n\r\n![Peek 2021-07-16 17-51](https://user-images.githubusercontent.com/877229/125975387-c5212109-c28f-4bf9-9c11-719fd38485d8.gif)\r\n\r\nYou can reproduce the same in the first example in the [data grid doc](https://elastic.github.io/eui/#/tabular-content/data-grid)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4959",
+ "title": "[EuiDataGrid] Overflow hidden on cells",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-07-16T15:18:49Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Currently the data grid cells don't have an `overflow: hidden` on it, causing the data grid to potentially look a bit weird if there's e.g. images in the cells:\r\n\r\n![screenshot-20210716-171538](https://user-images.githubusercontent.com/877229/125970409-e49cb737-770a-4940-94cf-ec048416f8c2.png)\r\n\r\nI wonder if we should by default set `overflow: hidden` on cells to make it look (imho) better:\r\n\r\n![screenshot-20210716-171745](https://user-images.githubusercontent.com/877229/125970574-0bd3b282-06ff-49af-9f6a-fcf420054431.png)\r\n\r\nBut I am not sure if there might be other side-effects why we're considering having overflow visible."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4958",
+ "title": "[EuiDataGrid] Auto-fit rows to content",
+ "user": {
+ "login": "VladLasitsa",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16915480?v=4",
+ "html_url": "https://github.com/VladLasitsa"
+ },
+ "labels": [],
+ "comments": 31,
+ "created_at": "2021-07-16T13:16:34Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nAdds 'auto' as value for `defaultHeight` from `rowHeightsOptions` which allow to rows auto fit to content.\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4957",
+ "title": "[EuiDataGrid] regression in displaying Arrays and Objects in expand behavior",
+ "user": {
+ "login": "mouradmourafiq",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1261626?v=4",
+ "html_url": "https://github.com/mouradmourafiq"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-07-16T08:07:50Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It seems like a regression was introduced to the datagrid expand behavior, it adds `Row: 3, Column: 6:` which was not the case before.\r\n\r\n * Json objects can be tested on this [docs page](https://elastic.github.io/eui/#/tabular-content/data-grid-schemas-and-popovers):\r\n\r\n![Screenshot 2021-07-16 at 10 01 23](https://user-images.githubusercontent.com/1261626/125914115-90eaf152-dd8d-4ef7-92a5-3a17adb1858d.png)\r\n\r\n * Arrays before regression:\r\n\r\n![Screenshot 2021-07-16 at 10 04 38](https://user-images.githubusercontent.com/1261626/125914478-325155f5-e80d-467d-8d8e-c7e9626eded2.png)\r\n\r\n\r\n * Arrays after regression:\r\n\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4956",
+ "title": "[EuiMarkdownEditor] Support for a uiPlugin to have a custom click handler",
+ "user": {
+ "login": "seeruk",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2083033?v=4",
+ "html_url": "https://github.com/seeruk"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-07-15T21:09:16Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Right now a uiPlugin is limited to either instantly place content into the editor, or show a modal to configure some text that goes into the editor. It'd be great if this functionality could be expanded upon so that completely custom click handlers could be added.\r\n\r\nOne use-case I have in mind for this is something like a full-screen button. This doesn't affect the editor content itself, just how the editor is presented, and it probably makes more sense for the parent component to handle how the editor itself is rendered."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4951",
+ "title": "[EuiComboBox] Regression in singleSelection scrolling behavior",
+ "user": {
+ "login": "wenchonglee",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18256786?v=4",
+ "html_url": "https://github.com/wenchonglee"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-07-14T03:45:07Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hey,\r\n\r\nI noticed that after #4879, an `EuiComboBox` with `singleSelection` will no longer scroll to the selected option on open.\r\nYou can verify this behavior by going to the [sandbox](https://codesandbox.io/s/eui-issue-ulk5f?file=/index.js) found in #4072, and alternating between versions 34.4.0 and 34.5.0. (open the first combobox in the sandbox)\r\n\r\nI think this is because of line 158 added in `componentDidUpdate`, as this condition will never be true on mount.\r\n\r\nhttps://github.com/elastic/eui/blob/efad82b13106474c83f19eeb535e037b5af13e44/src/components/combo_box/combo_box_options_list/combo_box_options_list.tsx#L155-L161\r\n\r\nI haven't sat down to think of a solution yet, maybe we could add a similar `scrollToItem` call in `componentDidMount`? (without this condition)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4949",
+ "title": "[EuiSearchBar] Document defaultFields option on toESQuery",
+ "user": {
+ "login": "PhaedrusTheGreek",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4387023?v=4",
+ "html_url": "https://github.com/PhaedrusTheGreek"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-07-13T17:35:17Z",
+ "author_association": "NONE",
+ "body": "It seems that toESQuery options accepts a `defaultFields` array, but the docs to not indicate that, as well as a few other options available."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4942",
+ "title": "[EuiSuperDatePicker] Now Supports onFocus",
+ "user": {
+ "login": "ConaGo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18573703?v=4",
+ "html_url": "https://github.com/ConaGo"
+ },
+ "labels": [],
+ "comments": 8,
+ "created_at": "2021-07-08T15:56:24Z",
+ "author_association": "NONE",
+ "body": "Added onFocus-prop to superdatepicker and added a test\r\n~The test will make an unrelated test fail though so this is just a draft~\r\n\r\nCloses #4924\r\n\r\n### Checklist\r\n\r\n- [ ] Check against **all themes** for compatibility in both light and dark modes\r\n- [ ] Checked in **mobile**\r\n- [ ] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**\r\n- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**\r\n- [ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [ ] Checked for **breaking changes** and labeled appropriately\r\n- [ ] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [ ] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4938",
+ "title": "[Feature Request][EuiRange] - Range should be able to be positioned vertically",
+ "user": {
+ "login": "michaelolo24",
+ "avatar_url": "https://avatars.githubusercontent.com/u/17211684?v=4",
+ "html_url": "https://github.com/michaelolo24"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-07-06T14:05:12Z",
+ "author_association": "NONE",
+ "body": "The EuiRange should support a vertical orientation in addition to the current horizontal orientation. Ideally, this would be just a toggle-able prop. It may be more convenient to have an `angle` prop that takes some x degree and orients the range that way. \r\n\r\nUse case: The range is currently being styled to be vertical in the security solution application within kibana\r\n\r\n https://github.com/elastic/kibana/blob/57fdadbbec2cdd4681d1210a788405ac2a947a21/x-pack/plugins/security_solution/public/resolver/view/graph_controls.tsx#L278"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4931",
+ "title": "[EuiResizableContainer] Resizing mouse loses dragging if move out of panels",
+ "user": {
+ "login": "shahzad31",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3505601?v=4",
+ "html_url": "https://github.com/shahzad31"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-06-30T09:12:51Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "EuiResizableContainer when dragging, if mouse leaves the main container event handler is unattched. User have to click again on resizeable button to resize. \r\n\r\nI think event handler attachment should be adjusted to make sure even if it leaves container , event handler remains attched.\r\n\r\nWe can also allow user passing the container element to which we want to attach the mouse event."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4926",
+ "title": "[EuiMarkdownEditor] Support for a customizable editing experience",
+ "user": {
+ "login": "legrego",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3493255?v=4",
+ "html_url": "https://github.com/legrego"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2061370008,
+ "node_id": "MDU6TGFiZWwyMDYxMzcwMDA4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/markdown%20editor",
+ "name": "markdown editor",
+ "color": "f2dc93",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-06-29T13:01:37Z",
+ "author_association": "MEMBER",
+ "body": "Currently, the `EuiMarkdownEditor` renders the \"edit\" mode using a plain `textarea`. This works well for simple Markdown, but it's possible that plugins will want to customize the editing experience by changing the display of the raw Markdown.\r\n\r\nFor a concrete example, we are looking to support user mentions. The raw markdown might look something like this:\r\n\r\n```\r\nHey !{user{\"id\": \"abc123dfera\"}}, can you check this out?\r\n```\r\n\r\nThis is not very friendly to look at, so we would prefer to have the editor show something similar to the following:\r\n\r\n```\r\nHey larry.gregory, can you check this out?\r\n```\r\n\r\nThe replacement text would be treated as a single element, where we could backspace into it to delete the entire reference.\r\n\r\nNeeded for: elastic/kibana#80334 (8.x timeframe)\r\n(we can make an alternative UX without support for this in EUI, but it will be ugly)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4925",
+ "title": "Collapsable nav should not allow keyboard support for items when collapsed",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-28T20:49:50Z",
+ "author_association": "MEMBER",
+ "body": "In instances where the nav is collapsed we don't want the items in the nav to be tabblable. This is currently shimmed at the kibana level, but should be native in the EUI component."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4924",
+ "title": "[EuiSuperDatePicker] Support `onFocus`",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-06-28T14:18:08Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "EuiSuperDatePicker should support `onFocus`. Given that there are multiple focusbale elements, the provided callback should likely only be called once on the initial element focus and not for each subcomponent focus event."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4923",
+ "title": "[EuiDataGrid] Keep focus on grid if column gets removed",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-28T08:33:36Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "If a currently focused column gets removed from data grid, the focus isn't captured anymore and returns to the document body.\r\n\r\nData grid should recognize and handle this case by moving the focus to the grid root element."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4922",
+ "title": "[EuiText] does not support raw html, only JSX",
+ "user": {
+ "login": "hidesminimally",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5432430?v=4",
+ "html_url": "https://github.com/hidesminimally"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-06-25T22:55:08Z",
+ "author_association": "NONE",
+ "body": "Expected: \r\n- Given the documentation (see screenshot) I expected to be able to use raw HTML in the EuiText component.\r\n\r\n![image](https://user-images.githubusercontent.com/5432430/123492138-82899a00-d5cd-11eb-96ef-c43aa58c4e23.png)\r\n\r\nActual:\r\nUpon testing it with a tag (note that it is left open) in a jsfiddle, it breaks: https://codesandbox.io/s/muddy-meadow-k876x?file=/index.js:647-658 \r\n\r\n![image](https://user-images.githubusercontent.com/5432430/123492179-a816a380-d5cd-11eb-89cc-8b0d7d80ece0.png)\r\n\r\n\r\nIs this a known issue? I expected the raw HTML to be supported, not requiring JSX as the documentation specified. "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4918",
+ "title": "[EUI][Maps] Change the behavior of clicking on a tick mark on the range slider",
+ "user": {
+ "login": "kmartastic",
+ "avatar_url": "https://avatars.githubusercontent.com/u/65553677?v=4",
+ "html_url": "https://github.com/kmartastic"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-06-23T23:02:40Z",
+ "author_association": "NONE",
+ "body": "This request is based on Usability testing feedback for the Timeslider (only available in Maps at the moment). I'm not sure if this is desirable in all uses of the EUIDualRange component. Timeslider will be released in 7.14.\r\n\r\nActual: Clicking on the axis tick labels will move one of the start/end points of the time slice (selected range) to the clicked value.\r\n\r\nExpected: Clicking on the axis tick labels will move the existing time slice (selected range) to start at the clicked value. So the same range is moved; it is not extended or contracted.\r\n\r\nPer issue: https://github.com/elastic/kibana/issues/103143\r\n\r\ncc: @miukimiu \r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4915",
+ "title": "Changing default values should bump major",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2021-06-23T20:43:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Given #4882 was included in a minor release, I'd like to point out that changing default/implicit behaviour is a breaking change. \r\n\r\nThe `color` prop for Badge, Expression, and Progress all previously defaulted to \"secondary\" and now default to \"success\". AFAIK, \"secondary\" and \"success\" are the same, so there should be no problems this time, but changing other default values will likely cause problems for consumers. \r\nThe PR should have kept the defaults the same so that consumers can see the deprecation (otherwise a consumer may unknowingly adopt the changes) and only change the defaults when `secondary` is actually removed."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4913",
+ "title": "[EuiDatePicker] opening via customInput has blue highlighted dates on first open, not on second open",
+ "user": {
+ "login": "jeroenbrouwer",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13677331?v=4",
+ "html_url": "https://github.com/jeroenbrouwer"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-06-23T14:48:40Z",
+ "author_association": "NONE",
+ "body": "Reproducible via the docs at https://elastic.github.io/eui/#/forms/date-picker\r\n\r\nClicking the button the first time:\r\n![image](https://user-images.githubusercontent.com/13677331/123118051-9785f200-d442-11eb-99b8-1fc20735fa00.png)\r\n\r\nClicking the button the second time:\r\n![image](https://user-images.githubusercontent.com/13677331/123118210-b71d1a80-d442-11eb-82ad-f6d0644ef7dc.png)\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4912",
+ "title": "Remove deprecated `/` sass syntax",
+ "user": {
+ "login": "nickofthyme",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19007109?v=4",
+ "html_url": "https://github.com/nickofthyme"
+ },
+ "labels": [],
+ "comments": 0,
+ "created_at": "2021-06-23T13:49:21Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Remove deprecated division syntax (i.e. `/`) with the new syntax of `math.div`.\r\n\r\nSee https://sass-lang.com/documentation/breaking-changes/slash-div\r\n\r\nLooks like there is an easy migration...\r\n\r\n```bash\r\n$ npm install -g sass-migrator\r\n$ sass-migrator division **/*.scss\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4910",
+ "title": "[EuiIcon] Early setState yields a console error",
+ "user": {
+ "login": "Phizzard",
+ "avatar_url": "https://avatars.githubusercontent.com/u/14220463?v=4",
+ "html_url": "https://github.com/Phizzard"
+ },
+ "labels": [],
+ "comments": 5,
+ "created_at": "2021-06-23T01:35:32Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nFixes #4783 \r\n\r\nUsing ``` ``` with React.StrictMode would yield the following react warning ```Warning: Can't call setState on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to 'this.state' directly or define a 'state = {};' class property with the desired state in the EuiIcon component.```\r\n\r\nThis would happen because the ```loadIconComponent()``` function calls ```this.setState()``` and is used in the constructor.\r\n\r\nMoving the the ```loadIconComponent()``` and logic around it in the constructor to ```componentDidMount()``` resolves this warning.\r\n\r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n- [x] Checked in **mobile**\r\n- [x] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n~~- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~~\r\n~~- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~~\r\n- [x] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n~~- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**~~\r\n- [x] Checked for **breaking changes** and labeled appropriately\r\n- [x] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4897",
+ "title": "Add ability to provide custom types for props",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-17T19:25:02Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Seems like we could use some pattern for providing a custom entry for a given prop's `type` field in the documentation.\r\n\r\n_Originally posted by @cchaos in https://github.com/elastic/eui/pull/4895#discussion_r653785959 :_\r\n\r\nSuper nit here, but because `EuiSuperUpdateButtonProps` is not documented anywhere as a props table or anything and isn't obvious that it is just an EuiButton, I wonder if we just want to extend EuiButtonProps here. So that instead of the table rendering like this for `updateButtonProps`:\r\n\r\n \r\n\r\nIt would say `Partial` which is easy to then go look up all the props available?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4893",
+ "title": "[EuiResizableContainer] Initial panel size calculation improvements",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [],
+ "comments": 8,
+ "created_at": "2021-06-16T21:06:36Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nCloses #4453. Helps #4737.\r\n\r\n* Added `maxSize` prop that accepts px or % values (just like `minSize)\r\n* Updated initial size calculation to respect `minSize` and `maxSize` full-stop:\r\n * Overflow will scroll if there is not enough width/height to accommodate `minSize`s\r\n * Empty space will exist if the container width/height is larger than combined `maxSize`\r\n* Added `grow` as an accepted value for `initialSize`\r\n * Panel will occupy all remaining space in the container\r\n * Panel can still set `minSize` but `maxSize` seems counterintuitive\r\n* Updated `initialSize` to accept px values (\"30%\", \"30px\", or `30` (30%))\r\n* Updated `size` to accept px values (\"30%\", \"30px\", or `30` (30%))\r\n\r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n\r\n~- [ ] Checked in **mobile**~\r\n\r\n- [x] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- [x] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**\r\n- [x] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**\r\n- [x] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [x] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [x] Checked for **breaking changes** and labeled appropriately\r\n- [x] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4891",
+ "title": "[EuiPopover] Multiple Open When Clicking Quickly",
+ "user": {
+ "login": "ThomThomson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/14276393?v=4",
+ "html_url": "https://github.com/ThomThomson"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-06-16T16:08:25Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "#### Issue\r\n\r\nIf a user clicks two popover buttons in quick succession, so that they click on the second popover before the first is finished animating open, two popovers will appear. Clicking outside either popover twice will close them both.\r\n\r\nhttps://user-images.githubusercontent.com/14276393/122254824-81ed5700-ce9b-11eb-85d4-a45357e80c26.mp4\r\n\r\n#### Expected Behaviour\r\n\r\nIdeally, there should be a limit of one open popover at a time.\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4889",
+ "title": "Exported typeToPathMap from EuiIcons",
+ "user": {
+ "login": "nancy2681",
+ "avatar_url": "https://avatars.githubusercontent.com/u/74231481?v=4",
+ "html_url": "https://github.com/nancy2681"
+ },
+ "labels": [],
+ "comments": 2,
+ "created_at": "2021-06-16T10:33:33Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "\r\nExported `typeToPathMap` from EuiIcons\r\n\r\n### Checklist\r\n\r\n- [ ] ~Check against **all themes** for compatibility in both light and dark modes~\r\n- [ ] ~Checked in **mobile**~\r\n- [ ] ~Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**~\r\n- [ ] ~Props have proper **autodocs** and **[playground toggles]~(https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~\r\n- [ ] ~Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~\r\n- [ ] ~Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples~\r\n- [ ] ~Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**~\r\n- [ ] ~Checked for **breaking changes** and labeled appropriately~\r\n- [ ] ~Checked for **accessibility** including keyboard-only and screenreader modes~\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4884",
+ "title": "[EuiContextMenu] Should render `EuiPopover` for you?",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-15T18:07:55Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "**EuiContextMenu** right now is designed to render inside of a popover (but doesn't strictly need to be). With this, it relies on the consuming developer to put it in **EuiPopover** which can provide some flexibility in styling but also can provide some headache as demonstrated when we were [improving our focus states](https://github.com/elastic/eui/pull/4876#discussion_r651814253).\r\n\r\nIt's not immediately apperent which props should go on the **ContextMenu** and which should go on the **Popover**. I think we can get the same flexibility we currently have just by allowing **EuiContextMenu** to take a `popoverProps` prop which will pass everything through while setting up a sensible default for consumers while also relieving some boilerplate from every usage."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4878",
+ "title": "[EuiFlexGrid] Add `justifyContent` and `alignItems` like `EuiFlexGroup`",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ },
+ {
+ "id": 1399999948,
+ "node_id": "MDU6TGFiZWwxMzk5OTk5OTQ4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/prop%20request",
+ "name": "prop request",
+ "color": "3d4d9e",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 7,
+ "created_at": "2021-06-14T15:50:18Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "`EuiFlexGroup` has `justifyContent` and `alignItems` props, but `EuiFlexGrid` surprisingly doesn't."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4877",
+ "title": "[Icons] Export icon constants",
+ "user": {
+ "login": "sqren",
+ "avatar_url": "https://avatars.githubusercontent.com/u/209966?v=4",
+ "html_url": "https://github.com/sqren"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 885030943,
+ "node_id": "MDU6TGFiZWw4ODUwMzA5NDM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/icons",
+ "name": "icons",
+ "color": "2d0470",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-14T14:10:13Z",
+ "author_association": "MEMBER",
+ "body": "Currently to use a (third party) icon it is only possible to use a string as the logo identifier:\r\n\r\n```tsx\r\n \r\n```\r\n\r\nThis is error prone since the there's nothing preventing the dev making a spelling mistakes, or renaming an icon on the EUI side without updating the consumers. \r\nTo prevent these mistakes, catch changes and improve intellisense I suggest icons are consumed as constants:\r\n\r\n```tsx\r\n \r\n```\r\n\r\nAfaict all that's needed is to export `typeToPathMap`:\r\n\r\nhttps://github.com/elastic/eui/blob/e475ce5bedf9f2dd5a76fd6cc69168aaa1d12e99/src/components/icon/icon.tsx#L39-L56"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4872",
+ "title": "[EuiComboBox] Combobox popover can be hidden behind EuiBottomBar",
+ "user": {
+ "login": "jloleysens",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8155004?v=4",
+ "html_url": "https://github.com/jloleysens"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2021-06-10T15:08:45Z",
+ "author_association": "NONE",
+ "body": "On EUI v33.0.0 it is possible to have the combobox popover appear under the EuiBottomBar.\r\n\r\n\r\n## Screenshot\r\nThere are 3 items in the this popover but only 2 are visible\r\n\r\n![Screenshot 2021-06-10 at 15 04 55](https://user-images.githubusercontent.com/8155004/121549766-6fdc6600-ca0e-11eb-8daf-6a25d2c58169.png)\r\n\r\n\r\n## Example\r\n\r\nhttps://codesandbox.io/s/heuristic-waterfall-1ntg0?file=/src/index.tsx"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4867",
+ "title": "[EuiMarkdownEditor] Enhancement request: auto-inserting list items",
+ "user": {
+ "login": "i-a-n",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1937355?v=4",
+ "html_url": "https://github.com/i-a-n"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-08T21:50:43Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hello valued team members, a support user has left us [a bug report ](https://github.com/elastic/dream-machine/issues/1340)which we determined is actually a feature request:\r\n\r\n> Ordered List not working properly, after push enter key it doesn't add the next number at the new line.\r\n\r\nIt appears the user expects the GitHub textarea behavior of:\r\n\r\n1. type `1.`\r\n2. hit enter\r\n3. the next line auto-inserts `2. `\r\n\r\nSince I don't see this functionality in `MarkdownEditor`, I thought I'd raise an issue in case this is a feature we think is important enough to develop. Thanks for your time!"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4866",
+ "title": "[EuiComboBox] Performance issue on rerender",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-08T09:49:06Z",
+ "author_association": "NONE",
+ "body": "The `AutosizeInput` internal component within the `EuiComboBox` is causing noticeable performance issue in a UI on component rerender.\r\n\r\nThe code around the `EuiComboBox` had to be optimized to strongly minimize rerenders of the component due to an internal UI reflow triggered by the internal `AutosizeInput` component.\r\n\r\nTo give an idea of the performance impact, this is a profile read of a single state update operation in Lens:\r\n\r\n \r\n\r\nSame chart with the timings popup:\r\n\r\n \r\n\r\nThis is the line that triggers the performance issue: https://github.com/JedWatson/react-input-autosize/blob/8a68b453ca1dec723e255c40eab7f2928228fe22/src/AutosizeInput.js#L103\r\nThat single read operation of the `scrollWidth` property [triggers a full reflow](gist.github.com/paulirish/5d52fb081b3570c81e3a) which takes more than 100ms in our case.\r\nThe situation is even worse with slower CPUs that seems to be hit even worse by this specific problem, here's a profile recording with regular CPU and \"slower CPU\" (simulated 4x slowdown CPU):\r\n\r\n\"Fast CPU\":\r\n \r\n\r\n\"4x slowdown CPU\":\r\n \r\n\r\n**Some ideas**\r\n\r\nNot sure there's a specific solution for this problem, but it may help to add some documentation on the EuiComboBox page in a way to make the user aware of the problem - suggesting how to minimize re-renders."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4861",
+ "title": "[EuiDataGrid] Support double-click action on columns",
+ "user": {
+ "login": "ghudgins",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5465514?v=4",
+ "html_url": "https://github.com/ghudgins"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-06-04T20:34:53Z",
+ "author_association": "NONE",
+ "body": "**Describe the feature:**\r\nSupport a double click action in EuiDataGrid that allow auto expansion/collapsing to the width of the data. There probably should be some maximum expansion allowed 😅 \r\n\r\n**Describe a specific use case for the feature:**\r\nThere is data within a table cell that is more than the cell can show, by double clicking on the column width separator it would auto expand the column to the width of the cell with the most data in it.\r\n\r\n![image](https://user-images.githubusercontent.com/5465514/121020083-063e2c80-c76e-11eb-9886-3670d0d76fa2.png)\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4859",
+ "title": "Import in header_elastic_pattern breaks CodeSandbox link",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-06-04T19:37:25Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "😢 This import still breaks the CodeSandbox link (won't render it because the import isn't from `components`). But we can circle back to how to get these full screen demos working with those links after.\r\n\r\n_Originally posted by @cchaos in https://github.com/elastic/eui/pull/4674#discussion_r630419162_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4856",
+ "title": "[EuiPageHeader] PageTitle missing truncation or word-wrap ",
+ "user": {
+ "login": "formgeist",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4104278?v=4",
+ "html_url": "https://github.com/formgeist"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-06-04T07:55:27Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "# Summary\r\n\r\nI noticed when page titles are very long, the `rightSideItems` are pushed out of the way, but perhaps there should be some maxWidth or character truncation for the PageTitle for these cases. Should we handle this case by case or implement something general in the component?\r\n\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4848",
+ "title": "[EuiDataGrid] Horizontal scroll appears for datagrid when it should not",
+ "user": {
+ "login": "mbondyra",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4283304?v=4",
+ "html_url": "https://github.com/mbondyra"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-06-02T13:26:50Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Apologies for not reproducing this in Codesandbox - I couldn't exactly catch the root cause for an isolated case but I think that the bug lies in Eui, and not in Kibana.\r\n\r\n## Steps to reproduce on Kibana Dashboard:\r\n1. Create a dashboard with one Lens visualization:\r\n \r\n\r\n2. Refresh the page. The horizontal scroll appears. \r\n \r\n3. After hitting a 'refresh' button or resizing the visualization, the horizontal scroll disappears and the grid is stretched properly.\r\n\r\n## Other details:\r\nIt's not reproducible for a small grid, and that is why I think the problem is with some async logic being run not at the right time. The example below works fine, I could never observe a horizontal scroll to appear.\r\n \r\n\r\nI suspect [this](https://github.com/elastic/eui/blob/ee5d18e11d6cf371e221d261b561d8283c615abb/src/components/datagrid/data_grid.tsx#L329-L335) not being run slow enough to be the cause.\r\n\r\nhttps://github.com/elastic/eui/blob/ee5d18e11d6cf371e221d261b561d8283c615abb/src/components/datagrid/data_grid.tsx#L329-L336"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4845",
+ "title": "[Elastic Charts] Added value labels styles for bar charts",
+ "user": {
+ "login": "miukimiu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2750668?v=4",
+ "html_url": "https://github.com/miukimiu"
+ },
+ "labels": [],
+ "comments": 10,
+ "created_at": "2021-06-01T10:33:22Z",
+ "author_association": "MEMBER",
+ "body": "### Summary\r\n\r\nCloses #4267.\r\n\r\nThis PR adds better value labels default styles for bar charts.\r\n\r\nBy default the value labels once enabled are going to: \r\n\r\n* Be vertical and horizontal centered. The ideal positions would be based on the rotation of the bars. But this can't be achieved because we can't pass to the theme object what is the current rotation. So vertical and horizontal centered labels seem a good compromise. \r\n* The color will adapt to black or white according to the background (`textInvertible`)\r\n \r\n \r\n\r\nThe following demo `#/elastic-charts/categorical` was updated and a \"Show value labels\" switch was added. In this example, we can also see how to align the labels and an offset according to the rotation of the bars. \r\n\r\n \r\n\r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n- ~[ ] Checked in **mobile**~\r\n- [x] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- ~[ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~\r\n- ~[ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~\r\n- ~[ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples~\r\n- ~[ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**~\r\n- ~[ ] Checked for **breaking changes** and labeled appropriately~\r\n- ~[ ] Checked for **accessibility** including keyboard-only and screenreader modes~\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4843",
+ "title": "[EuiTourStep] Subtitle shouldn't be a h1",
+ "user": {
+ "login": "miukimiu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2750668?v=4",
+ "html_url": "https://github.com/miukimiu"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-05-31T16:22:51Z",
+ "author_association": "MEMBER",
+ "body": "The subtitle of the **EuiTourStep** shouldn't be a ` `.\r\n\r\nhttps://github.com/elastic/eui/blob/92cc223b5b10ae664e751dadc09e383c3069b5cd/src/components/tour/tour_step.tsx#L226-L233\r\n\r\nAlso, are there better HTML semantics to improve this title/subtitle section? CC @myasonik "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4842",
+ "title": "[ EuiFilePicker] must provide option to `remove` selected file(s)",
+ "user": {
+ "login": "loneWarrior581",
+ "avatar_url": "https://avatars.githubusercontent.com/u/67538935?v=4",
+ "html_url": "https://github.com/loneWarrior581"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-05-29T09:44:10Z",
+ "author_association": "NONE",
+ "body": "The current version dose not provide way to selectively remove some file/files from multiple files selected. The `remove` button empty the whole bucket. \r\n\r\n![Form controls - Elastic UI Framework - Google Chrome 2021-05-29 15-01-50](https://user-images.githubusercontent.com/67538935/120065691-46c3e900-c090-11eb-82a1-928d7af184c6.gif)\r\n\r\n\r\n_Proposed change/Feature_ expects way to selectively remove file/files among the picked files.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4838",
+ "title": "[EuiCollapsibleNav]: Fix for document is not defined when using CollapsibleNav",
+ "user": {
+ "login": "Patil2099",
+ "avatar_url": "https://avatars.githubusercontent.com/u/35653876?v=4",
+ "html_url": "https://github.com/Patil2099"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2021-05-28T16:07:09Z",
+ "author_association": "NONE",
+ "body": "Fixes #4807 \r\nWhat do you think of this solution? @thompsongl. Please let me know if you want any changes, "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4832",
+ "title": "[Random] Replace with faker.js and remove",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-05-27T18:35:14Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "EUI currently contains a service and some utilities related to generating random data: `Random` (src/services/random.ts) and\r\nfunctions in src/services/utils.ts.\r\n\r\n`Random` is exported as part of EUI's top-level API, but it is only used in `src-docs/` in 3 files. I believe it predates our use of faker.js for docs data. Each use looks like it could be replaced by faker.js and would allow us to remove the class from the codebase.\r\n\r\nThe utils (`times`, `memoize`, and `browserTick`) are not part of EUI's top-level API and 2 have 0 uses in the codebase; `times` is only used by `Random`.\r\n\r\nI propose refactoring the docs examples that use `Random` and remove all the code mentioned above from the codebase."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4831",
+ "title": "[EuiTour] Support for previous, next and go to step",
+ "user": {
+ "login": "andreadelrio",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4016496?v=4",
+ "html_url": "https://github.com/andreadelrio"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 7,
+ "created_at": "2021-05-27T18:24:58Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I wanted to check with the team and ask if we would consider adding \"go to next\", \"go to previous\", \"go to nth step\" support to **EuiTour**. Or if this was considered during the development of the component but not implemented for some reason. \r\n\r\nWe plan to start using [EuiTour for Discover](https://github.com/elastic/kibana/issues/80514#issuecomment-848247562) and the steps we have are not dependant on each other. In this scenario, being able to skip steps (and go back if needed) could be beneficial for the user. Right now the requirement is to have a `Next` button which I could fit in the step \"body\" but wanted to see what we think about doing something like this too.\r\n\r\n![tour_next_previous](https://user-images.githubusercontent.com/4016496/119877174-8b5b5300-bedd-11eb-900c-f2a1917e3332.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4826",
+ "title": "[EuiDataGrid] Change behavior of header cell sorting",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2021-05-26T10:14:16Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When you currently click on a column header sorting link, the selected new sorting is added to the actual sorting. \r\n\r\n \r\n\r\nIt can be assumed that most of the times users do not need multi sorting, so it would remove potential confusion (that we encountered in our user testing and while watching live demos). Users would need less actions to sort by a single field, while multi sort would still be possible using to sorting popover:\r\n![image](https://user-images.githubusercontent.com/463851/119642899-7ddd9480-be1b-11eb-818a-4cdeea8b1a3d.png)\r\n\r\nWhen a users removes a sorting by the column header, and has multiple sorting fields configured, just the specific field should be removed\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4825",
+ "title": "Initials icon",
+ "user": {
+ "login": "thomheymann",
+ "avatar_url": "https://avatars.githubusercontent.com/u/190132?v=4",
+ "html_url": "https://github.com/thomheymann"
+ },
+ "labels": [
+ {
+ "id": 885030943,
+ "node_id": "MDU6TGFiZWw4ODUwMzA5NDM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/icons",
+ "name": "icons",
+ "color": "2d0470",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-05-26T09:02:34Z",
+ "author_association": "NONE",
+ "body": "We require a new icon in Kibana when selecting initials. Is it possible to get this added to EUI as a first-class icon? \r\n\r\n![chrome-capture (13)](https://user-images.githubusercontent.com/190132/119633018-00655480-be1a-11eb-883e-a6ad3e49b5a4.jpg)\r\n\r\nDesign: https://www.figma.com/file/dBta1q3JgFe3Cfhw5h76Oq/Mockups-%2F-Version-1-%5BAwaiting-Dev%5D?node-id=20%3A2087\r\n\r\nSVG:\r\n```\r\n \r\n \r\n \r\n \r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4814",
+ "title": "[EuiLoading] Accessibility props",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 6,
+ "created_at": "2021-05-20T14:08:32Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "# Summary\r\n\r\n**EuiLoading** needs to better communicate it's state to assistive tech. We can improve the component in two ways:\r\n\r\n 1. First, add `role=\"progressbar\"` and a default `aria-label` value to the loading state\r\n 2. Also, accept a child to handle properly setting `aria-busy`\r\n\r\n\r\n## Details \r\nDoing the first, improves the existing usage of the component. Doing the second, is a non-breaking API change that should better handle a more ideal UX.\r\n\r\nFor existing implementations, or for those that can't/don't want to upgrade to the new pattern, we should provide better documentation around `aria-label` and `aria-busy`\r\n\r\nDocumentation on `aria-label` should largely ask that something better than \"loading content\" be passed in.\r\n\r\nDocumentation on `aria-busy` should talk about where to put it (around the loading content) and give warnings on how it works (that it treats all children as `aria-hidden`) so devs don't overuse it.\r\n\r\nIn addition to accepting children to handle the `aria-busy` attribute setting, it'll need to also accept an `isLoading` prop (which is required if `children` are passed in). "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4812",
+ "title": "[EuiDualRange] Should only fire change events when user lets go of endpoint",
+ "user": {
+ "login": "thomasneirynck",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1833023?v=4",
+ "html_url": "https://github.com/thomasneirynck"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-05-18T18:54:21Z",
+ "author_association": "NONE",
+ "body": "Raised here https://github.com/elastic/kibana/pull/99661\r\n\r\nThe `EuiDualRange` component fires change-events, while the user is still holding on to the end-points. This causes unnecessary updates."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4809",
+ "title": "[EuiInMemoryTable, EuiSearchBar] Query and filter discrepancies",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-05-18T16:20:27Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It seems like the fix for this would be to wrap our search filter values in double-quotes (which I think @jen-huang mentioned here: https://github.com/elastic/kibana/issues/95900#issuecomment-812177522), but that's demonstrating some odd behavior for me with the EUI `InMemoryTable` component:\r\n\r\n![Kapture 2021-05-14 at 13 15 05](https://user-images.githubusercontent.com/6766512/118305819-83032100-b4b6-11eb-9537-eee16cdfae1b.gif)\r\n\r\nI added logic to wrap the value for each filter in `\"\"`, but selecting the filter from the dropdown causes no results to be found. Manually typing (or cut/pasting as in the above GIF) produces the correct results. \r\n\r\nMaybe someone with more experience working with this EUI component can offer some insight here? I tracked down this issue that seems to explain the special character escaping logic with double quotes: https://github.com/elastic/eui/pull/3432\r\n\r\n_Originally posted by @kpollich in https://github.com/elastic/kibana/issues/87036#issuecomment-841388505_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4807",
+ "title": "[EuiCollapsibleNav] document is not defined when using CollapsibleNav",
+ "user": {
+ "login": "Paku580",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33893557?v=4",
+ "html_url": "https://github.com/Paku580"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-05-18T10:31:20Z",
+ "author_association": "NONE",
+ "body": "I tried to add a `EuiCollapsibleNav` to your nextjs eui example here https://elastic.github.io/next-eui-starter/. This worked until i decided to restart the server. Then i got this weird error \"document is not defined\". \r\n\r\nStackTrace:\r\n\r\n```\r\nReferenceError: document is not defined\r\n at EuiOverlayMask (webpack-internal:///./node_modules/@elastic/eui/es/components/overlay_mask/overlay_mask.js:64:78)\r\n at processChild (.../next-eui-starter/node_modules/react-dom/cjs/react-dom-server.node.development.js:3353:14)\r\n at resolve (.../next-eui-starter/node_modules/react-dom/cjs/react-dom-server.node.development.js:3270:5)\r\n at ReactDOMServerRenderer.render (.../next-eui-starter/node_modules/react-dom/cjs/react-dom-server.node.development.js:3753:22)\r\n at ReactDOMServerRenderer.read (.../next-eui-starter/node_modules/react-dom/cjs/react-dom-server.node.development.js:3690:29)\r\n at renderToString (.../next-eui-starter/node_modules/react-dom/cjs/react-dom-server.node.development.js:4298:27)\r\n at Object.renderPage (.../next-eui-starter/node_modules/next/dist/next-server/server/render.js:54:854)\r\n at Function.getInitialProps (webpack-internal:///./node_modules/next/dist/pages/_document.js:141:19)\r\n at loadGetInitialProps (.../next-eui-starter/node_modules/next/dist/next-server/lib/utils.js:5:101)\r\n at renderToHTML (.../next-eui-starter/node_modules/next/dist/next-server/server/render.js:54:1145)\r\n at runMicrotasks ()\r\n at processTicksAndRejections (internal/process/task_queues.js:93:5)\r\n at async .../next-eui-starter/node_modules/next/dist/next-server/server/next-server.js:112:97\r\n at async .../next-eui-starter/node_modules/next/dist/next-server/server/next-server.js:105:142\r\n at async DevServer.renderToHTMLWithComponents (.../next-eui-starter/node_modules/next/dist/next-server/server/next-server.js:137:387)\r\n at async DevServer.renderToHTML (.../next-eui-starter/node_modules/next/dist/next-server/server/next-server.js:138:522)\r\n```\r\nI then found out that this starter example doesn't use babel/polyfill so I thought this might be causing the problem.\r\nSo I added babel and the .babelrc file at the root of the project with following configuration:\r\n\r\n```json\r\n{\r\n \"comments\": true,\r\n \"presets\": [\r\n [\"@babel/env\", {\r\n \"useBuiltIns\": \"usage\",\r\n \"corejs\": 3,\r\n \"modules\": \"commonjs\"\r\n }],\r\n [\"@babel/typescript\", { \"isTSX\": true, \"allExtensions\": true }],\r\n \"@babel/react\"\r\n ],\r\n \"plugins\": [\r\n \"@babel/plugin-syntax-dynamic-import\",\r\n \"pegjs-inline-precompile\",\r\n \"add-module-exports\",\r\n \"@babel/proposal-object-rest-spread\",\r\n \"@babel/proposal-class-properties\"\r\n ]\r\n}\r\n```\r\n\r\nThis is the code i modified in the _app.tsx while trying to add the CollapsibleNav:\r\n\r\n```tsx\r\nimport { AppProps } from 'next/app';\r\nimport React, { FunctionComponent, useState } from 'react';\r\nimport {\r\n EuiCollapsibleNav,\r\n EuiCollapsibleNavGroup,\r\n EuiFlexGroup,\r\n EuiFlexItem,\r\n EuiHeader,\r\n EuiHeaderLogo,\r\n EuiHeaderSectionItemButton,\r\n EuiIcon,\r\n EuiListGroup,\r\n EuiPage,\r\n} from '@elastic/eui';\r\n\r\nimport './app.scss';\r\n\r\nimport { EuiListGroupItemProps } from '@elastic/eui/src/components/list_group/list_group_item';\r\n\r\nconst EuiApp: FunctionComponent = ({ Component, pageProps }) => {\r\n const [navIsopen, setNavIsOpen] = useState(true);\r\n const LearnLinks: EuiListGroupItemProps[] = [\r\n { label: 'Docs', href: '#/navigation/collapsible-nav' },\r\n { label: 'Blogs', href: '#/navigation/collapsible-nav' },\r\n { label: 'Webinars', href: '#/navigation/collapsible-nav' },\r\n { label: 'Elastic.co', href: 'https://elastic.co' },\r\n ];\r\n const collapsibleNav = (\r\n setNavIsOpen(!navIsopen)}>\r\n \r\n \r\n }\r\n onClose={() => setNavIsOpen(false)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n const leftSectionItems = [\r\n collapsibleNav,\r\n // eslint-disable-next-line react/jsx-key\r\n Elastic ,\r\n ];\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n >\r\n );\r\n};\r\n\r\nexport default EuiApp;\r\n\r\n```\r\n\r\nI tried several things to solve this none of it worked yet.\r\nSince the starter example uses an older version I tried upgrading it but that didn't solve it either.\r\n\r\nI am out of ideas and don't know if this is an actual issue in elastic ui or I am just missing any specific configuration.\r\nFollowing this doc https://elastic.github.io/eui/#/layout/header#the-elastic-navigation-pattern the code seems right so I guess I am missing some configuration but couldn't find anything about it. "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4806",
+ "title": "[EuiComboBox] Popover position not rendering properly",
+ "user": {
+ "login": "Praveer-Nair",
+ "avatar_url": "https://avatars.githubusercontent.com/u/66199264?v=4",
+ "html_url": "https://github.com/Praveer-Nair"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 7,
+ "created_at": "2021-05-18T05:38:11Z",
+ "author_association": "NONE",
+ "body": "Hi Team,\r\n\r\nIn my application I am using elastic UI.\r\nI have used EuiComboBox. When i click on combo box it shows options but there is a gap in between as shown below.\r\n\r\n![comboUI](https://user-images.githubusercontent.com/66199264/118594739-8a347280-b7c7-11eb-8dcb-0a2e2a8b5927.png)\r\n\r\nWhen I inspected I found that 'top' css is getting applied by default on the element as shown below.\r\n\r\n![comboCss](https://user-images.githubusercontent.com/66199264/118594904-c667d300-b7c7-11eb-9d5e-8de14f282e37.png)\r\n\r\nBelow metioned is the code.\r\n\r\n```\r\n \r\n```\r\nCan you please help me out in fixing this.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4800",
+ "title": "React 17",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-05-14T14:13:14Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "We will be upgrading to React 17 in the near future\r\n\r\n_Originally posted by @thompsongl in https://github.com/elastic/eui/issues/4250#issuecomment-725518671_\r\n\r\nAny chance for an ETA on this? I know you're incredibly busy atm, but this would be greatly appreciated; EUI is the only dependency I have which has not yet upgraded. \r\n\r\nI'm also now using npm 7, which is far stricter in versioning, which means I can no longer get away with depending on React 17; I have to use `--force` which disables all safety measures, not just version overrides. "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4797",
+ "title": "[EuiButton] Better communicate `isLoading` to assistive tech",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 7,
+ "created_at": "2021-05-13T22:43:22Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Issue\r\nLoading states aren't communicated to screen readers\r\n\r\n## Fix\r\n1. **Include `` with buttons**\r\n\tWhy `role=\"status\"`? This role acts as a live region that will allow us to notify assistive tech that something changed without a user having to do anything, even if they've navigated away from the button.\r\n\tWhy `aria-atomic=\"true\"`? This will tell the assistive tech to read the whole message instead of just the word that changed. (Because we don't know what content will be in the button, this is the safer option.)\r\n\r\n2. **If/When `isLoading` changes, pipe the new button text into the `` we setup**\r\n\tIf the text didn't change, make some up by appending \"is loading\" to the button text when `isLoading=true`\r\n\r\n3. **Clear the `` text after 2 seconds**\r\n\tEven though we set `aria-atomic=\"true\"` above, support is mixed so it's good practice to clear the text if you want to help ensure you're reading the whole string. \r\n\tWhy 2 seconds? Because there's no way to know when the assistive tech might have finished reading it so it's a good guess at \"this should have finished by now...\"\r\n\r\n## Example DOM\r\n### Initial render\r\n```tsx\r\n \r\nClick me to load data \r\n```\r\n### Button is loading\r\n```tsx\r\nLoading data... \r\nLoading data... \r\n```\r\n### Button is done loading\r\n```tsx\r\nYour data is ready \r\nYour data is ready \r\n```\r\n\r\n### More details\r\nhttps://adrianroselli.com/2021/01/multi-function-button.html"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4795",
+ "title": "[EuiDataGrid] Expose prop to control number of prefetched rows for virtualized scrolling",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-05-12T15:18:37Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Right now it's not possible to control how many rows of the virtualized table body get preloaded and the current settings are pretty conservative in pre-rendering rows.\r\n\r\nAs it depends on the certain context whether more pre-rendering makes sense, we should allow the consumer to control this setting by setting a prop on the data grid."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4786",
+ "title": "[i18n] `core.euiFilterButton.filterBadge` is setting hardcoded values",
+ "user": {
+ "login": "afharo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5469006?v=4",
+ "html_url": "https://github.com/afharo"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-05-10T14:35:18Z",
+ "author_association": "MEMBER",
+ "body": "The i18n label `core.euiFilterButton.filterBadge` receives a value `filterCountLabel` that is calculated depending on other value:\r\n\r\nhttps://github.com/elastic/kibana/blob/5f618da802228025b8225ff36222d02c95708230/src/core/public/i18n/i18n_eui_mapping.tsx#L503-L507\r\n\r\nThe problem is that the hardcoded values are not localized.\r\n\r\nI think we can fix that by referencing a new `i18n.translate('core.euiFilterButton.filterBadgeActive', { defaultValue: 'active' })` and `i18n.translate('core.euiFilterButton.filterBadgeAvailable', { defaultValue: 'available' })`"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4783",
+ "title": "[EuiIcon] Early setState yields a console error",
+ "user": {
+ "login": "closingin",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2735603?v=4",
+ "html_url": "https://github.com/closingin"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 7,
+ "created_at": "2021-05-06T12:20:11Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hello guys!\r\n\r\nI just noticed that there's a little bug on the `EuiIcon` component, as a `this.setState` is called too early in the process, yielding the following console error : `Warning: Can't call setState on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to 'this.state' directly or define a 'state = {};' class property with the desired state in the EuiIcon component.`\r\n\r\nLooking at the codebase, the problem lies in the component constructor on [l.594](https://github.com/elastic/eui/blob/master/src/components/icon/icon.tsx#L594) where `loadIconComponent` is called, triggering the `setState` on [l.635](https://github.com/elastic/eui/blob/master/src/components/icon/icon.tsx#L635)\r\n\r\nI don't have much background in this library, but from what I see you're building an icon cache for every `EuiIcon` that gets spawned, to improve rendering performance of other `EuiIcon`s with the same `iconType`? If that is so, I think moving the problematic code to `componentDidMount` would fix the problem without breaking much things.\r\n\r\nI'm sorry that I don't have the time to open a PR :pensive: "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4777",
+ "title": "[EuiSuperDatePicker] Crashes and throws `Invalid time value` for edge case values",
+ "user": {
+ "login": "jloleysens",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8155004?v=4",
+ "html_url": "https://github.com/jloleysens"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-05-04T12:44:31Z",
+ "author_association": "NONE",
+ "body": "## Summary\r\n\r\nUsing the super time picker in Kibana can lead to UI crashing for edge case values (see https://github.com/elastic/kibana/issues/91138).\r\n\r\n## How to reproduce\r\n\r\n1. Navigate here https://eui.elastic.co/#/forms/super-date-picker#configurations\r\n2. Select “days ago” and entering a value of 9 9s\r\n3. See error\r\n\r\nIs there a recommended way to handle this outside of the elastic/eui lib such that we can not crash and guide users to the erroneous input?\r\n\r\n## Gif\r\n\r\n![supertimepickerbug](https://user-images.githubusercontent.com/8155004/117005090-21d59380-ace7-11eb-87ec-af7897b879f9.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4774",
+ "title": "[Docs] Use `htmlIdGenerator()()` in EuiFlyout examples for `aria-labelledby`",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-04-30T20:07:43Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It's a bit of a chore, but might it be worth it:\r\n\r\nI've found that folks will sometimes copy our static ids from docs into their apps and then will run into multiple duplicate id issues.\r\n\r\nThis one is unlikely to cause that issue... But thought I'd bring it up anyways just for consistently having the same example of always using unique ids.\r\n\r\n_Originally posted by @myasonik in https://github.com/elastic/eui/pull/4713#discussion_r624039147_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4769",
+ "title": "Should we extend `.npmignore`?",
+ "user": {
+ "login": "afharo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5469006?v=4",
+ "html_url": "https://github.com/afharo"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-04-29T16:44:55Z",
+ "author_association": "MEMBER",
+ "body": "I've noticed that we are shipping to NPM `src/`, `test-env/`, and many of the dot-files and dot-folders. Should we review what we're publishing to, hopefully, reduce the NPM bundle size (62.6MB right now, according to [NPMJS](https://www.npmjs.com/package/@elastic/eui))\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4766",
+ "title": "Rename positive/negative palettes to be culturally inclusive",
+ "user": {
+ "login": "markov00",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1421091?v=4",
+ "html_url": "https://github.com/markov00"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-04-29T13:15:06Z",
+ "author_association": "MEMBER",
+ "body": "We have two single hues, sequential, color palettes named `Positive` and `Negative` \r\n\r\n \r\n\r\nThe same naming is also reused within Kibana, in the color palette dropdown menu for visualization (lens/visualize)\r\n\r\n \r\n\r\nThe reason is that the association of `green = Positive` and `red = Negative` are mostly a western region type of association, where some eastern regions use the opposite association, where `green = Negative` and `red = Positive`.\r\n\r\nJust take a look at the Japanese stock market:\r\n\r\n![image](https://user-images.githubusercontent.com/1421091/116554771-dc3a5480-a8fb-11eb-884b-7ce29c536ebb.png)\r\n\r\n![image](https://user-images.githubusercontent.com/1421091/116556523-d3e31900-a8fd-11eb-830e-a23f78e00a7e.png)\r\n\r\n\r\nI'd like to propose a name change, toward culturally neural names, like `Greens` and `Reds` or something similar.\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4762",
+ "title": "[Docs] arrow key triggers navigation UX",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-04-27T23:01:25Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Question\r\n\r\nEUI docs have a hidden way to navigate where left/right arrows will move you to the next/previous page (per the sidebar order).\r\n\r\nWhat do folks think of it? Do you use it?\r\n\r\n------\r\n\r\n## My experience\r\n\r\nA cursory look at `git blame` (https://github.com/elastic/eui/blob/master/src-docs/src/views/app_view.js#L121-L149) makes it look like it's been around for a long while so I guess it's not a big deal but in the past couple of days I've run into it a few times and always by accident so it's been quite frustrating recently.\r\n\r\n- I was looking at some of our DataGrid docs and _kept_ accidentally triggering it. It's a pretty keyboard heavy area and a misclick when you're going quick can send you to a different page.\r\n- I'm looking at some bugs (in a local branch) that cause the whole page to scroll horizontally so troubleshooting is tricky because I can't scroll left/right with my arrows keys which is my instinct to do.\r\n\r\nBetween it being not very discoverable, and my negative experience, I'm curious to know if others like it."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4761",
+ "title": "[EuiColorStops] Step value must be greater or equal to 1",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-04-27T13:49:38Z",
+ "author_association": "NONE",
+ "body": "While testing the EuiColorStops for the Lens editor we found out that the minimum step allowed by the component must be greather or equal to 1.\r\nWhile there are workarounds to this, it would be useful to handle this internally within the component.\r\n\r\nThe user case that showed the bug was relative to percentage values, where `min` and `max` where set based on the data (for instance 0 - 0.92), and stops where mapped within that range. This triggered the bug:\r\n\r\n```\r\nUncaught Error: The value of 0.9391536673440342 is not included in the possible sequence provided by the step of 1.\r\n at EuiRangeTrack.validateValueIsInStep (range_track.js:84)\r\n at EuiRangeTrack.render (range_track.js:149)\r\n at finishClassComponent (react-dom.development.js:18470)\r\n at updateClassComponent (react-dom.development.js:18423)\r\n at beginWork$1 (react-dom.development.js:20186)\r\n at HTMLUnknownElement.callCallback (react-dom.development.js:336)\r\n at Object.invokeGuardedCallbackDev (react-dom.development.js:385)\r\n at invokeGuardedCallback (react-dom.development.js:440)\r\n at beginWork$$1 (react-dom.development.js:25780)\r\n at performUnitOfWork (react-dom.development.js:24695)\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4758",
+ "title": "[EuiColorStops] Component is too difficult for a user to interact with, can we use a form?",
+ "user": {
+ "login": "wylieconlon",
+ "avatar_url": "https://avatars.githubusercontent.com/u/666475?v=4",
+ "html_url": "https://github.com/wylieconlon"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-04-26T22:59:23Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hi folks, we have been trying to use the EuiColorStops component in Lens as part of [dynamic coloring](https://github.com/elastic/kibana/pull/95217), and earlier today we had a meeting where we decided that we would prefer a simpler overall flow, more in line with what other Kibana apps are choosing to do. For example, more like what Maps has:\r\n\r\n \r\n\r\nWe are wondering if the color stop component can be modified so that it uses a form input instead of the complex sliders that it has today. If not, we will plan to implement our own similar to what other teams have chosen in the past. The main reasons for this request are:\r\n\r\n* This pattern is what is already used in Kibana, it's familiar\r\n* Optimizes well for simple color rules like \"yellow if above 75, red if above 90\".\r\n* The popover/thumb component of the color stops jumps around a lot, especially when trying to enter an exact value, and this is not a problem for a form-based UI\r\n* We observed performance issues in the Lens integration that made the color stops harder to interact with\r\n\r\nHere is a video of me interacting with the component in a screen width similar to what Lens has available. The first 30 seconds of the video are focused on the mouse interactions that I found confusing, and the last 30 seconds are focused on the keyboard interactions that I found confusing.\r\n\r\nhttps://user-images.githubusercontent.com/666475/116160042-49ad7180-a6bf-11eb-8272-b7981ecfa43d.mov\r\n\r\nDoes this feedback make sense, and if so, what is next?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4756",
+ "title": "[EuiPopover] Popover is placed above header (z-index)",
+ "user": {
+ "login": "akaRem",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1472728?v=4",
+ "html_url": "https://github.com/akaRem"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-04-26T14:56:56Z",
+ "author_association": "NONE",
+ "body": "![image](https://user-images.githubusercontent.com/1472728/116103481-ea943080-a6af-11eb-8a1c-483d0990c346.png)\r\n![image](https://user-images.githubusercontent.com/1472728/116103713-262efa80-a6b0-11eb-84b3-bb1ec2b91f38.png)\r\n\r\nto reproduce: \r\n\r\n- go to https://elastic.github.io/eui/#/display/tour \r\n- scroll down to example\r\n\r\nor \r\n\r\n- go to https://elastic.github.io/eui/#/layout/popover\r\n- in first example click show popover, scroll down a little bit\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4749",
+ "title": "[EuiColorStop] Would provide event for color thumb click, and way to customize the specific popup editor",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-04-23T09:34:03Z",
+ "author_association": "NONE",
+ "body": "In [our use case](https://github.com/elastic/kibana/pull/95217) the `EuiColorStop` component provides 2 mandatory stops at the beginning and end of the range.\r\nIn particular the user:\r\n* should not be able to drag the stops from their ends position - but still add new stops in between\r\n* should not be able to modify the stop value in some configurations\r\n* should not be able to delete the extremities stops\r\n\r\nAt the moment we could cover some of these requirements with some workaround, but some of the workaround do not provide the right user experience - for instance override after a user action.\r\nIt would be nice to have a first level support for some of these features via EUI directly.\r\nIn particular having the availability of an handler to be called when the user clicks on a color stop thumb would be useful on this scenario, with the ability to specify specific overrides to the editor component.\r\n\r\nIdeally the handler should provide the stop id/index/some type of identification information.\r\nOn the same event the specific configuration override for the popup editor would be provided and it would be merged with the default + `editor props forwarded` + `valueInputProps`.\r\n\r\nWith this type of solution we would be able, for instance, to disable the delete button when the user clicks on one stop at the extremity of the range, or show the value input as disabled in other contexts.\r\n\r\nOne solution I thought would be something like `onStopClicked: (...stop identifier) => { ...editor configuration override }`. Maybe there are other patterns/design I didn't think of yet."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4741",
+ "title": "[Infra] Add `noindex` tag to PR preview builds",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-04-21T15:54:58Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "As seen in https://github.com/elastic/eui/pull/4727#pullrequestreview-641262281, we should prevent search indexing of the PR preview builds."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4736",
+ "title": "[EuiResizableContainer] Needs `isCollapsed` option",
+ "user": {
+ "login": "KishorBudhathoki10",
+ "avatar_url": "https://avatars.githubusercontent.com/u/45034282?v=4",
+ "html_url": "https://github.com/KishorBudhathoki10"
+ },
+ "labels": [
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-04-20T10:58:07Z",
+ "author_association": "NONE",
+ "body": "It will be nice to have a props like **isCollapsed** for **Resizeable Panel**. I have a page where I have a resizable component. But when I go from one page to another the resizeable panel goes back to its previous state. I can manage the size of the panels but not collapsible state."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4730",
+ "title": "Add toolbar button styles",
+ "user": {
+ "login": "ryankeairns",
+ "avatar_url": "https://avatars.githubusercontent.com/u/446285?v=4",
+ "html_url": "https://github.com/ryankeairns"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-04-19T13:30:27Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Perhaps this could instead be a discussion topic, but Lens and the presentation toolbar (Dashboard, Canvas) are using the same toolbar button styles which smells like a possible EUI addition (e.g. new button group variation?).\r\n\r\nThey've been operating with separate sets of styles and, as of this writing, are having to make [simultaneous](https://github.com/elastic/kibana/pull/97237) [adjustments](https://github.com/elastic/kibana/issues/97454) due to the Amsterdam switch in order to gain more contrast with the underlying background color. \r\n\r\nThe latest design proposal is here (adding a border):\r\n\r\n "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4726",
+ "title": "[EuiBasicTable] External checkbox selection",
+ "user": {
+ "login": "tosbaha",
+ "avatar_url": "https://avatars.githubusercontent.com/u/971530?v=4",
+ "html_url": "https://github.com/tosbaha"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-04-17T08:46:49Z",
+ "author_association": "NONE",
+ "body": "If I select items by using the `selection` property and then clear that array, checkboxes don't update. Here is the minimal demo. Select any item and then hit the button. You'll see that, even though the `setSelectedItems` function clears the array which also removes the button, but checkboxes still remain in a checked state.\r\n\r\n```javascript\r\nimport ReactDOM from 'react-dom';\r\nimport '@elastic/eui/dist/eui_theme_light.css';\r\nimport React,{useState} from 'react';\r\n\r\nimport {\r\n EuiButton,\r\n EuiBasicTable,\r\n EuiFlexItem,\r\n} from '@elastic/eui';\r\n\r\n\r\nfunction DemoTable() {\r\n const docs = [\r\n {\r\n _id:1,\r\n \"name\":\"John\",\r\n \"email\":\"john@email.com\",\r\n \"online\":true\r\n },\r\n {\r\n _id:2,\r\n \"name\":\"Jane\",\r\n \"email\":\"jane@email.com\",\r\n \"online\":true\r\n }\r\n \r\n ]\r\n \r\n const [selectedItems, setSelectedItems] = useState([]);\r\n const onClickDoSomething = () => {\r\n console.log('Did something, removing selection');\r\n setSelectedItems([]); //Doesn't remove checkboxes\r\n\r\n }\r\n const onSelectionChange = (selectedItems) =>{\r\n setSelectedItems(selectedItems);\r\n\r\n }\r\n const renderSelectAllButton = () => {\r\n if (selectedItems.length === 0) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n \r\n Do Something with {selectedItems.length} Users\r\n \r\n \r\n );\r\n };\r\n\r\n const selection = {\r\n selectable: (user) => user.online,\r\n selectableMessage: (selectable) =>\r\n !selectable ? 'User is currently offline' : undefined,\r\n onSelectionChange: onSelectionChange,\r\n };\r\n const columns = [\r\n {\r\n field: \"_id\",\r\n name: \"ID\",\r\n sortable: true\r\n },\r\n {\r\n field: \"name\",\r\n name: \"Name\",\r\n sortable: true\r\n },\r\n {\r\n field: \"email\",\r\n name: \"Email\",\r\n sortable: true\r\n },\r\n ]\r\n\r\n\r\n return (\r\n <>\r\n {renderSelectAllButton()}\r\n \r\n >\r\n )\r\n\r\n}\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4724",
+ "title": "[EuiDataGrid] Sort using hidden column ",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-04-16T13:19:41Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Let's say the user wants to order a table by date of creation. \r\nThey don't necessarily care when exactly the item was created, or its id(s), they just want want to see them in the \"most recent\" order. As such, it is likely they will want to hide these columns or these columns were hidden by default.\r\n\r\nCurrently, if you sort the date/id column and then hide it, the sort is not applied - and the column is missing from the \"Sort\" \r\ndropdown header. And, if you show the column again, the sort has been lost. \r\n\r\nAnother use case for this is for when the table is displaying data from a query that the user cannot customise*** and the UI instead sorts the data so that the least relevant rows are shown last.\r\n\r\n (*** I know querying and filtering is important and should be implemented where possible but, in this instance, I cannot yet send a custom query to the backend and had feedback that excluding the rows was misleading as first-time users were unsure why a row was missing; it's a case of \"just display everything\", disgusting I know)\r\n \r\n Is this something EUI would be willing to adopt, or is this by design?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4720",
+ "title": "[Docs] Writing guidelines with examples tab",
+ "user": {
+ "login": "miukimiu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2750668?v=4",
+ "html_url": "https://github.com/miukimiu"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 2767044132,
+ "node_id": "MDU6TGFiZWwyNzY3MDQ0MTMy",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-changelog",
+ "name": "skip-changelog",
+ "color": "FC0E3C",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-04-15T17:30:23Z",
+ "author_association": "MEMBER",
+ "body": "### Summary\r\n\r\nThis draft PR is for @gchaps add some examples.\r\n\r\nI need to make this more generic in a way that works with multiple tabs not only \"guidelines\" and\"examples\". Maybe instead of calling the method `createGuidelines()` maybe call it `createTabbedPage()`.\r\n\r\nTo keep the scroll to functionality I had to nest the submenu. **Is it a good idea to have 3 levels?** 🤔\r\n\r\nSome features:\r\n- Each `h2` with an `id` creates a submenu\r\n\r\nTo do:\r\n\r\n- [ ] Allow searching the 3rd level items \r\n\r\n![Writing-Elastic-UI-Framework (1)](https://user-images.githubusercontent.com/2750668/114913327-fd3d7880-9e18-11eb-820c-076886f4b59a.png)\r\n \r\n\r\n### Checklist\r\n\r\n- [ ] Check against **all themes** for compatibility in both light and dark modes\r\n- [ ] Checked in **mobile**\r\n- [ ] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**\r\n- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**\r\n- [ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [ ] Checked for **breaking changes** and labeled appropriately\r\n- [ ] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [ ] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4716",
+ "title": "Importing any component from elastic/eui to codesandbox in Safari throws maximum call stack size exceeded",
+ "user": {
+ "login": "mbondyra",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4283304?v=4",
+ "html_url": "https://github.com/mbondyra"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-04-15T09:50:25Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Steps to reproduce:\r\n1. Open Safari browser (my version is 14.0 (15610.1.28.1.9, 15610)\r\n2. Go to https://codesandbox.io/s/romantic-ardinghelli-wr9j1?file=/index.js\r\n3. Uncomment the line 4: `import { EuiText } from \"@elastic/eui\";`\r\n\r\nThe moment it gets uncommented, codesandbox throws an error: \r\n \r\n\r\nIt works well with Chrome.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4705",
+ "title": "[EuiDataGrid] `stripes` in `gridStyle` alternates bewteen pages",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-04-13T14:36:23Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Prior to virtualisation, the config\r\n```\r\ngridStyle={{\r\n stripes : true\r\n}}\r\n```\r\nalways started the first row of a page with a white background.\r\nNow, the first row will alternate white/grey on odd/even pages respectively, as if the pattern were continuing across pages.\r\n\r\nSee also #4483 "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4702",
+ "title": "[EuiFormRow] Don't wire up `htmlFor` for `` elements",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-04-12T19:01:28Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It's technically, semantically ok and it works* though it's rarely the thing that someone would actually want and is likely to just causes confusion.\r\n\r\n*I've anecdotally heard that it doesn't work consistently but don't know a full support matrix. \r\n\r\n_Corresponding Kibana issue: https://github.com/elastic/kibana/issues/96668_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4698",
+ "title": "[EuiFilePicker] Missing localization for \"Remove\" text",
+ "user": {
+ "login": "stil",
+ "avatar_url": "https://avatars.githubusercontent.com/u/714004?v=4",
+ "html_url": "https://github.com/stil"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-04-11T00:08:50Z",
+ "author_association": "NONE",
+ "body": "https://github.com/elastic/eui/blob/cbb2601481149f29d7040fa0ed05f001b9993bc2/src/components/form/file_picker/file_picker.tsx#L198"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4693",
+ "title": "Conditional Rendering of useEuiI18n causes React Warning",
+ "user": {
+ "login": "fairhat",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7697610?v=4",
+ "html_url": "https://github.com/fairhat"
+ },
+ "labels": [],
+ "comments": 4,
+ "created_at": "2021-04-08T11:53:17Z",
+ "author_association": "NONE",
+ "body": "Using the ```useEuiI18n``` hook on conditional rendering causes a react warning:\r\n\r\nExample code: \r\n```ts\r\nconst Component = () => {\r\n const [option, setOption] = React.useState(0)\r\n \r\n React.useEffect(() => setInterval(100, setOption(option + 1)), [])\r\n let text = null\r\n switch(option) {\r\n case 0:\r\n text = useEuiI18n('zero', 'ZERO')\r\n break;\r\n case 1:\r\n text = useEuiI18n('one', 'ONE')\r\n break;\r\n default:\r\n text = \"something else\"\r\n break;\r\n }\r\n\r\n return ({text}
)\r\n}\r\n\r\n```\r\n\r\n```\r\nWarning: React has detected a change in the order of Hooks called by wrappedComponent. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\r\n\r\n Previous render Next render\r\n ------------------------------------------------------\r\n1. useState useState\r\n2. useState useState\r\n3. useCallback useCallback\r\n4. useRef useRef\r\n5. useDebugValue useDebugValue\r\n6. useEffect useEffect\r\n7. useContext useContext\r\n8. undefined useContext\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n```\r\n\r\nSuggestion:\r\nA new hook called something like \"useEuiI18nFn()\" which returns a function *once* and can then be used to get i18n values\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4685",
+ "title": "[EuiBasicTable] Trigger `onClick` on `keypress` not `keyup`",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-04-04T20:12:20Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The `EuiKeyboardAccessible` currently triggers the `onClick` when Enter or Space is pressed in the `onKeyUp` method. I think this should rather happen in the `onKeyPress` instead to be aligned with browser behavior.\r\n\r\nBrowser will trigger button clicks after the keypress, and thus also properly work with repeating key events, i.e. having a `button` focused and keep pressing Enter will result in the following event order:\r\n\r\n* keydown\r\n* keypress\r\n* click\r\n* keydown\r\n* keypress\r\n* click \r\n* ... (keep repeating those while button is down)\r\n* keyup\r\n\r\nI think we should align the `EuiKeyboardAccessible` to also trigger the click on keypress not on keydown to (a) align with the standard browser behavior and (b) the current implementation can cause some very unnice side-effects, since the browser is triggering still on keypress. The way I run currently into that problem is:\r\n\r\nI have a regular button that is on click closing a flyout. After that closing the last element on the page will regain it's focus: it was the \"fake button\" (something wrapped in `EuiKeyboardAccessible`) that opened the flyout. Since the click is triggered before the keyup, the \"fake button\" will now receive the keyup and trigger the click on it, directly reopening the flyout. The only way to currently work around that is to prevent all your real buttons that might run into that problem from triggerig their click on keypress, and instead manually trigger click on keyup (i.e. changing the browser's default behavior). I think thus we should consider aligning better to the browser behavior and trigger onClick on keyup.\r\n\r\nI am not sure if there might be edge-cases I am overseing that this would cause a problem, thus I wanted to put this issue up to see if there are any concerns around it.\r\n\r\ncc @chandlerprall @myasonik "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4677",
+ "title": "Define color names ",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-03-30T17:53:38Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Not sure on the specifics of this issue so hoping to just kick off some conversation around this. \r\n\r\nIn EUI (but also in Charts and Kibana) we sometimes refer to colors visually by a color swatch. Currently, the best that we can do is give screen readers a hex code of the color which isn't a great experience.\r\n\r\nSo, ideally, we'd give names to colors. \r\n\r\nThere are two types of colors that we'd have to name: defined ones and generated one.\r\n\r\n1. Defined ones are colors that are in our palettes and have consistent hex codes. I'm not sure what the best way to get names for the codes into our templates.\r\n\r\n2. Generated ones are colors that come from, for instance, EuiColorPicker and could be any hex. For those we'd need to be able to come up with names on the fly which is tricky because there are 16,777,216 colors in RGB space... Not digging into it too far, but there are several packages that claim to do this but I'm sure they don't generate some ~17M names so they're probably not perfect. But it's probably better than hex codes still.\r\n\r\nWe also don't need to solve all of this at once. If solving just the defined colors is a more feasible starting ground, that would already be a good step forward. "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4676",
+ "title": "[EuiDataGrid] Add an option to use the container's dimensions",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-03-30T15:51:38Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I overrode the CSS for datagrid so that my SideNav and NavBar are still shown when in fullscreen. This is all that was needed:\r\n```CSS\r\n.euiDataGrid--fullScreen {\r\n position: absolute;\r\n}\r\n```\r\nHowever, with the virtualisation update, the table goes off the right of the screen. \r\nThe height is correct because I just so happened to have used the same NavBar height as EUI but I have not applied the SASS mixin as my SideNav has multiple widths. \r\nI understand this use case is probably out-of-scope of your intended usage but I believe the user should always be available to navigate away. \r\n\r\nWould it be possible to add an option that used the above CSS and also calculate its dimensions based off its container?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4675",
+ "title": "[EuiDataGrid] Show footer when there is less than `pageSize` rows ",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-03-30T15:36:58Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Just upgraded from 31.0.0 to 31.12.0 and spotted that datagrids with less than `pageSize` rows don't show the `pageSizeOptions` or `pagination` components. However, they still take up `pageSize * rowHeight - footerHeight` space. As soon as there is exactly `pageSize` rows, the footer is displayed, even though there is only 1 page. \r\n\r\nI would like the footer to always be shown to avoid cumulative layout shift when the number of rows changes. "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4668",
+ "title": "[EuiSelectable] Add support for Indeterminate values",
+ "user": {
+ "login": "jportner",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5295965?v=4",
+ "html_url": "https://github.com/jportner"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 6,
+ "created_at": "2021-03-26T19:46:14Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "#1107 added indeterminate values for EuiCheckbox, but EuiSelectable doesn't have an equivalent.\r\n\r\nKibana needs this in elastic/kibana#67380."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4665",
+ "title": "[EuiDataGrid] Cells styling stick to cell's position when adding new columns",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-03-25T17:19:28Z",
+ "author_association": "NONE",
+ "body": "In Lens we're building a dynamic coloring feature for the datatable, which uses `EuidataGrid` underneath.\r\nOnly numeric cells can be coloured, so nor dates or string cells should have a background-color style set.\r\n\r\nThe code used to color cells in this demo is taken from the `EuiDataGrid` documentation:\r\n\r\nhttps://user-images.githubusercontent.com/924948/112514920-17de7d80-8d96-11eb-8265-1b070170de40.mp4\r\n\r\nScrolling up and down makes cleans up the colouring on the second column rows.\r\n\r\nTo check if that was an issue I've forcefully styled the cell `div` without the `useEffect` and repeated the same scenario:\r\n\r\nhttps://user-images.githubusercontent.com/924948/112515107-452b2b80-8d96-11eb-9e57-24dcbdc23ce6.mp4\r\n\r\nThis time the second column rows won't get any styling.\r\n\r\nI solved this issue on the consumer side by providing a return function to the `useEffect` that will clean it up:\r\n\r\n```js\r\nuseEffect(() => \r\n ...whatever...\r\n return () =>\r\n setCellProps({\r\n style: {\r\n backgroundColor: undefined,\r\n color: undefined,\r\n },\r\n });\r\n}, [...]);\r\n```\r\n\r\nNow new cells are properly cleaned up:\r\n\r\nhttps://user-images.githubusercontent.com/924948/112515488-989d7980-8d96-11eb-8321-ec2f7ad3445c.mp4\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4664",
+ "title": "[EuiColorStops][EuiColorPaletteDisplay] Different representation of palette color scheme when in fixed mode",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-03-25T12:07:44Z",
+ "author_association": "NONE",
+ "body": "I've noticed that in `fixed` mode the `EuiColorPaletteDisplay` editor has a left-shifted representation of a palette, when compared to the one from the `EuiColorStops`.\r\n\r\nThis happens with the same data provided to both, as reproduced here:\r\nhttps://codesandbox.io/s/affectionate-dew-chmnw?fontsize=14&hidenavigation=1&theme=dark\r\n\r\nScreenshot:\r\n \r\n\r\n\r\nWe're using them both [in Lens as to show and edit a palette](https://github.com/elastic/kibana/issues/66192) and it may be confusing the configure one thing watching it one way, then close the panel and finding a different representation"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4656",
+ "title": "VSCode autoimport broken",
+ "user": {
+ "login": "fairhat",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7697610?v=4",
+ "html_url": "https://github.com/fairhat"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 7,
+ "created_at": "2021-03-22T08:16:44Z",
+ "author_association": "NONE",
+ "body": "Hello,\r\n\r\nsince 31.10.0 i've noticed that my vscode imports for eui are broken.\r\nIf I try to import a component, it always points to the absolute node_modules path instead of using \"@elastic/eui\"\r\n\r\nExample:\r\n\r\n```ts\r\nimport { EuiSpacer } from \"@elastic/eui/src/components/spacer/spacer\"; // wrong import\r\n// import { EuiSpacer } from \"@elastic/eui\"; << expected import\r\n\r\nconst Test = () => \r\n```\r\n\r\nI've checked VSCode Issues and while some people seem to have the same problem, it seems to be fixed by TS 4.x.x.\r\nHowever, in my project (TS 4.0.5) this issue still happens and only with Elastic/EUI. All other libraries seem to work just fine.\r\n\r\nDid something change ? Are we now supposed to import components from their absolute paths?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4642",
+ "title": "[EuiDataGrid] Navigate column actions with arrow keys",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-03-15T09:08:23Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "You can navigate to cells with arrow keys, but when you open the column actions popover, navigating those actions with up/down keys no longer work, navigation with tab key works. it would be more user friendly, if up/down keys would work in this context.\r\n\r\n![Bildschirmfoto 2021-03-15 um 10 04 31](https://user-images.githubusercontent.com/463851/111129376-509c7c80-8576-11eb-8dbe-7d9df9c57618.png)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4640",
+ "title": "[EuiFilePicker] Programmatically changing local files state/validation",
+ "user": {
+ "login": "LvlAndFarm",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5160036?v=4",
+ "html_url": "https://github.com/LvlAndFarm"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-03-13T17:56:52Z",
+ "author_association": "NONE",
+ "body": "I'm using the file picker to select a list of images to upload to a service. There is a max file size limit of 32MB, which I do check when onChange() is called, and I don't process the filelist. But despite that, the file is shown as selected, because the file picker has its own local state that it updates with the filelist without any possible checking or validation. \r\n\r\nThis wouldn't be an issue if you could pass in the filelist and make it a controlled input just like all the other Eui form controls. A single `files` field would be sufficient, and then any validation, checking, or changes not initiated by the user's direct interaction, can be automatically done by changing the files field."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4637",
+ "title": "[CSS in JS] Possible accessibility features/options to build in",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-03-11T17:51:23Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The transfer to applying a theme via JS, gives us the opportunity to have more user-level settings that can affect all of the application. Here are a few:\r\n\r\n### Easy:\r\n\r\n- [ ] **Font family**: Some disabilities make it hard to read specific font families or their experience can be improved by allowing them to provide a font-family of their choice. Example: Dislexia\r\n- [ ] **Focus rings always on**: Some none keyboard users still might have a better experience if they can always see the current focus.\r\n- [ ] **No motion**: Without relying on an OS-wide setting, they can turn off all transitions/animations.\r\n\r\n### Hard:\r\n\r\n- [ ] **Increased contrast**: Allow the user to ask for higher than the AA recommended level. This is hard mainly because it requires lots of testing"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4636",
+ "title": "[EuiDataGrid] Grouped rows and summary rows",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-03-11T14:50:03Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "For some types of data it makes sense to collapse/expand some rows, not repeating the same value for this group and adding sub-summary rows for these groups\r\n\r\n \r\n\r\nKibana reference issue: https://github.com/elastic/kibana/issues/61470\r\n\r\nOpen questions (this list is incomplete):\r\n* Should this be possible in a nested way as shown in the screenshot or just feature a single level for collapsing/expanding?\r\n* How is the functionality exposed? As rowspan/colspan and special styling plus everything else handled by the consumer or a more high level API?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4635",
+ "title": "[EuiDataGrid]: Support hierarchical columns",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-03-11T14:45:29Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "If there are a lot of columns, in some cases it makes sense to group them in a hierarchical way:\r\n \r\n\r\nReference: https://github.com/elastic/kibana/issues/94433\r\n\r\nOpen questions (this list is probably incomplete):\r\n* How is this configured? Providing a hierarchy or allowing multiple rows + colspans?\r\n* Are the cell actions for all levels?\r\n* How does resizing / auto column width work? "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4634",
+ "title": "[EuiDataGrid] Auto-fit rows to content",
+ "user": {
+ "login": "stratoula",
+ "avatar_url": "https://avatars.githubusercontent.com/u/17003240?v=4",
+ "html_url": "https://github.com/stratoula"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2021-03-11T12:41:49Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Right now, the datagrid doesn't display the entire content if the content is long enough. Here is an example of how it looks on the kibana data table visualization, Discover and Lens.\r\n\r\n![image](https://user-images.githubusercontent.com/17003240/110787693-580e0e00-8276-11eb-92d0-19389c6373a2.png)\r\n\r\n![image](https://user-images.githubusercontent.com/17003240/110787949-a6231180-8276-11eb-8adb-f6505e45a915.png)\r\n\r\n![image](https://user-images.githubusercontent.com/17003240/110788039-c521a380-8276-11eb-94d6-92d114d4aaa8.png)\r\n\r\nIt seems that this is not so convenient for our users. We would like to have the ability to display multiline rows as for example we could do on the previous implementation of the datatable.\r\n\r\n![image](https://user-images.githubusercontent.com/17003240/110788700-9eb03800-8277-11eb-9ea7-9382cdf6d8b8.png)\r\n\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4627",
+ "title": "[EuiDataGrid] \"Fit to data\" mode",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-03-09T10:24:48Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Resizing columns is cool, and a lot of spreadsheet tools provide a functionality to \"fit\" a column width to width of the largest cell in this column.\r\n\r\nFor some of the places where data grid is used, this would be helpful as well."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4624",
+ "title": "[EuiCard] Fix `Event` details for `outerOnClick`",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [],
+ "comments": 19,
+ "created_at": "2021-03-08T17:04:12Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nFixes #4583 by converting the `link.click()`method to `link.dispatchEvent(...)`, which allows for propagating the `Event` details (e.g., `metaKey`) from the original click event.\r\n\r\n### Checklist\r\n\r\n~- [ ] Check against **all themes** for compatibility in both light and dark modes~\r\n~- [ ] Checked in **mobile**~\r\n\r\n- [ ] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n\r\n~- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~\r\n~- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~\r\n\r\n- [x] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [x] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [x] Checked for **breaking changes** and labeled appropriately\r\n- [x] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4612",
+ "title": "[EuiSuperDatePicker] Error state relies on color alone",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-03-04T22:37:53Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Example:\r\n \r\n\r\nIt'd seem to make sense to add a bottom border to those inputs like we do for other form error states (well, they're actually `` elements here but they look like inputs so I think the point holds) but then you'd also need to make sure the focus state overrides the invalid state like it does for other inputs. (Otherwise you end up in a situation with no focus state when it's also invalid.)\r\n\r\nOther ideas also welcome!"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4606",
+ "title": "[EuiDataGrid]: Add debug data for functional tests",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-03-04T13:59:57Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Due to virtualization, it became harder to assert whether the data grid is in a valid state in functional tests. Similar to elastic-charts, it would be helpful to add some debug information:\r\n* data grid looks for a flag on the global object: `window.__euiDataGridDebug`\r\n* if it's set to true on render, data grid will add a `data-debug` attribute to the root element of the data grid\r\n* This attribute will contain json encoded meta information about what's rendered:\r\n * number of rows\r\n * column configurations\r\n * pagination\r\n\r\nThis can be used in Kibana functional tests"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4603",
+ "title": "[EuiColorPalettePicker] [EuiSuperSelect] options list does not reposition when input element moves",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-03-03T16:31:03Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "We'll need to reposition the popover when the source element moves.\r\n\r\n![peek_2021-03-03_17-14](https://user-images.githubusercontent.com/313125/109838063-0b399000-7c03-11eb-933e-223f423806cb.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4602",
+ "title": "[EuiDataGrid] Add performance tests",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-03-03T14:46:02Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "So in case EUI will get functional tests, it would be very useful, to create a test, to catch performance regression. \r\n\r\nThe test could render the grid with various documents per page settings, measure the time needed to render, and expect those times to be within a certain range. Due to virtualization there should not be much different between 50 and 500 document (if e.g. virtualization renders 30).\r\n\r\nFor this case it would also be useful to have e.g. a `data-render-complete` attribute"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4601",
+ "title": "[EuiDataGrid] Fixed: Cell styling retains when column position is changed",
+ "user": {
+ "login": "akashgp09",
+ "avatar_url": "https://avatars.githubusercontent.com/u/55311336?v=4",
+ "html_url": "https://github.com/akashgp09"
+ },
+ "labels": [],
+ "comments": 5,
+ "created_at": "2021-03-03T14:15:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Summary\r\n\r\nThis PR Fixes: #4599 \r\n\r\nFixed `EuiDataGrid` retaining cells style when column position is changed.\r\n\r\n**Approach:** By adding a cleanup function inside the useEffect hook fixes this.\r\n\r\n### Screenshots\r\n\r\n**Before**\r\n\r\n![ezgif-4-dda7a459aa3a](https://user-images.githubusercontent.com/55311336/109819111-b9702480-7c59-11eb-8f8f-3c2fdddfb1d7.gif)\r\n\r\n\r\n**After**\r\n\r\n![ezgif-4-ad1d55524d25](https://user-images.githubusercontent.com/55311336/109818257-ce988380-7c58-11eb-87c9-1c29c8350b48.gif)\r\n\r\n### Checklist\r\n\r\n- [x] Check against **all themes** for compatibility in both light and dark modes\r\n- [x] Checked in **mobile**\r\n- [x] Checked in **Chrome**,**Edge**, and **Firefox**\r\n~~- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**~~\r\n~~- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**~~\r\n~~- [ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples~~\r\n~~- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**~~\r\n~~-[ ] Checked for **breaking changes** and labeled appropriately~~\r\n~~- [ ] Checked for **accessibility** including keyboard-only and screenreader modes~~\r\n- [x] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4599",
+ "title": "[EuiDataGrid] Cell styling retains when column position is changed",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-03-03T04:53:04Z",
+ "author_association": "MEMBER",
+ "body": "Note how the green cells retain as you move the column to the left\r\n\r\n![](https://snid.es/2021MAR/gWVJAxc68IajWZl8.gif)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4583",
+ "title": "[EuiCard] onClick loses MouseEvent details",
+ "user": {
+ "login": "pickypg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1501235?v=4",
+ "html_url": "https://github.com/pickypg"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-02-26T04:43:42Z",
+ "author_association": "MEMBER",
+ "body": "While integrating an EUI with React Router 5.1, I noticed that opening `EuiCard`-based links (by clicking the card itself) in new tabs resulted in the current tab also navigating to the link even though I was actively ignoring `onClick` using the suggested mechanism:\r\n\r\n```ts\r\nconst isModifiedEvent = (event: MouseEvent) =>\r\n !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\r\n```\r\n\r\nUpon deeper inspection, I realized that it simply did not recognize that any of those were pressed (on Windows it's normal for `metaKey` to be ignored, but on macOS that's the Command key). Looking at the code, it appears to be because the onClick handler calls the `link.click`, which itself appears unable to passthrough the `MouseEvent`:\r\n\r\nhttps://github.com/elastic/eui/blob/00fa72904df581617e37f4f8bcf1c66abcdf04e0/src/components/card/card.tsx#L211-L215\r\n\r\nAs a minor workaround, at the expense of functionality, I have temporarily removed the `href` and `onClick` properties from `EuiCard` and simply leave it to a button in the `footer`."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4575",
+ "title": "[CSS-in-JS] Convert `EuiMark`",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [],
+ "comments": 16,
+ "created_at": "2021-02-24T16:45:16Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "**_Do Not Merge_: Target branch needs to update after #4511 merges**\r\n\r\n### Summary\r\n\r\n- Converts EuiMark styles from Sass to Emotion.\r\n- Establishes a pattern for separating styles by moving to a separate file. (**_for discussion_**)\r\n- Configures babel to produce dynamic class names. (**_for discussion_**)\r\n- Reveals Jest snapshot output as currently configured. (**_for discussion_**)\r\n \r\n\r\n### Checklist\r\n\r\n- [ ] Check against **all themes** for compatibility in both light and dark modes\r\n- [ ] Checked in **mobile**\r\n- [ ] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**\r\n- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**\r\n- [ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [ ] Checked for **breaking changes** and labeled appropriately\r\n- [ ] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [ ] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4572",
+ "title": "[EuiDatePicker/EuiSuperDatePicker] compressed flag support",
+ "user": {
+ "login": "mouradmourafiq",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1261626?v=4",
+ "html_url": "https://github.com/mouradmourafiq"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 7,
+ "created_at": "2021-02-24T10:41:36Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This is a feature request for adding support for `compressed={true}` to `EuiDatePicker` and `EuiSuperDatePicker` similar to other form controls."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4568",
+ "title": "[EuiTableCell] Default table cell alignment in Safari is mixed",
+ "user": {
+ "login": "ryankeairns",
+ "avatar_url": "https://avatars.githubusercontent.com/u/446285?v=4",
+ "html_url": "https://github.com/ryankeairns"
+ },
+ "labels": [
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 5,
+ "created_at": "2021-02-23T18:02:15Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In https://github.com/elastic/kibana/pull/92374 , it was noted that the table cell content alignment is inconsistent on Safari. Using the `align` prop works for `right` and `center`, as that applies an explicit class, but `left` and `start` appear to have no effect (i.e. they are left to the browser default, I suspect).\r\n\r\nIn effect, this means you cannot reliably for a left/start alignment on Safari. The likely code in question is below:\r\n\r\nhttps://github.com/elastic/eui/blob/527028606dc2ff601ea4baff3ee83555e05f3a54/src/components/table/_table.scss#L141-L162\r\n\r\n#### Screenshot from Safari\r\n\r\n \r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4552",
+ "title": "[EuiComboBox] Unable to properly highlight input text with mouse",
+ "user": {
+ "login": "wenchonglee",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18256786?v=4",
+ "html_url": "https://github.com/wenchonglee"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 5,
+ "created_at": "2021-02-19T07:49:25Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hey,\r\n\r\nI recently noticed that if you were to mouse click and drag the text you just entered, you will be unable to overwrite that text by typing over it.\r\n\r\nTo be more specific:\r\n1. Type `test`\r\n2. Without clicking or pressing enter, drag text `test`\r\n3. Type `abcd`\r\n4. Notice `test` remains and no text can be overwritten\r\n\r\nThe [codesandbox](https://codesandbox.io/s/juwec) found in the \"Custom options only, with validation\" section can be used to replicate this problem.\r\n\r\nYou are able to overwrite the text if you used other means of highlighting the text, i.e. using `crtl-a` or double clicking the text\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4545",
+ "title": "[EuiSelectable] Missing or partial documentation and types",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-02-18T16:50:45Z",
+ "author_association": "NONE",
+ "body": "I've recently implemented a component with EuiSelectable (within a popover - see https://github.com/elastic/kibana/pull/91844) in Lens and want to share some feedback on the documentation. Hope this is helpful.\r\n\r\n* The `onChange` signature (`EuiSelectableSearchProps`) of the `searchProps` is slightly different compared to the one in `EuiFieldSearch`:\r\n * Intellisense is showing the different signature, but it's not super clear the options array content (you can guess it's only the matching array, but it would be useful to have it documented)\r\n * Because of this change it is not possible to control the `searchTerm` value from the outside. If passed it basically makes the component unusable for search\r\n* The `onChange` description for the `EuiSelectable` type is partial:\r\n > Passes back the altered options array with selected options as\r\n* For some reason the `\"full\"` value for the `height` prop in the `EuiSelectable` seems to not work if the table is within a `EuiPopover`. I can only see the search field, but no list 🤔 .\r\n\r\nAs for testing, because of the internal `AutoSizer` used for the virtualization, the `EuiSelectable` list is not rendered at all - apparently on 0 dimensions is not even calling the children props, rather avoid any work.\r\nSo I came up with this trick in Jest to have the list rendered:\r\n\r\n```ts\r\n// Mock the AutoSizer inside EuiSelectable and return some dimensions > 0\r\njest.mock('react-virtualized-auto-sizer', () => {\r\n return function (props: {\r\n children: (dimensions: { width: number; height: number }) => React.ReactNode;\r\n }) {\r\n const { children, ...otherProps } = props;\r\n return {children({ width: 100, height: 100 })}
;\r\n };\r\n});\r\n```\r\n\r\nNot super clean but in case somebody needs it in the future it's here."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4537",
+ "title": "[EuiSuperDatePicker] Add \"Round to\" flag on commonly used section and expose a property to enable it by default",
+ "user": {
+ "login": "cauemarcondes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/55978943?v=4",
+ "html_url": "https://github.com/cauemarcondes"
+ },
+ "labels": [
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-02-17T19:28:14Z",
+ "author_association": "NONE",
+ "body": "On the `Relative` tab there's a flag called `Round to the ${unit}` that when enabled rounds the selected time.\r\n\r\n \r\n\r\nI would like to have a similar flag on the commonly used section:\r\n\r\n \r\n\r\nWhen that is enabled any option selected would be rounded.\r\n\r\nI would also like to have a new property to enable it by default."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4534",
+ "title": "[EuiPopover] Some contents blinks in Safari",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 6,
+ "created_at": "2021-02-17T15:39:03Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This doesn't seem to happen on other EuiPopover instances from what I can tell. Though **could** be attributed to some auto-focus bit. But the contents is there during the animation, then when the animation stops the content disappears for a moment then reappears. (Only in Safari)\r\n\r\n\r\nhttps://user-images.githubusercontent.com/549577/108227874-53898600-710c-11eb-82b5-dc91c87ab1db.mp4\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4533",
+ "title": "[EuiRange] `onChange` type can be difficult to work with",
+ "user": {
+ "login": "JasonStoltz",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1427475?v=4",
+ "html_url": "https://github.com/JasonStoltz"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-02-17T14:01:22Z",
+ "author_association": "NONE",
+ "body": "The type for the `onChange` prop of `EuiRange` is a bit confusing.\r\n\r\nThe current type is as follows:\r\n```\r\nonChange?: (\r\n event:\r\n | React.ChangeEvent\r\n | React.MouseEvent,\r\n isValid: boolean\r\n ) => void;\r\n```\r\n\r\nThe docs show the following example:\r\n```\r\nconst onChange = (e) => {\r\n setValue(e.target.value);\r\n};\r\n\r\n\r\n```\r\n\r\nIf you actually attempt to do that within TS, you'll receive the following error:\r\n> Property 'value' does not exist on type 'EventTarget'\r\n\r\nSo what it appears most folks do, is simply either ignore that error, or cast directly to `React.ChangeEvent`.\r\n\r\nhttps://github.com/elastic/kibana/blob/master/x-pack/plugins/maps/public/classes/styles/vector/components/data_mapping/ordinal_data_mapping_popover.tsx#L99\r\n\r\nhttps://github.com/elastic/kibana/blob/master/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx#L560\r\n\r\nhttps://github.com/elastic/kibana/blob/master/x-pack/plugins/security_solution/public/detections/components/rules/anomaly_threshold_slider/index.tsx#L27\r\n\r\nhttps://github.com/elastic/kibana/blob/master/x-pack/plugins/security_solution/public/resolver/view/graph_controls.tsx#L142\r\n\r\nKnowing that 90% of users will just call `event.target.value` on their handler, is there a better type that could be used here?\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4530",
+ "title": "[EuiBadge] Support onClick & href",
+ "user": {
+ "login": "parkiino",
+ "avatar_url": "https://avatars.githubusercontent.com/u/56409205?v=4",
+ "html_url": "https://github.com/parkiino"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-02-16T18:43:21Z",
+ "author_association": "NONE",
+ "body": "Type check fails when you have both an `onClick` prop and an `href` prop. Even if you are not using `iconOnClick`, if you have an `href` prop, type check requires `iconOnClick` and `iconOnClickAriaLabel`. \r\n\r\nThe EuiBadge type is inferred since type check knows it can't be an anchor because there's an onClick and it can't be a button because there's an anchor, so it must be the last type, which is iconOnClick+iconOnClickAriaLabel."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4523",
+ "title": "[EuiDataGrid] No rows are displayed in Chrome for Linux ",
+ "user": {
+ "login": "miukimiu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2750668?v=4",
+ "html_url": "https://github.com/miukimiu"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2021-02-15T14:45:29Z",
+ "author_association": "MEMBER",
+ "body": "### Issue\r\n\r\nNo rows are displayed in Chrome for Linux. This issue was originally reported in https://github.com/elastic/kibana/issues/91373.\r\n\r\n### More info\r\n\r\nThe **EuiDataGrid** works fine in Kibana 7.11.1. It seems that this issue was introduced when EUI was updated to v31.3.0 in Kibana.\r\n\r\ncc: @pheyos "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4522",
+ "title": "Replace Anchor Components with Custom Link components",
+ "user": {
+ "login": "fairhat",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7697610?v=4",
+ "html_url": "https://github.com/fairhat"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2021-02-15T11:54:15Z",
+ "author_association": "NONE",
+ "body": "is it possible to replace anchor components (\\ ) with custom one's globally? \r\nFor example the collapsible nav has \"href\" properties for navigation items, but it always renders as \\ .\r\nI know it is possible to use onClick instead, however especially for Collapsible Nav the behavior on mobile is very different from using the \"href\" attribute. Using onClick forces the user to double click to open nav items ~~and the hitbox is much smaller~~.\r\n\r\nI'm using @reach/router btw."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4512",
+ "title": "[EuiBadge] Update the docs to exemplify the HTTP status color codes used in Observability",
+ "user": {
+ "login": "formgeist",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4104278?v=4",
+ "html_url": "https://github.com/formgeist"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-02-11T10:36:27Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "# Summary\r\n\r\nRelated to https://github.com/elastic/eui/pull/4508\r\n\r\nI would like to update the component docs to exemplify the use of the `euiPaletteForStatus` in the badges for HTTP status code as it will be used in Observability. Currently, the component is only using the default color palette or custom colors. It would be nice to extend it to use the `euiPaletteForStatus` as well in this case.\r\n\r\n \r\n\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/4511",
+ "title": "[FEATURE] CSS-in-JS via `emotion`, initial release",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 28,
+ "created_at": "2021-02-10T19:52:19Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This is a draft PR getting ready for the initial release of Emotion (docs only; devDependencies) and the new EuiThemeProvider.\r\n\r\n## Components\r\n\r\n- [x] **EuiThemeProvider**: React context provider for theme values and color mode selection\r\n- [x] **useEuiTheme**: theme consumer in React hook form\r\n- [x] **withEuiTheme**: theme consumer in React HOC form (for class components)\r\n\r\n## The themes (#4643)\r\n\r\n- [x] Decide on naming. Do we keep the same prefixes like `theme.colors.euiPrimary` or simplify to `theme.colors.primary`? ([Survey results](https://whimsical.com/eui-theme-context-9pAtBt8tZeKNYzbFXx4cTp))\r\n- [x] Colors (for each)\r\n- [x] Sizing\r\n- [x] Borders\r\n- [x] Breakpoints\r\n- [x] Animation\r\n- [x] Typography\r\n\r\n\r\n## Docs\r\n\r\n- [x] How to consume (#4643)\r\n- [x] How to adjust (#4643)\r\n\r\n\r\n___\r\n\r\n### Checklist\r\n\r\n- [ ] Check against **all themes** for compatibility in both light and dark modes\r\n- [ ] Checked in **mobile**\r\n- [ ] Checked in **Chrome**, **Safari**, **Edge**, and **Firefox**\r\n- [ ] Props have proper **autodocs** and **[playground toggles](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#adding-playground-toggles)**\r\n- [ ] Added **[documentation](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md)**\r\n- [ ] Checked **[Code Sandbox](https://codesandbox.io/)** works for the any docs examples\r\n- [ ] Added or updated **[jest tests](https://github.com/elastic/eui/blob/master/wiki/testing.md)**\r\n- [ ] Checked for **breaking changes** and labeled appropriately\r\n- [ ] Checked for **accessibility** including keyboard-only and screenreader modes\r\n- [ ] A **[changelog](https://github.com/elastic/eui/blob/master/wiki/documentation-guidelines.md#changelog)** entry exists and is marked appropriately\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4506",
+ "title": "[EuiPagination] add a variation with next/previous buttons only",
+ "user": {
+ "login": "katrin-freihofner",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20965076?v=4",
+ "html_url": "https://github.com/katrin-freihofner"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 33,
+ "created_at": "2021-02-10T08:13:24Z",
+ "author_association": "NONE",
+ "body": "I'd like to discuss an additional variation of the pagination that only uses next and previous buttons (without showing the number of pages). This could be especially useful for us when it comes to performance improvements.\r\n\r\nAlthough there might be some usability drawbacks (not knowing the total number of pages), the load performance of our tables would benefit and therefore the user experience."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4495",
+ "title": "Docs take a long time to load",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-02-05T19:46:20Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Especially in dev, but also true in production builds. Our docs prod build has grown to the point of a 3.9mb bundle (which is significantly better than I expected) that takes ~7s to parse & execute on my MBP before the page is available.\r\n\r\nWill use this as a tracking issue to audit and resolve the bottlenecks\r\n\r\n- [x] audit initial docs load\r\n- [ ] lazy-fake data for virtualization examples (85% of current load time) #4496\r\n- [ ] load examples on demand (8% of current load time, 60% of load time after previous item is fixed)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4492",
+ "title": "Add more flexibility to the EuiCommentList (or EuiSteps)",
+ "user": {
+ "login": "mdefazio",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3756330?v=4",
+ "html_url": "https://github.com/mdefazio"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2021-02-05T17:24:29Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In our recent refresh to Index Lifecycle Management, we have a need to present options in a vertical timeline-like format to indicate the life cycle of data. Our design includes a set of icons that tie together vertically with a line, beside a set of panels that house the various options for that step. I suppose semantically speaking, this is closer to `EuiSteps`, but visually we felt `EuiComment` got us closer to what we wanted.\r\n\r\nSo admittedly, I'm not sure which component this request should target. It seems `EuiComment` is closest. Below are the list of requirements/requests:\r\n\r\n1. **Ability to have the icon self-centering beside the header portion of the comment block.** We have adjusted the height and it seems the icon aligns to the top of the comment block\r\n2. **Ability to choose the icon type (`large`, `update`,...) separate from the comment block styling** (currently choosing `update` styles the corresponding block differently)\r\n3. **Ability to customize the margin size between blocks.** (Seems better to do it in the component as the line connecting the icons would likely need to include this when calculating the height).\r\n\r\nImage reference (from https://github.com/elastic/kibana/pull/90291):\r\n![image](https://user-images.githubusercontent.com/6585477/106931962-70d75100-6717-11eb-99fc-821cb288f305.png)\r\n\r\nAnnotated version:\r\n![image](https://user-images.githubusercontent.com/3756330/107064550-a0369e00-67a9-11eb-8fe5-c5b96645eb01.png)\r\n\r\nAgain, perhaps it makes more sense to expand on the `EuiSteps` component to allow for these options as that is more aligned to our use case. And we keep EuiComment more strict to a comment/activity feed.\r\n\r\n- - - \r\n\r\nIf we use the `EuiSteps` component (unsure if the above requests would still be valid or solve themselves):\r\n\r\n1. Ability to customize icon (and size perhaps?)\r\n2. Ability to pass a set of elements instead of just a string to the title area\r\n3. It seems combining the title and content into a wrapping panel might require some reworking of the rendered structure. So I'm open to tweaking the design to accommodate or finding a compromise if we feel this is the better component to use for our case. \r\n\r\n- - - \r\n\r\nAnd as a side note, the `EuiComment` component feels less like Amsterdam than other components (rather, the difference between v7 and Amsterdam is less noticeable—namely the use of borders around a panel/block).\r\n\r\n![image](https://p48.f4.n0.cdn.getcloudapp.com/items/6quQB8dY/cb3e7a8b-fee1-4604-90c1-48cc8c1aa7d1.gif?source=viewer&v=ef3f0d724c4419434d2698b689c518f5)\r\n\r\n- - -\r\n\r\nTagging for awareness: https://github.com/elastic/kibana/pull/88671"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4491",
+ "title": "[EuiCodeBlock] Expand focus ring to encompass the controls",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [],
+ "comments": 4,
+ "created_at": "2021-02-05T17:03:11Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "#4463 Introduced tabbing behavior of the `` block within **EuiCodeBlock** which will cause a focus-ring of just the `` element when tabbing into it (Amsterdam only right now). \r\n\r\n \r\n\r\nWe should figure out a way to allow that focus ring to encompass the whole block but continues to only show when `:focus-visible`."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4487",
+ "title": "[EuiSideNav] Prop types are not showing up in the props table correctly",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-02-04T19:53:37Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Possibly due to how the component is exported:\r\nhttps://github.com/elastic/eui/blob/b52816ad4efd1c0fee148cffa55cb97eeea11bb3/src/components/side_nav/side_nav.tsx#L62\r\n\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4484",
+ "title": "[EuiDataGrid] header cell throwing call stack errors",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-02-04T10:01:40Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In some scenarios the grid header cells seems to interact with other popovers on the same page in a way that's causing a loop of focus settings. I can't reproduce it in a codesandbox, but it's consistently happening in Lens:\r\n* Check out this PR https://github.com/elastic/kibana/pull/88680\r\n* Go to Lens\r\n* Configure data table\r\n* Use column header popover to hide a column\r\n* Open dimension editor to the right and make column visible again\r\n* Errors are thrown\r\n\r\n```\r\ndata_grid_header_cell.js:174 Uncaught RangeError: Maximum call stack size exceeded.\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n at HTMLDivElement.onFocusIn (data_grid_header_cell.js:174)\r\n```\r\n\r\ncc @chandlerprall "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4483",
+ "title": "[EUIDataGrid] rowHover in gridStyle has no effect after 31.4.0",
+ "user": {
+ "login": "mouradmourafiq",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1261626?v=4",
+ "html_url": "https://github.com/mouradmourafiq"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-02-04T09:56:54Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I think there was a regression in v31.4.0, the `{rowHover: 'highlight'}` in `gridStyle` has no effect anymore. The regression can be tested on the example provided in [data-grid-styling-and-control](https://elastic.github.io/eui/#/tabular-content/data-grid-styling-and-control)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4474",
+ "title": "[EuiDataGrid] a11y roles not valid (gridcell without row)",
+ "user": {
+ "login": "flash1293",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1508364?v=4",
+ "html_url": "https://github.com/flash1293"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2021-02-02T14:46:44Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Due to virtualization, there are no \"row\" elements in the data grid anymore.\r\n\r\nAs the individual cells have a `gridcell` role, this is causing automated a11y tests to fail: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Gridcell_role\r\n\r\nI'm not sure about the right solution:\r\n* should we simply remove the `gridcell` role?\r\n* should we wrap all of the cells in a single `row` element (even though it's not 100% correct)?\r\n* Is it possible to introduce dummy elements for rows in the dom tree (AFAIK our virtualization lib doesn't allow this)\r\n\r\ncc @myasonik @chandlerprall "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4470",
+ "title": "[EuiDataGrid] Testing virtualized cells",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 873872737,
+ "node_id": "MDU6TGFiZWw4NzM4NzI3Mzc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/test",
+ "name": "test",
+ "color": "74bfe8",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2810744698,
+ "node_id": "MDU6TGFiZWwyODEwNzQ0Njk4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/stale-issue",
+ "name": "stale-issue",
+ "color": "ededed",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-02-01T19:59:35Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Cells are not guaranteed to be rendered in functional tests when the grid overflows in either dimension. This prevents validating entire datasets are rendered as expected."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4467",
+ "title": "[EuiRange] Support custom color options",
+ "user": {
+ "login": "darnautov",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5236598?v=4",
+ "html_url": "https://github.com/darnautov"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2021-02-01T08:23:58Z",
+ "author_association": "NONE",
+ "body": "At the moment only the following color options are supported: `[ \"primary\", \"success\", \"warning\", \"danger\" ]`.\r\nI presume it's been done this way to preserve the EUI color palette and respect the active theme, but for some scenarios, it's important to have the ability to set a specific color code. For instance, we would like slider ranges to match anomaly security score colors: `'#fe5050', '#fba740', '#fdec25', '#8bc8fb'`.\r\n\r\n![image](https://user-images.githubusercontent.com/5236598/106490266-f0fe7c00-64b5-11eb-9466-8c62a40f8bcf.png)\r\n\r\nAs a temporary workaround, I had to set the following overrides in scss\r\n```scss\r\n.mlSeverityControl {\r\n .euiRangeLevel-- {\r\n &success {\r\n background-color: #8BC8FB;\r\n }\r\n &primary {\r\n background-color: #FDEC25;\r\n }\r\n &warning {\r\n background-color: #FBA740;\r\n }\r\n &danger {\r\n background-color: #FE5050;\r\n }\r\n }\r\n}\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4458",
+ "title": "[EuiDataGrid] UX Cleanups",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1249567966,
+ "node_id": "MDU6TGFiZWwxMjQ5NTY3OTY2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/!urgent!",
+ "name": "!urgent!",
+ "color": "d61b41",
+ "default": false,
+ "description": "Urgently needs attention. We'll bring it up in our weekly meetings and decide on timeline."
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-01-28T21:35:03Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "See https://github.com/elastic/eui/pull/4170#pullrequestreview-573688749"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4456",
+ "title": "[EuiDataGrid] Scroll cells into view via keyboard",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-01-28T21:29:55Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When using keyboard navigation in the datagrid, cells do not always fully scroll into view and other times centers the newly focused cell.\r\n\r\nhttps://github.com/elastic/eui/pull/4170#pullrequestreview-567698551"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4454",
+ "title": "Logo icons should use random IDs",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-01-28T15:10:38Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "[Third party logos](https://eui.elastic.co/#/display/icons#third-party-logos) come with static IDs defined which means the same one cannot be rendered on the page more than once without causing duplicate ID issues. \r\n\r\nThis is a problem on Kibana's load data page where the same 3rd party powers multiple sources\r\n \r\n\r\nKibana issue: https://github.com/elastic/kibana/issues/89493\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4453",
+ "title": "[EuiResizableContainer] initialSize vs. minSize initial calculation",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 4,
+ "created_at": "2021-01-27T16:28:57Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I don't know if this is related or not, but I have an issue in my usage of the component where I'm setting an `initialSize=15` which only accepts a number as percentage value, then I also set a pixel value `minSize=60px`. But on initial load, it doesn't respect that `minSize`. So If the window is skinny, and 15% of the width is less than `60px` the panel will be less than `60px`.\r\n\r\n_Originally posted by @cchaos in https://github.com/elastic/eui/issues/4447#issuecomment-767177454_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4446",
+ "title": "[EuiSelectable] Testing virtualized options",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 873872737,
+ "node_id": "MDU6TGFiZWw4NzM4NzI3Mzc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/test",
+ "name": "test",
+ "color": "74bfe8",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-01-25T15:31:11Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "List options do not get rendered in test environments (react-testing-library, notably) because of [zero-width calculations in `react-window`](https://github.com/bvaughn/react-virtualized-auto-sizer/blob/master/src/index.js#L149). Attempting for force component dimensions with `height` or `style` props have no effect.\r\nNeed to allow `react-window` to find a calculable width or (perhaps) mock virtualization render."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4441",
+ "title": "[EuiSearch] Autocomplete Fields Popover",
+ "user": {
+ "login": "pickypg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1501235?v=4",
+ "html_url": "https://github.com/pickypg"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-01-21T20:00:45Z",
+ "author_association": "MEMBER",
+ "body": "As a page or site's search experience gets more and more complex, there is a natural desire to introduce autocomplete to the searchbar experience.\r\n\r\nKibana has this with KQL already, so it would be great to see that [equivalent] experience to EUI so that all projects can take advantage of it where the fields / types can be told to the searchbar for this same experience.\r\n\r\n![image](https://user-images.githubusercontent.com/1501235/105405388-1b6c5180-5bf9-11eb-919d-ec294c59c700.png)\r\n\r\nEven though it's not really shown here, it also goes further and understands the type of data being searched. For numeric / date types, it adds operators like `>=`.\r\n\r\n![image](https://user-images.githubusercontent.com/1501235/105405419-232bf600-5bf9-11eb-90cf-ee00292e417e.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4439",
+ "title": "[EuiContext] App configuration provider",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2021-01-21T17:46:12Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Expand the use of the current **EuiContext** layer beyond i18n, or create a coordinated system of context layers that allow for global or application-level settings for various options in EUI.\r\n\r\nCurrent ideas:\r\n* Theming, as introduced in #3912\r\n* **EuiPopover**, such as `buffer`\r\n* a11y, such as enforcing stricter standards in certain applications\r\n* domains, as used in `getSecureRelForTarget`\r\n* Link components, such as replacing the underlying element used in **EuiLink**, etc.\r\n* Feature flags\r\n* Passing of z-index or other props based on their parent being in a fixed position component (like #3456)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4437",
+ "title": "[Docs] Add automated a11y tests to all guideline and playground pages",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2021-01-20T20:03:08Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Current a11y script goes through every link in left side nav to test. With the change to embedding guidelines in with the components they are for (and the addition of playgrounds) we need to improve the script to capture these new pages."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4425",
+ "title": "[EuiDataGrid] Add some more testable ids to table components",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2021-01-15T10:07:12Z",
+ "author_association": "NONE",
+ "body": "This PR comes from the experience of testing the newly introduced EuiDataGrid into Lens in https://github.com/elastic/kibana/pull/88069\r\n\r\nPossible improvements on the testable side:\r\n* Add `data-test-subj` ids to each group action entries - currently only the group has it\r\n \r\n \r\n\r\n - it would be nice to be able to pass it as props for non-custom ones (like in cell actions) and have some standard ones \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4419",
+ "title": "[EuiSuggest] Down Arrow Key to Select Suggestions and Callback",
+ "user": {
+ "login": "valayDave",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11920247?v=4",
+ "html_url": "https://github.com/valayDave"
+ },
+ "labels": [],
+ "comments": 7,
+ "created_at": "2021-01-11T21:44:34Z",
+ "author_association": "NONE",
+ "body": "Hello, \r\n\r\nI was using EuiSuggest as a part of an auto-complete I was building. Wanted to check on how I can capture DownArrow press and go down the list of suggestions to select things. Any Ideas would be appreciated."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4418",
+ "title": "Add ability to have a sticky header in EuiInMemoryTable",
+ "user": {
+ "login": "robin13",
+ "avatar_url": "https://avatars.githubusercontent.com/u/174291?v=4",
+ "html_url": "https://github.com/robin13"
+ },
+ "labels": [],
+ "comments": 2,
+ "created_at": "2021-01-11T08:26:27Z",
+ "author_association": "MEMBER",
+ "body": "In some cases a table has many rows and many columns, but for each row it is important to be able to read the header for the column of a given cell. It would be great to have the function for \"sticky\" rows in the EuiInMemoryTable."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4416",
+ "title": "New common prop: `as`",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 1399999948,
+ "node_id": "MDU6TGFiZWwxMzk5OTk5OTQ4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/prop%20request",
+ "name": "prop request",
+ "color": "3d4d9e",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2021-01-06T22:34:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## The idea\r\n```jsx\r\n \r\n```\r\n\r\n`as` should allow for passing any HTML tag name and would swap out the outermost element for whatever the user passes in.\r\n\r\n## Why?\r\nTwo reasons:\r\n1. A lot of minor a11y issues come from needing a different tag around a component. Sometimes the component can simply be wrapped by the consuming app (e.g., when the component is a `div` or something equally semantically empty) but other times that would change the meaning (e.g., when the component provides a semantically meaningful tag).\r\n2. Could be a nice dev convenience — reducing the amount of tag/component nesting just to get the right structure (e.g., instead of `{text}
` we can reduce a level of nesting by using `{text}`.\r\n\r\nInspired to open this issue by ongoing discussion in https://github.com/elastic/eui/issues/4413 but I know the thought has crossed my mind before too so it seemed like time to open an issue for it."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4413",
+ "title": "[EuiAccordion] HTML5 validity in `buttonContent`",
+ "user": {
+ "login": "MichaelMarcialis",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3884767?v=4",
+ "html_url": "https://github.com/MichaelMarcialis"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2810744698,
+ "node_id": "MDU6TGFiZWwyODEwNzQ0Njk4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/stale-issue",
+ "name": "stale-issue",
+ "color": "ededed",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 6,
+ "created_at": "2021-01-05T16:09:29Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In a recent Kibana PR review, I noticed that an engineer was using a lot of non-phrasing HTML content (`div` and `p` elements in this case) in the `buttonContent` prop of an `EuiAccordion` component. Such usage would render invalid HTML5, as non-phrasing content is not allowed in a `button` element.\r\n\r\nMy initial instinct was to recommend that the engineer change their `buttonContent`, but I then noticed that our own [EUI docs](https://elastic.github.io/eui/#/layout/accordion) showcase a similar use of `EuiAccordion` that would also render invalid HTML5. Should the docs be updated to discourage such invalid usage of HTML5?\r\n\r\n![image](https://user-images.githubusercontent.com/3884767/103669077-e21fba80-4f45-11eb-8ad8-997090a4ecfc.png)\r\n\r\nAdditionally, it appears that the `EuiText` component that engineers would need to utilize in order to customize the text within the accordion button doesn’t offer any alternative to its current `div` wrapper. Should we offer an alternative `EuiText` wrapper element for areas where only phrasing content is allowed?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4408",
+ "title": "EuiFormRow does not work with react-testing-library",
+ "user": {
+ "login": "thomheymann",
+ "avatar_url": "https://avatars.githubusercontent.com/u/190132?v=4",
+ "html_url": "https://github.com/thomheymann"
+ },
+ "labels": [
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 9,
+ "created_at": "2021-01-01T10:17:32Z",
+ "author_association": "NONE",
+ "body": "`EuiFormRow` automatically generates an id to link together field label with field input. \r\n\r\nThis works fine in production and dev. However, in a test environment this functionality is disabled and instead a static string is returned for every field: https://github.com/elastic/eui/blob/master/src/services/accessibility/html_id_generator.testenv.ts\r\n\r\nThis means each input element in a form with multiple fields now has the same id during testing which is invalid. It also breaks expected behaviour since clicking any field label will now focus the same input element (whichever is the first one in the form) instead of the actual input element wrapped by the `EuiFormRow`. \r\n\r\nThis behaviour stops us from using `react-testing-library` which approach is to force developers to query elements by role or label text instead of DOM elements to ensure accessibility requirements are met:\r\n\r\n```typescript\r\nawait findByLabelText('Username'); // Will throw since 'Username' label resolves to 'generated-id' which matches multiple inputs\r\n```\r\n\r\nWhat is the purpose of the static `generated-id` ids during testing? \r\n\r\nIs there a way to disable this behaviour? \r\n\r\nMy only option right now seems to be to manually set each field's `id`, which defeats the purpose of having automatic id generation in the first place, and runs the danger of clashing with other ids on the page. \r\n\r\nIt would be great if this could be opt-in via a mock so that devs who require static ids (e.g. for snapshot testing) can easily opt into this behaviour without breaking other tests."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4404",
+ "title": "[EuiSuperSelect] constantly updating ID",
+ "user": {
+ "login": "nancyheiss",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6857695?v=4",
+ "html_url": "https://github.com/nancyheiss"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1349997050,
+ "node_id": "MDU6TGFiZWwxMzQ5OTk3MDUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/can't%20replicate",
+ "name": "can't replicate",
+ "color": "f8fcae",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-23T20:57:21Z",
+ "author_association": "NONE",
+ "body": "When a form element wraps a combo box the id is constantly updating. Also, the aria-labelledby field has 'undefined' value before the id.\r\n![103036309-4ee68e00-451e-11eb-8289-5f365a547b7f](https://user-images.githubusercontent.com/313125/103036811-cec52600-4527-11eb-91d5-42c7ca73b14c.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4402",
+ "title": "Simplify components with unnecessary browser polyfills/fallbacks/hacks",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1249567966,
+ "node_id": "MDU6TGFiZWwxMjQ5NTY3OTY2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/!urgent!",
+ "name": "!urgent!",
+ "color": "d61b41",
+ "default": false,
+ "description": "Urgently needs attention. We'll bring it up in our weekly meetings and decide on timeline."
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-23T17:09:54Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Browsers supported by EUI has changed in the last year, most notably the removal of IE11 from the list. As such, several components have residual code to support one or more browsers that no longer require support and could be improved or simplified. This includes areas such as web APIs, browser eventing, CSS features, etc.\r\n\r\nUse this issue to track potential refactors.\r\n\r\n- **EuiResizeObserver**. The[ ResizeObserver API ](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver#Browser_compatibility)is now supported by all supported browsers. The [`makeCompatibleObserver`](https://github.com/elastic/eui/blob/master/src/components/observer/resize_observer/resize_observer.tsx#L76) fallback method is no longer necessary."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4401",
+ "title": "[EuiDataGrid] Provide a way to highlight a row",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-22T13:19:40Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Currently, if you want to highlight a row in data grid you've to implement this in each cell like this:\r\n\r\n \r\n \r\n\r\nIt would be convenient and more effective (less operations) if one could do this per row and not per cell. Maybe data grid could provide a callback triggered by each row that allows the user to add / remove CSS classNames? This would be a flexible way to style a whole row.\r\n\r\n---\r\n\r\nSimilar request was made in #5004:\r\n\r\n## Context:\r\nI need to style the entire row with a repeated background, styling every cell in the row wouldn't look the same.\r\n### Styling the row\r\n \r\n\r\n### Styling every cell\r\n![styling every item](https://user-images.githubusercontent.com/1490444/128142156-2b7db8b2-212f-4b1c-853e-56e1e00f5ffd.png)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4399",
+ "title": "[EuiSuggestItem] Props label and description could ReactNode instead of string",
+ "user": {
+ "login": "prcdpr",
+ "avatar_url": "https://avatars.githubusercontent.com/u/43776797?v=4",
+ "html_url": "https://github.com/prcdpr"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-21T16:37:36Z",
+ "author_association": "NONE",
+ "body": "Today I had an idea to use EuiHighlight inside of EuiSuggestItem `label` property. Unfortunately, label may be only of string type.\r\n\r\nI managed out by forking code of EuiSuggestItem inside my solution, but for future users it would be useful to make `label` accept ReactNode type, not just string.\r\n\r\nThis is the effect I was aiming for:\r\n![image](https://user-images.githubusercontent.com/43776797/102799729-2f7f2200-43b3-11eb-8afe-b9944ae2d455.png)\r\n "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4394",
+ "title": "[EuiComboBox] Single-select combobox should not allow deletion using delete key unless isClearable=true",
+ "user": {
+ "login": "wylieconlon",
+ "avatar_url": "https://avatars.githubusercontent.com/u/666475?v=4",
+ "html_url": "https://github.com/wylieconlon"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-12-16T21:47:24Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "We have occasionally run into Lens bugs [like this one](https://github.com/elastic/kibana/issues/83466) where we are not expecting the ComboBox to be clearable. Users can select the current option and then press the delete key, which causes the last token to be deleted. Can we prevent that interaction?\r\n\r\nSteps to reproduce:\r\n\r\n```\r\n {\r\n console.log(chosen);\r\n }}\r\n/>\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4393",
+ "title": "[EuiDataGrid] Provide a way to close the fullscreen view with the browser's back button",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-12-16T21:42:08Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Started discussion in https://github.com/elastic/kibana/pull/67259#issuecomment-747005155\r\n@majagrubic :\r\n> >When selecting the fullscreen option from the menu and clicking Back in the browser, I'm taken back to the Advanced Settings, ie. the last page I was on before Discover. I would expect this to take me back to Discover.\r\n\r\n@chandlerprall \r\n> >Would need to hook into the html5 history api for that. I don't know if that's functionality we'd want in EUI, though it seems like it so it would be consistent between all fullscreen grids.\r\n\r\nso let's start to discuss"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4391",
+ "title": "[EuiComboBox] Improve prefix match with groups",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2020-12-16T15:43:18Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When you use groups in the combo box with `sortMatchesBy=\"startsWith\"` and search for something the view is just pulling out items leaving aside completely empty groups which just looks super confusing:\r\n\r\n![screenshot-20201216-164038](https://user-images.githubusercontent.com/877229/102370705-a84e3a80-3fbd-11eb-8c82-cfb59f2a15a3.png)\r\n\r\nI am not yet sure what I would expect to happen, if the groups should just repeat for the startswith matches and the regular ones, or the startswith matches are not grouped anymore (which depending on the use-case could also be confusing), so I think it would be worth having design input on this one, before fixing it."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4389",
+ "title": "[EuiFilterGroup] Allow easy clearing of selections",
+ "user": {
+ "login": "pheyos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1945390?v=4",
+ "html_url": "https://github.com/pheyos"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-12-16T14:59:56Z",
+ "author_association": "NONE",
+ "body": "### Current situation\r\n\r\nWhen a user has many selected options in a filter group [multi-select](https://elastic.github.io/eui/#/forms/filter-group#multi-select), it's taking a lot of clicks to clear the selection.\r\n\r\n### Requested feature\r\n\r\nMake it easy to clear to filter selection with one or two clicks."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4386",
+ "title": "[EuiSearchBar] Allow bad query string",
+ "user": {
+ "login": "nickofthyme",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19007109?v=4",
+ "html_url": "https://github.com/nickofthyme"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-12-15T17:44:37Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In kibana I am updating the advanced settings page to sync the search text to the `query` URL search params (https://github.com/elastic/kibana/pull/81829). This allows the URL to possibly be formatted incorrectly. Thus, running `Query.parse('category:(accessibility))')` will throw an error.\r\n\r\nI am testing `Query.parse` before passing to `EuiSearchBar` and displaying a warning toast in case of an error. But it would be nice to still update the value of the search bar input element. The only workaround is to set the query to `''`.\r\n\r\nI would like to propose the `query` prop as a `string` allows an incorrectly formatted (aka _bad_) query string. Currently, passing a bad string will throw an error inside the `EuiSearchBar` component with no checks on the parsing failure.\r\n\r\nhttps://github.com/elastic/eui/blob/05b3de41656f9e69e0517c56c5344c2b3c035b1d/src/components/search_bar/search_bar.tsx#L101-L103"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4384",
+ "title": "[EuiDataGrid] Sorting columns after focusing a header cell throws console errors",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-15T14:15:12Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When you sort columns after you've selected a header cell, there are lot's of errors in console. Seems there is a problem with focus in this case:\r\n![image](https://user-images.githubusercontent.com/463851/102224863-c39a4680-3ee6-11eb-818f-175b4dbd4a0b.gif)\r\n\r\nThe only reliable way to reproduce it was using Safari, but it also happened in Chrome (Reported by @majagrubic)\r\nhttps://github.com/elastic/kibana/pull/67259#issuecomment-742600681\r\n\r\n## Steps to reproduce\r\n\r\n1. Open https://elastic.github.io/eui/#/tabular-content/data-grid in Safari\r\n2. Click on the `Name` header\r\n3. Click on Columns\r\n4. Change position of the 2 `Name` and `Email Adresse` - should take a while \r\n5. Have a look at console\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4369",
+ "title": "[EuiInMemoryTable] Pagination is not working",
+ "user": {
+ "login": "chrisronline",
+ "avatar_url": "https://avatars.githubusercontent.com/u/56682?v=4",
+ "html_url": "https://github.com/chrisronline"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-12-08T19:35:56Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I took the demo code and put it into a sandbox: https://codesandbox.io/s/delicate-dream-3xzeb?file=/index.js\r\n\r\nTry going to the next page, or changing how many are shown per page. Neither control seems to work.\r\n\r\nUsers started reporting this in the 7.10 release."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4364",
+ "title": "[EuiDataGrid] Columns resize infinite loop",
+ "user": {
+ "login": "lior-fortifieddata",
+ "avatar_url": "https://avatars.githubusercontent.com/u/59799643?v=4",
+ "html_url": "https://github.com/lior-fortifieddata"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 7,
+ "created_at": "2020-12-08T09:23:11Z",
+ "author_association": "NONE",
+ "body": "I'm trying to resolve an issue when resizing a column in EuiDataGrid.\r\nunfortunately I couldn't replicate it in CodeSandBox for more than 1.5 hours,\r\nso I thought it worth asking the team if they know it already\r\nI can share my screen if needed.\r\n\r\nyou can see the issue below:\r\nwhen resizing a column, look at the scrollbar at the bottom.\r\n\r\n\r\nIt didnt happen when:\r\n1. setting initialWidth to the last column\r\n2. on full screen \r\n \r\n \r\n![scroll2](https://user-images.githubusercontent.com/59799643/101465120-384e0d80-3948-11eb-90b9-43b5a6f94769.gif)\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4363",
+ "title": "[EuiSelectableTemplateSitewide] Increase default width and animate it on focus",
+ "user": {
+ "login": "ryankeairns",
+ "avatar_url": "https://avatars.githubusercontent.com/u/446285?v=4",
+ "html_url": "https://github.com/ryankeairns"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2020-12-07T21:28:39Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The search input size has been increased on Kibana and an animation has been applied to further widen it upon focus. In order to keep other Elastic implementations in sync, we might consider baking these changes into the template.\r\n\r\nThe changes can be found here: https://github.com/elastic/kibana/pull/85079 \r\n\r\n![search_anim](https://user-images.githubusercontent.com/446285/101407610-be167e00-38a0-11eb-9d06-55b968fe5d53.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4361",
+ "title": "[EuiSelectable] `onFocusBadge` should be customizable per item",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-07T19:49:20Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "`onFocusBadge` is currently a `boolean` or a custom badge. For Kibaba, where we have multiple item types, we need a custom badge per item.\r\n\r\nWould be good if `onFocusBadge` supported passing in a callback which could run on each option to create a custom badge. Alternatively, maybe `onFocusBadge` needs to be moved into the rendered option itself and not be something managed by EuiSelectable? Rather, an `option` gets a `isFocused` flag passed into it?\r\n\r\nMultiple ways to accomplish this probably."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4345",
+ "title": "[EuiSuggest] keyboard navigation issues",
+ "user": {
+ "login": "alexwizp",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20072247?v=4",
+ "html_url": "https://github.com/alexwizp"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-12-04T09:44:23Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "During real-world testing of this component, we found a couple of keyboard issues that should probably be addressed on the component side\r\n\r\n- **We should keep focus on input component after selecting something from the suggestions list.**\r\n **test case:**\r\n 1. start typing to open a list of suggestions\r\n 2. press **Tab** to select first item from the list \r\n 3. press **Enter** to apply suggestion.\r\n 4. continue typing\r\n\r\n \r\n![Screen Recording 2020-12-04 at 12 34 21 PM](https://user-images.githubusercontent.com/20072247/101147294-3ecd4400-362d-11eb-9f60-863332acaafd.gif)\r\n\r\n **Expected behavior:** Focus should be on Input control. User should be able to continue typing\r\n\r\n\r\n- **In case of no suggestions we need don't need to** set focus on empty list \r\n 1. fill control with text without suggestions \r\n 2. press **Tab** button\r\n \r\n![Screen Recording 2020-12-04 at 12 42 52 PM](https://user-images.githubusercontent.com/20072247/101148179-61ac2800-362e-11eb-84b3-61dd657e46cc.gif)\r\n\r\n **Expected behavior:** Focus should be on next form control. It's probably true, but if I select somewhere in form focus returned back to **EuiSuggest**. \r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4342",
+ "title": "[EuiSuggest] open suggestions when clicking on an input control",
+ "user": {
+ "login": "alexwizp",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20072247?v=4",
+ "html_url": "https://github.com/alexwizp"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2020-12-04T09:06:26Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In **Kibana** we open Suggeestions list in our existing **(custom) Suggest component** when user click on Input conrol. But in **EuiSuggest** it happens when we start typing. \r\n\r\n### Kibana:\r\n![Screen Recording 2020-12-04 at 11 55 15 AM](https://user-images.githubusercontent.com/20072247/101143474-fe1efc00-3627-11eb-9115-40e1057122bb.gif)\r\n\r\n### EuiSuggest: \r\n![Screen Recording 2020-12-04 at 12 03 21 PM](https://user-images.githubusercontent.com/20072247/101144143-ef851480-3628-11eb-8eab-239d88a5c256.gif)\r\n\r\n\r\nIs it possible to add some flag to change this?, because for Kibana we want to keep the existing behavior"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4341",
+ "title": "[EuiSuggest] component has errors with TypeScript typing",
+ "user": {
+ "login": "alexwizp",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20072247?v=4",
+ "html_url": "https://github.com/alexwizp"
+ },
+ "labels": [
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-04T08:50:55Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "We faced with difficulties while trying to use this component in typescript. This component implements the standard Input properties, but there is an error when trying to use them\r\n\r\n![image](https://user-images.githubusercontent.com/20072247/101142589-dda27200-3626-11eb-906e-5d34de4813bc.png)\r\n\r\nAt least `value, placeholder, disabled` props should be available "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4333",
+ "title": "[EuiTable] Not clear description prop use",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-12-03T10:09:25Z",
+ "author_association": "NONE",
+ "body": "I've tried to use the `description` prop in a `EuiBasicTable` and was expecting to have it set as title for the column, but it seems ignored.\r\n\r\nIn the prop documentation it mentions:\r\n> A description of the column (will be presented as a title over the column header)\r\n\r\nBut then in the `EuiBasicTable` code the prop gets extracted but not used: https://github.com/elastic/eui/blob/bca59468fda3fd29e5176d9ddd375c26b918651f/src/components/basic_table/basic_table.tsx#L1288\r\n\r\nLive example:\r\nhttps://codesandbox.io/s/friendly-wing-8fd1v?fontsize=14&hidenavigation=1&theme=dark"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4328",
+ "title": "[EuiSuperDatePicker] Allow limiting the the selection range",
+ "user": {
+ "login": "lior-fortifieddata",
+ "avatar_url": "https://avatars.githubusercontent.com/u/59799643?v=4",
+ "html_url": "https://github.com/lior-fortifieddata"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-12-02T09:58:26Z",
+ "author_association": "NONE",
+ "body": "Hello,\r\n\r\nIs there a way to limit the date range selection in the EuiSuperDatePicker?\r\n\r\nfor example: not allowing to select Last 1000 days\r\n\r\nthanks\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4317",
+ "title": "[EuiDataGrid] Pagination not working on in docs ",
+ "user": {
+ "login": "kshitij86",
+ "avatar_url": "https://avatars.githubusercontent.com/u/26821140?v=4",
+ "html_url": "https://github.com/kshitij86"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-11-29T04:17:17Z",
+ "author_association": "NONE",
+ "body": "When I tried to use the pagination on `EuiDataGrid` docs, it just greeted me with this:\r\n\r\n![err](https://user-images.githubusercontent.com/26821140/100533100-a008a800-3226-11eb-9cdc-f4e0fc5091d7.png)\r\n\r\nI noted this happens due to the data-grid in the docs now [used with context](https://github.com/elastic/eui/blob/master/src-docs/src/views/datagrid/datagrid.js):\r\n\r\n```\r\n \r\n {\r\n console.log(eventData);\r\n }}\r\n />\r\n \r\n\r\n```\r\n[I tried to make a pull request adding a feature to `EuiDataGrid` but could not merge main into it, due to this reason.](https://github.com/elastic/eui/pull/4316)\r\n\r\nIs this a bug or will the data grid be defined with context from now on?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4304",
+ "title": "[EuiSearchBar] Add option to display the number of selected options in the filters",
+ "user": {
+ "login": "pgayvallet",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1532934?v=4",
+ "html_url": "https://github.com/pgayvallet"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 12,
+ "created_at": "2020-11-24T16:22:33Z",
+ "author_association": "NONE",
+ "body": "When using the `box.filters` option of `EuiSearchBar` (https://elastic.github.io/eui/#/forms/search-bar#search-bar-filters), there seems to be no way to have it display the number of selected options on the filter's button (like the `numFilters` option of `EuiFilterButton` does).\r\n\r\nFor example, when using a `field_value_selection` type filter, when any number of options are selected, the button is rendered like this (only mind the button, not the searchbar's state): \r\n\r\n \r\n\r\nIdeally, there could be an option to have it displayed like this instead:\r\n\r\n \r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4302",
+ "title": "[Discuss] Interaction spec for input+popover form-like components",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-11-23T23:38:23Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "EUI has a good number of components composed of an input and a popover, either extending or simulating a form control.\r\n\r\n* EuiInputPopover \r\n* EuiComboBox\r\n* EuiSuperSelect\r\n* EuiColorPicker\r\n* EuiDatePicker\r\n* EuiSuggest\r\n* EuiFilterGroup\r\n* Others?\r\n\r\nSee the latest discussion below, but each of these has a slightly different interaction paradigm in regards to focus, popover open/close, and a11y more generally. I'd like to decide on an interaction spec and align each to the outcome.\r\n\r\nNotable:\r\n* Does the popover open on focus?\r\n* Does the input indicate that a popover attachable (e.g., down arrow icon)? Is that indicator interactive (e.g., EuiComboBox has a button)?\r\n* What keys do what? esc is clear, but tab and arrow down are less-so.\r\n* Do the popovers trap focus? This will likely depend on the component and that variance is ok.\r\n\r\n___\r\n\r\n> 2. Tabbing into the input should automatically open the popover\r\n\r\n> > This is unchanged from the current behavior and different from the what happens in EuiColorPicker. I think the idea is that a user would be able to tab through the form without opening (and tabbing through) the popover if desired.\r\n\r\n> > > I think this brings up a good candidate for discussion. Without a screen reader, there's nothing telling keyboard users to press down to open the popover. We should probably discuss and nail down this type of behavior for all inputs with dropdowns.\r\n\r\nThe usual solution to this is:\r\n- focus on control opens whatever it needs (in this case, focus on input opens the DatePicker)\r\n- tab moves focus into the popover \r\n- esc closes the popover and puts focus on the input with the popover closed\r\n- tab moves focus to the next tabbable element on the page\r\n\r\nNext time a user lands on the control (e.g., input), it starts over at the top where the popover opens. This does have the downside of after pressing esc the only way to open the popover is to tab out and back into the control but that's not often a dealbreaker.\r\n\r\nWe can explore other strategies (e.g., using a modifier to open the popover, adding a button to open the popover, etc) but starting with the usual solution might be a good immediate fix even while we discuss others.\r\n\r\n_Originally posted by @myasonik in https://github.com/elastic/eui/issues/4243#issuecomment-725605818_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4300",
+ "title": "Example application layouts",
+ "user": {
+ "login": "ronnyek",
+ "avatar_url": "https://avatars.githubusercontent.com/u/584713?v=4",
+ "html_url": "https://github.com/ronnyek"
+ },
+ "labels": [],
+ "comments": 1,
+ "created_at": "2020-11-23T16:08:08Z",
+ "author_association": "NONE",
+ "body": "EUI is really quite a beautiful library, that appears to be well built. I was just curious if in the future, documentation could include some sample layouts of applications. Perhaps like a composite of recommended navigation and header patterns etc.\r\n\r\nMaybe an example of recommendations for multi-level navigation, like sections, subsections etc. \r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4299",
+ "title": "[EuiDataGrid] Add arrow keys to popover",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-11-23T07:31:03Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It would be convenient if a user could use the arrow keys to navigate between cell popovers. Currently you've to close a popover, navigate to the next cell, expand the cell to archive this. Using arrow keys would save lots of time.\r\n![Elastic_UI_Framework_-_Data_grid](https://user-images.githubusercontent.com/463851/99937466-178d9180-2d66-11eb-82f4-f0e692d074b2.png)\r\nIf the user the user would like to navigate to has no popover, just the cell could be focused instead\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4295",
+ "title": "[META] [EuiDataGrid] data grid performance",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-11-20T16:59:05Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Meta issue for tracking/organizing data grid performance.\r\n\r\n* [ ] Need to document what props, if they change, trigger full re-renders #3518\r\n* [ ] Full screen has lagging UI #3705\r\n* [ ] Virtualization #4170 \r\n* [ ] Track re-computing / re-rendering #4294\r\n* [ ] Collapse the accessibility elements into aria attributes\r\n\r\nThe biggest lag/performance impact observed has been during cell creation, including pagination but especially during the initial mount & rendering. A few thoughts:\r\n\r\n* On pagination, right now cells are explicitly unmounted & re-created - virtualization(WIP) might already resolve this\r\n* From looking at devtool profiling, DOM element creation by React is expensive, and every cell is very DOM intensive\r\n* When using the provided in-memory operations every cell is rendered in an unmounted document fragment. Is anything optimizable in this process?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4294",
+ "title": "[EuiDataGrid] track re-renders from hooks",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2020-11-20T16:54:25Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The data grid relies **heavily** on React hooks to maintain/cache various states and values. In many cases it is trivially simple to trigger unnecessary re-computations and re-renders of these hooks. The data grid should be given a new `debugPerformance` prop that, when enabled, `console.log`s when various hooks trigger, and ideally can provide a reason.\r\n\r\nThere are some existing browser/react extensions/hacks that can provide the same or similar information, but requiring setting those up, especially for downstream projects like Kibana, are complicated and time consuming."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4283",
+ "title": "[EuiBasicTable] Loading state causes layout shift",
+ "user": {
+ "login": "smith",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9912?v=4",
+ "html_url": "https://github.com/smith"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-11-17T21:47:51Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When the loading state is active, the rest of the table gets pushed down 2px, and when it goes away it shifts back up.\r\n\r\nYou can see this by turning on the \"Layout Shift Regions\" in Chrome devtools."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4281",
+ "title": "[EuiBasicTable] Fixed number of rows for table",
+ "user": {
+ "login": "smith",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9912?v=4",
+ "html_url": "https://github.com/smith"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-11-17T21:41:39Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Sometimes we would like to have a table that's a certain height. For example, in elastic/kibana#81135, we have tables with fixed height that can have 0-5 rows on the page.\r\n\r\nWe would like to be able to specify a fixed number rows that would make it so the table is always the same height and \"pin\" the pagination controls to the bottom. (We hacked together something that does this here https://github.com/elastic/kibana/pull/83360/files#diff-5dd9d72bca046db230734fcecb97df2d62159338286931cc38ea787349648e05R24-R56.)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4274",
+ "title": "Upgrade to Node.js 12.x",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-11-16T22:57:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Kibana is now beyond 10.x and EUI should follow suit.\r\n\r\nI have not done any investigations into what needs to occur for EUI to make the change, so first step would be to triage."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4270",
+ "title": "[EuiDatePicker] onSelect is fired when navigating between months",
+ "user": {
+ "login": "smhutch",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7217244?v=4",
+ "html_url": "https://github.com/smhutch"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-11-16T12:58:21Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## About\r\n\r\n`onSelect` is fired twice when navigating between months In `EuiDatePicker`. My feeling is that it should not fire at all, until the user selects a date. Or, if changing month is considered selection, it should only fire once.\r\n\r\nThe same behaviour exists for `onChange` (though I changed to using `onSelect`, since it seems reasonable for `onChange` to be called when changing month).\r\n\r\n## Steps to replicate\r\n\r\n[Sandbox](https://rpu48.csb.app/) showing the issue. To see the issue, open the console, and check for calls to `onSelect` when:\r\n\r\n1. Clicking on a date\r\n2. Clicking on the arrows to change month\r\n\r\n## Note\r\n\r\nSetting `adjustDateOnChange={false}` prevents this behavior."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4267",
+ "title": "Integrate new XY Chart theme value labels styling",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 2509440072,
+ "node_id": "MDU6TGFiZWwyNTA5NDQwMDcy",
+ "url": "https://api.github.com/repos/elastic/eui/labels/Elastic%20Charts",
+ "name": "Elastic Charts",
+ "color": "36cdf7",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-11-16T10:01:25Z",
+ "author_association": "NONE",
+ "body": "Since [v.24.0.0](https://github.com/elastic/elastic-charts/releases/tag/v24.0.0) elastic-charts ships an improved value labels feature, [currently merged in Lens](https://github.com/elastic/kibana/pull/81776) with [a theme customization](https://github.com/elastic/kibana/blob/406a568d0c08f15a8e8c80068e3d22fae0a4db39/x-pack/plugins/lens/public/xy_visualization/expression.tsx#L448).\r\n\r\n[As suggested by @markov00](https://github.com/elastic/kibana/pull/81776#discussion_r518648513) this theme customization should be integrated into EUI.\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4265",
+ "title": "[EuiPopover] Should unmount immediately on parent unmount",
+ "user": {
+ "login": "dej611",
+ "avatar_url": "https://avatars.githubusercontent.com/u/924948?v=4",
+ "html_url": "https://github.com/dej611"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-11-16T09:22:48Z",
+ "author_association": "NONE",
+ "body": "In lens we have a layout with a flyout with a Drag and Drop are where a Popover can be toggled.\r\nIn order to handle automatic close of both flyout and popover there are 2 active `EuiOutsideClickDetector` which make sure both close on user click.\r\n\r\n![popover_closing_slow](https://user-images.githubusercontent.com/924948/99234479-dee53980-27f4-11eb-83d5-2470ae1d0dca.gif)\r\n\r\nWhile the flyout disappear immediately, the popover has a nice fadeout animation which leads to a visual glitch in this scenario (see top left on flyout close), as its parent component gets unmounted before such animation is completed:\r\n\r\n![popover_closing_slow_shadow](https://user-images.githubusercontent.com/924948/99234463-d7be2b80-27f4-11eb-95db-f0e697844d6f.gif)\r\n\r\nBecause of this behaviour, the draggable element which is triggering the popover gets still referenced leading `beautiful dnd` to show a warning + error messages in the console:\r\n\r\n \r\n\r\nI know it's a bit tricky scenarios, but it is currently implemented in Lens.\r\nThe only feasible solution found from the EUI outside world would be [to wait a bit until the popover animation is completed before closing the flyout](https://github.com/elastic/kibana/pull/83059/files/42b0bc5a1aa8503a8c14d737cba86ee3abf46f80#diff-942561e818097c48465ba3a7a66bd73f3ab5470fd5c4e8b2c680aaa4f7af582f), but as suggested in the comment that solution is a bit flacky and it would be better to be addressed at the EUI level.\r\n\r\nOne proposed solution would be to immediately stop the animation and unmount the popover if it detect the parent component gets unmounted.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4257",
+ "title": "Notifications Center Template",
+ "user": {
+ "login": "ryankeairns",
+ "avatar_url": "https://avatars.githubusercontent.com/u/446285?v=4",
+ "html_url": "https://github.com/ryankeairns"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 24,
+ "created_at": "2020-11-11T23:02:09Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "There is a lot to absorb here, please ask questions where things are unclear. \r\nI have taken a best guess at things that felt like possible departures from current EUI and outlined what might be separate pieces under the hood.\r\n\r\n## Desired outcome\r\nA template, pattern, and/or coded prototype demonstrating the flyout* in action\r\n\r\n_*I'm admittedly making a bit of an assumption on this being the MVP but, regardless, it feels like the best first thing to work toward._\r\n\r\n## General themes\r\n- Many notification types, but one stream\r\n- Filtering is used to manage the stream\r\n- Promoted content is positioned up top (e.g. Getting Started 'suggestions')\r\n- Notifications support actions\r\n- Dedicated view for greater control\r\n- Assumed that current \"What's new?\" feed will be inertwined, but there may be technical reason for not doing that initially (i.e. perhaps these are separate header buttons/flyouts)\r\n\r\n## Roadmap\r\n1. **7.11** Visual designs\r\n2. **7.11** EUI templates/component work (this issue)\r\n3. **7.12** Kibana development (likely _only_ the flyout to start; TBD) \r\n4. **TBD** Dedicated notifications center view/page\r\n\r\n## Figma designs\r\nhttps://www.figma.com/proto/jGfhwKragUHtzVUsg7OJLU/Notification-Center-v1.1?node-id=232%3A1206&viewport=-1387%2C-644%2C0.5&scaling=min-zoom\r\n\r\n### Big picture of the flyout\r\n \r\n\r\n## Potential EUI changes for the 7.11 work (i.e. flyout)\r\n### Flyout header & filters\r\n- See the filters button in the header, in particular how it expands down; not sure the flexibility of EuiHeaderFlyout here\r\n- With filters open; see the button list; they strike me as potential toggle buttons (need a checkmark?); alternatively, should these be badges?\r\n \r\n\r\n- Note the presence of the table header with the new (yet to available in EUI) batch controls\r\n \r\n\r\n- Lastly, is the filter badge in the shaded button do-able?\r\n \r\n\r\n### Flyout body\r\nTwo main content pieces here...\r\n1. Promoted notification (aka 'suggestion), pretty straightforward\r\n - The intent is to show only one at any given time with the option to expand and see more/all\r\n - Probably should assume the logo can be optional\r\n - Likely to be a max of two primary/visible actions (e.g. Add now, Dismiss)\r\n - Secondary actions at upper right\r\n \r\n\r\n2. Standard notification, also pretty straightforward\r\n - Optional primary action below text\r\n - Optional overflow actions in upper right\r\n - Similar layout to EuiHeaderAlert\r\n\r\n \r\n\r\n### Flyout footer\r\nNothing strikes me as being atypical here\r\n \r\n\r\ncc:/ @mdefazio @alexfrancoeur "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4250",
+ "title": "[EuiFocusTrap] Virtualized options in EuiComboBox cannot be selected with React v17 when inside EuiFocusTrap",
+ "user": {
+ "login": "wenchonglee",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18256786?v=4",
+ "html_url": "https://github.com/wenchonglee"
+ },
+ "labels": [],
+ "comments": 3,
+ "created_at": "2020-11-11T15:07:02Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hey,\r\n\r\nI recently updated my project to React 17 and noticed that in cases where I had `EuiComboBox` in `EuiModal` and `EuiFlyout`, clicking any options beyond the first \"window\" will cause it to scroll to top.\r\n\r\n![euicombobox_issue](https://user-images.githubusercontent.com/18256786/98826758-12306d00-2471-11eb-83b5-72b07f3753f1.gif)\r\n\r\nI'm relatively sure that this behavior is caused by `EuiFocusTrap`, here's a very quickly put together [codesandbox](https://codesandbox.io/s/sad-moser-83jr2) that reproduces the problem. You can also downgrade the react-dom version down from 17 to 16 and see that it works fine.\r\n\r\nI'm not sure how much the Eui team emphasize on keeping up to React updates. If it's not highly prioritized, I might try to help investigate if I get some free time."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4232",
+ "title": "[EuiPopover] Unpredictable behavior with `buffer`",
+ "user": {
+ "login": "ryankeairns",
+ "avatar_url": "https://avatars.githubusercontent.com/u/446285?v=4",
+ "html_url": "https://github.com/ryankeairns"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-11-05T22:00:39Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "_Note: There is a workaround for this, so it's not urgent, but I figure it's worth documenting in case others run into it._\r\n\r\nWhile updating the profile menu, we noticed that the positioning of the popover menu can be somewhat unpredictable (it's worth noting that it is positioned along the right edge of the screen). When we have only two links, the popover opens `downRight` as expected. When additional links are added, the menu suddenly opens to the left of the button. \r\n\r\nThe workaround was to add `buffer={0}` to the `EuiPopover`. I started going down the rabbit hole of what exactly is happening but got sorta lost in the math within `popover_positioning.ts`.\r\n\r\nTo reproduce this (once [the PR](https://github.com/elastic/kibana/pull/66825) is merged), you can add the following to your `kibana.dev.yml` file:\r\n\r\n```\r\n# Enable cloud plugin\r\nxpack.cloud.id: 'eastus2.azure.elastic-cloud.com:9243$59ef636c6917463db140321484d63cfa$a8b109c08adc43279ef48f29af1a3911'\r\nxpack.cloud.resetPasswordUrl: 'https://cloud.elastic.co/user/settings' # Cloud profile link\r\nxpack.cloud.accountUrl: 'https://cloud.elastic.co/account/activity' # Account link\r\n```\r\n\r\n#### With two links\r\n\r\n \r\n\r\n#### With more than two links\r\n\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4225",
+ "title": "[EuiContextMenu] esc keypress resets focus",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-11-03T21:23:50Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Probably somehow related to https://github.com/elastic/eui/issues/1101\r\n\r\nPressing esc should place focus back on the button that opened it, not back on the ``"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4221",
+ "title": "[EuiSelectable] Coordinate keyboard and mouse movement to only highlight one row",
+ "user": {
+ "login": "LeeDr",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13542669?v=4",
+ "html_url": "https://github.com/LeeDr"
+ },
+ "labels": [
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-11-03T16:08:24Z",
+ "author_association": "NONE",
+ "body": "I'm looking at 7.10 and if my mouse is over the selection list items and I use my keyboard to navigate up and down the list it's rather confusing to see 2 items highlighted. When the keyboard cursor causes the list to scroll, it also causes the stationary mouse to select different items as they move beneath it. It would be great if only one was ever highlighted.\r\n\r\n* on mouse move, highlight only the item the mouse is over\r\n* on keyboard cursor up/down, move the highlight up or down from previously highlighted items (even if it was from the mouse move).\r\n\r\nShowing multiple rows highlighted also makes it confusing on what to expect when I press the enter key. It will select the one I moved to with the keyboard, not the one being highlighted by the mouse.\r\n\r\nHere's the current behavior on 7.10 on Nav Search. My mouse is over the list, and I'm using the keyboard to go up and down;\r\n![NavSearch3](https://user-images.githubusercontent.com/13542669/98009856-a50b4080-1dbb-11eb-963d-ac7d45a856dc.gif)\r\n\r\nI'm looking for behavior somewhat similar to this Windows mouse setting `Hide pointer while typing`;\r\n![image](https://user-images.githubusercontent.com/13542669/98010027-d97efc80-1dbb-11eb-8d8c-256940b0baf8.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4219",
+ "title": "[EuiDatePicker] Current year not shown on year selection if `minDate` is set to `moment()`",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-11-03T15:27:27Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I am using `minDate={moment()}` to prevent users selecting dates in the past and have no limit on future dates.\r\nIf they want to change the year and select 2021, they have no way of getting back to 2020 without going back through all the months.\r\n\r\nWith `minDate={moment()}`\r\n![image](https://user-images.githubusercontent.com/15386491/98005056-8ff8d680-1de8-11eb-9fc2-36fd623eb140.png)\r\n\r\n\r\nWithout `minDate={moment()}`\r\n![image](https://user-images.githubusercontent.com/15386491/98005124-a0a94c80-1de8-11eb-9e9b-21147489aaca.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4213",
+ "title": "[EuiSuperDatePicker] Customize refresh interval text",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-11-02T21:32:23Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "> It would be great if we could have it say `Refreshes every 1 min` or some indication of what the `1 minute` refers to without the addition of a separate label?\r\n\r\n> Our use case is screenshoted below: \r\n \r\n\r\n_Originally posted in #4211 by @yctercero_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4206",
+ "title": "[EuiSelectableTemplateSitewide] Expose a close/clear method to be used",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-10-30T17:22:11Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The way this template is used you will often want to have a global sitewide search implemented with it. This means if a user selects something from this as an action the implementation might want to navigate to a specific page, and might want to clear the input and close the popup. This is currently not easily doable and you'll require to manually emit a couple of events to get a similar behavior. To achieve this I needed in my code to add the following:\r\n\r\n```ts\r\n// Close the popover\r\ninputRef.current.dispatchEvent(\r\n new KeyboardEvent('keydown', { key: cascadingMenuKeys.ESCAPE, bubbles: true })\r\n);\r\ninputRef.current.value = '';\r\n// Make sure the change in value wil be exposed as a change event,\r\n// so the clear button in the input box vanishes\r\ninputRef.current.dispatchEvent(new InputEvent('change'));\r\n(document.activeElement as HTMLElement).blur();\r\n```\r\n\r\nThe implementation in Kibana looks similar https://github.com/elastic/kibana/blob/master/x-pack/plugins/global_search_bar/public/components/search_bar.tsx#L179-L183\r\n\r\nI think this could be improves by exposing a `close(Popover)` and `clear` method on the component, so you would just need to get a ref to the component itself and could call those methods (which internally could also work better via actually setting the required state instead of emitting DOM events)."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4205",
+ "title": "Request: Icons for use in ML map view",
+ "user": {
+ "login": "alvarezmelissa87",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6446462?v=4",
+ "html_url": "https://github.com/alvarezmelissa87"
+ },
+ "labels": [
+ {
+ "id": 885030943,
+ "node_id": "MDU6TGFiZWw4ODUwMzA5NDM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/icons",
+ "name": "icons",
+ "color": "2d0470",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2020-10-30T16:53:46Z",
+ "author_association": "NONE",
+ "body": "ML will be introducing a graph/map view https://github.com/elastic/kibana/issues/75295\r\nThis view a visual way to connect jobs to their source indices/transforms and resulting inference models.\r\n\r\nIcons to represent transform, index, and inference models will be needed. Another icon to use as the map action will also be needed. The 'graphApp' icon is being used temporarily.\r\n\r\nIt would be great to have a default icon for ML as well.\r\n\r\n![image](https://user-images.githubusercontent.com/6446462/97734154-28bce880-1aaf-11eb-8ec7-ac4f3137a4c9.png)\r\n\r\n\r\ncc @mdefazio "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4171",
+ "title": "[Discsss] Add a split button ",
+ "user": {
+ "login": "ryankeairns",
+ "avatar_url": "https://avatars.githubusercontent.com/u/446285?v=4",
+ "html_url": "https://github.com/ryankeairns"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-10-22T16:44:04Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Dashboard has plans to implement a split button design as it would provide both a preferred, single-click call-to-action and a secondary menu with links to other panel building tools. This could presumably be achieved using existing buttons (certainly as separate buttons altogether), but it's a common pattern that I suspect other teams may find useful as well.\r\n\r\nIn the case of Dashboard, the main/left section of the 'Add panel' button would open Lens, directly. The arrow/right section would open a context menu, like so:\r\n\r\n \r\n\r\nAdditional considerations...\r\n- The example shows the filled style, but I supposed this would need to be available in the hollow/outlined version as well\r\n- I presume the 'extra actions' button will only ever be on the right\r\n- Is this a new component or is there some way to sort of smush buttons together via props?\r\n- Ultimately ths _may_ get used in the stacked header nav, not sure what if any complications that presents \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4165",
+ "title": "[EuiFilterGroup] Multi-select example not functional",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-10-21T09:56:24Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "... or at least as how I expected it to\r\n\r\nClicking on an `EuiFilterSelectItem` does not change it's `checked` state.\r\n\r\nIssue #3735 makes it sounds like we are supposed to use `EuiFilterGroup` in conjunction with something else like `EuiSelectable`, but I can't find any examples of this. Have I missed something?\r\n\r\nAlso, this sentence is repeated\r\n>Add the prop `withNext` to remove the border between it and the next `EuiFilterButton` to visually group similar or opposite style filters. "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4158",
+ "title": "Bottom bar too subtle to get properly noticed",
+ "user": {
+ "login": "cristina-eleonora",
+ "avatar_url": "https://avatars.githubusercontent.com/u/44808440?v=4",
+ "html_url": "https://github.com/cristina-eleonora"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 1858600108,
+ "node_id": "MDU6TGFiZWwxODU4NjAwMTA4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/Amsterdam",
+ "name": "Amsterdam",
+ "color": "006DE4",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-10-20T08:43:11Z",
+ "author_association": "NONE",
+ "body": "The appearance of the EUI bottom bar used to confirm changes made on a page is a bit too subtle and can go slightly unnoticed when the user's OS is configured in dark mode and Chrome has the downloads bar at the bottom:\r\n\r\n| Download bar | Download bar + EU bottom bar |\r\n| ------------- | ------------- |\r\n| | |\r\n\r\nBoth bars have a fairly similar color and height and the action on the right hand side. \r\nThe bar becomes less noticeable when using a big screen.\r\n\r\nSimilar issue when using the `Amsterdam` theme:\r\n\r\n \r\n\r\nPossible ways to address this:\r\n\r\n- slightly increase the height of the bottom bar\r\n- use a background color that creates more contrast with the download bar\r\n- change the color of the button to use the secondary color rather than the primary. \r\n\r\nThoughts?\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4157",
+ "title": "[EuiDataGrid] Header Popover does not re-compute the position in scrollable container",
+ "user": {
+ "login": "ince01",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33503750?v=4",
+ "html_url": "https://github.com/ince01"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-10-20T03:14:39Z",
+ "author_association": "NONE",
+ "body": "![Elastic UI Framework - Data grid styling and control](https://user-images.githubusercontent.com/33503750/96535349-cf3d0880-12bb-11eb-8540-2596da9b6dc9.gif)\r\n\r\nHow to fix this issue? I tried adding `repositionOnScroll` prop but it still does not work properly\r\n\r\n_Originally posted by @ince01 in https://github.com/elastic/eui/issues/3924#issuecomment-712560072_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4155",
+ "title": "[EuiBasicTable] row actions are inaccessible",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-10-19T19:49:35Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Summary\r\nWhen row actions are define, **EuiBasicTable** sets `role=button` onto each `` (which are natively of `role=row` and are within the fairly strict rules of table semantics). The solution largely works for keyboard users but can cause a muck for screen reader users.\r\n\r\n## Proposed solutions\r\nThe ideal solution for clickable rows looks something:\r\n```jsx\r\n \r\n {name} \r\n {phoneNumber} \r\n {rowActionButton} \r\n \r\n```\r\n\r\nWith some CSS, you make the rows appear clickable for mouse users but screen reader and keyboard users get deferred to button within a cell. (Also makes the action more obvious to mouse users.)\r\n\r\n## Other solutions\r\nDefining a structure like that might be a pretty big breaking change for EUI so I'm not sure about the practicalities of it. At the very least, it would be nice if EUI had an official way to create the accessible pattern.\r\n\r\nOther options that could be explored are visually hidden buttons (but those can cause havoc for keyboard only users, so maybe something like a skiplink where it comes into view on focus?) or some custom gymnastics with a lot of `aria-live` (but this can be brittle and cause further confusion if not clear from the gate). "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4147",
+ "title": "[EuiSelectable] Sometimes needs double click when used inside EuiPopover",
+ "user": {
+ "login": "andreadelrio",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4016496?v=4",
+ "html_url": "https://github.com/andreadelrio"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1384765288,
+ "node_id": "MDU6TGFiZWwxMzg0NzY1Mjg4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/dependencies",
+ "name": "dependencies",
+ "color": "0366d6",
+ "default": false,
+ "description": "Pull requests that update a dependency file"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-10-15T21:52:54Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When using `EuiSelectable` inside `EuiPopover`, sometimes clicking to make a new selection doesn't work at the first click and the user needs to click a second time for the selection to happen. On the first click the focus goes to the currently selected item instead. This happens when there is scrolling occurring inside `EuiSelectable`.\r\n\r\n![1Screen Recording 2020-10-15 at 2 43 36 PM](https://user-images.githubusercontent.com/4016496/96190059-6d188800-0ef6-11eb-93e6-dfc2c06b4dee.gif)\r\n\r\nThis is currently happening in Discover and Lens as reported [here](https://github.com/elastic/kibana/issues/80765) \r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4140",
+ "title": "[EuiFlexGroup] Responsive mode doesn't respect gutterSize",
+ "user": {
+ "login": "efreeti",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1155504?v=4",
+ "html_url": "https://github.com/efreeti"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-10-15T11:28:49Z",
+ "author_association": "NONE",
+ "body": "When configuring gutter size on EuiFlexGroup in responsive mode it is ignored for bottom margin.\r\n\r\n "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4136",
+ "title": "[EuiComboBox] Suggestion list disappear while searching in a small combobox",
+ "user": {
+ "login": "toanjsonar",
+ "avatar_url": "https://avatars.githubusercontent.com/u/61565716?v=4",
+ "html_url": "https://github.com/toanjsonar"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-10-15T01:47:04Z",
+ "author_association": "NONE",
+ "body": "I am experiencing an issue with EuiComboBox that if its width is small enough, the suggestion list will randomly disappear while I am searching for the option. But the problem is not happening when the Combo box width is bigger.\r\n\r\nThis is happening with the latest eui.\r\n\r\n![captured (2)](https://user-images.githubusercontent.com/61565716/96065795-523e0900-0e4d-11eb-9f83-5e26e3974ee2.gif)\r\n\r\nHere is the sandbox link I used to reproduce the bug: https://codesandbox.io/s/eager-wildflower-09x6y"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4129",
+ "title": "[prop-loader] Better handling of generic types",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-10-12T21:21:40Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Work done in #4125 to eliminate manual props info tables for complex components highlights room for improvement in documenting generic types:\r\n\r\n \r\n\r\n`EuiBasicTable` makes use of cascading generics to type`items`, but this is not immediately clear in the docs, nor is it clear what shape `T` can take.\r\n\r\nUpdates should include some clearer indication that a type is generic, and some documentation about the default value, extension, or shape of the generic. It could be that we are limited by `react-docgen-typescript`."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4118",
+ "title": "[EuiPagination] Fixed width or alternative layout proposal",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-10-06T16:52:20Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Having the next-page button move around like this is rather annoying:\r\n\r\n![image](https://user-images.githubusercontent.com/15386491/95230442-cea36d00-07f9-11eb-996c-731fbe30c1af.png)\r\n![image](https://user-images.githubusercontent.com/15386491/95230460-d6fba800-07f9-11eb-95a3-9a4ef0cd6ec4.png)\r\n![image](https://user-images.githubusercontent.com/15386491/95230418-c64b3200-07f9-11eb-8fde-2d8c0295ffb0.png)\r\n![image](https://user-images.githubusercontent.com/15386491/95230574-fc88b180-07f9-11eb-8843-01ce1dbac8e7.png)\r\n![image](https://user-images.githubusercontent.com/15386491/95230608-04485600-07fa-11eb-846e-7b27442d72df.png)\r\n![image](https://user-images.githubusercontent.com/15386491/95230638-0a3e3700-07fa-11eb-915d-0fa4f50a5c63.png)\r\n\r\nI would use the compressed layout instead but it offers no way to jump to the beginning or end. I'd also like to see a way to jump to any page so am proposing the following:\r\n\r\n![image](https://user-images.githubusercontent.com/15386491/95232461-715ceb00-07fc-11eb-99d0-8170bb0b7aeb.png)\r\n\r\nI'd be very much willing to help but have no idea where to begin\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4115",
+ "title": "[EuiDataGrid] `Full screen` resizes the table but `Exit full screen` does not ",
+ "user": {
+ "login": "j-m",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15386491?v=4",
+ "html_url": "https://github.com/j-m"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-10-06T15:12:22Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "`Full screen` resizes the table so it takes the full width of the screen but `Exit full screen` does not return it to its original state, which causes poor sizing.\r\n\r\nBefore full screen:\r\n\r\n![image](https://user-images.githubusercontent.com/15386491/95220431-5e431e80-07ee-11eb-9b1d-3fc26c49b5bb.png)\r\n\r\n\r\nAfter exiting full screen:\r\n![image](https://user-images.githubusercontent.com/15386491/95220477-6c913a80-07ee-11eb-82d6-35fe8138bbf2.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4109",
+ "title": "[EuiDualRange] Additional inline margin added for long labels",
+ "user": {
+ "login": "Kikky",
+ "avatar_url": "https://avatars.githubusercontent.com/u/614922?v=4",
+ "html_url": "https://github.com/Kikky"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-10-05T17:42:41Z",
+ "author_association": "NONE",
+ "body": "Version: 29.3.0\r\n\r\nWith this code I get 2 range elements with different widths, because of additional inline margin to div.euiRangeTrack (margin-left: 0.8em; for first range element). \r\n\r\n![image](https://user-images.githubusercontent.com/614922/95112892-3601e400-074a-11eb-96c3-854eb1e39385.png)\r\n\r\n```\r\nconst [leverageRangeVal, setLeverageRangeVal] = useState<[number, number]>([30, 3000]);\r\n\r\n const [yearRangeVal, setYearRangeVal] = useState<[number, number]>([1974, 2020]);\r\n \r\n const onYearRangeChange = (value: React.SetStateAction<[number, number]>) => {\r\n setYearRangeVal(value);\r\n };\r\n\r\n const onLeverageRangeChange = (value: React.SetStateAction<[number, number]>) => {\r\n setLeverageRangeVal(value);\r\n };\r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n```\r\nIf I set the values from 0 to 100 like in tutorial - everything is fine and no additional inline margins appear. \r\n\r\nis it a bug or I don't understand something? Thanks in advance."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4108",
+ "title": "[EuiDataGrid] Add ability to sort in-memory cell values without SchemaDetector",
+ "user": {
+ "login": "PhaedrusTheGreek",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4387023?v=4",
+ "html_url": "https://github.com/PhaedrusTheGreek"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 9,
+ "created_at": "2020-10-05T17:26:53Z",
+ "author_association": "NONE",
+ "body": "Today there is no straightforward way to sort in-memory cell values. For example, suppose I had a column called `bytes` (my source data is already in numerical format) that I wanted to display as human readable (`10mb`, `1gb`). The only way to sort these values is to implement a SchemaDetector comparator that parses these human readable strings back to bytes.\r\n\r\nBoth the actual schema detection and the comparator make sense coupled together, since they both are related to parsing already-formatted text. But in the case where a developer already knows the format, it seems correct to omit the implementation of a detector, instead providing a standalone comparator that sorts based on the cell's original value.\r\n\r\nSince `renderCellValue` is the only source of cell data, and directly outputs a React component, there seems to be no real access or concept of underlying cell data. Is there any way that `renderCellValue` could output both an underlying value *and* a rendered cell?\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4101",
+ "title": "Remove duplicative proptypes",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-10-02T18:29:38Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Our TS->proptype conversion works **really** well. So well that it adds 1.6mb of proptypes. A lot of this comes from the prop forwarding that we do in the components, so if component A is used by B is used by C, and C forwards props down to A, those forwarded props' proptypes are re-created on each component - not just added (shared), but re-created. For example, **EuiIcon**'s `iconType` contains a massive list of the valid icon name strings, and this is shared among _many_ components.\r\n\r\nMy initial thought is we can throw away proptypes for any prop not used in that file. At its easiest, we can probably do a quick regex with the prop name + word boundary and omit if it isn't used. This should avoid checking any prop not directly used by a component."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4087",
+ "title": "[EuiCode] Allow inline display of code to be copyable",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-09-30T21:16:59Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Just like **EuiCodeBlock** has `isCopyable`, we could add the same to the inline version, just without an specific icon to display. We could just wrap the whole inline code with the **EuiCopy** to add in the tooltip behavior (or roll its own). \r\n\r\nThe main question(s) are:\r\n1. We probably need to ensure the text is still selectable in case the user just wants a piece of it?\r\n2. Do we turn this on by default? What's the most common occurrence for wanting this?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4077",
+ "title": "[EuiCodeBlock] Copy button sometimes doesn't show when nested in [EuiAccordion]",
+ "user": {
+ "login": "justinkambic",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18429259?v=4",
+ "html_url": "https://github.com/justinkambic"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-09-24T17:56:56Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I've noticed a case where sometimes the copy button doesn't appear in `EuiCodeBlock`s when nested within an `EuiAccordion`.\r\n\r\nI have noticed that expanding and contracting the code block can cause the icon to appear.\r\n\r\n![Sep-24-2020 13-56-06](https://user-images.githubusercontent.com/18429259/94181610-bcc2e100-fe6d-11ea-9565-806c22961867.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4054",
+ "title": "2021 Roadmap - First 6 months",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-09-18T21:23:33Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "# High level themes/projects\r\n\r\n## Documentation [(Project Link)](https://github.com/elastic/eui/projects/5) \r\n\r\nWe will continue providing manually-curated documentation and examples, while exploring ideas for how to better present templates and patterns. We will also explore ways to enhance the docs with automation like source code links and versioning. We will also explore ways to enhance the docs with automation like source code links and versioning.\r\n\r\n## Modularization\r\n\r\nContinuing from 2020, this effort intends to break EUI up into smaller, more consumable pieces. We do not yet know what the boundaries look like, either for development or when importing components into a project, only that finding them is growing in importance and benefit.\r\n\r\n### [CSS in JS (via Emotion)](https://github.com/elastic/eui/issues/3912)\r\n\r\n🚧 Currently underway, we have decided on [Emotion](https://emotion.sh/docs/introduction) for authoring EUI's styles, and are now exploring how to provide customizable, extensible theming with support for color modes (e.g. \"light\" and \"dark\").\r\n\r\n### Begin monorepo split/setup\r\n\r\nTo better support the existing, various packages within this repo it needs to move to a more \"traditional\" monorepo with proper tooling. This will allow us to better support downstream uses both at Elastic and by our community ❤️. It is also a requirement for separating up the `@elastic/eui` package (no expectation yet what that actually means or looks like).\r\n\r\n## Bug fixes & other improvements\r\n\r\nBarring any incoming large component work, the main focus of the first half of 2021 will be to strengthen the **existing** components. We will tackle our backlog of issues and in the same instance look for ways to increase efficiency at the code level.\r\n\r\n### Component level projects\r\n\r\nWe know a number of our components could use some love and care, including bug fixes and updated feature support. Some of these (below) are already being tracked.\r\n\r\n- [ ] [**EuiTooltip**] Flexibility, accessibility & guidelines #4040 \r\n - [ ] Other tooltip/popover related issues: #1235, #1023, #1454, #2022, #3456\r\n- [ ] [**EuiFormRow**] API and a11y cleanup #2493\r\n- [ ] Use [**EuiSelectable**] in more components (like EuiComboBox) #4302 #3733 #3625\r\n - [ ] Fix the many issues relating to [**EuiComboBox**] [Issues](https://github.com/elastic/eui/issues?q=is%3Aissue+is%3Aopen+EuiComboBox)\r\n- [ ] Rewrite [**EuiDatePicker**] with less reliance on outside library UI's #3901\r\n- [x] Consolidate [**EuiText**] and [**EuiMarkdownFormat**] styling #4145\r\n- [ ] Create a theme / components / guide for using Monaco code editor #499\r\n- [ ] Create a [**EuiToolbar**] for consolidated experiences #4010, #3500\r\n- [x] Look into more/easier ways to create selection groups (ie #4000)\r\n- [ ] Investigate CSS Grid as alternative to FlexGrid components #55\r\n- [x] **EuiCard**'s `description` rendering should be conditional #4546\r\n\r\n### Testing\r\n\r\n#### Unit & component level\r\n\r\nOur unit testing strategy is incomplete. For example, a major goal of EUI is to provide out-of-the-box accessibility that is either pre-configured or at least easy to implement with a pattern. That requires a lot of integration with browser APIs, which the existing jest environment falls short in. We will explore alternative environments like [Cypress](https://www.cypress.io/) to enable better, more complete testing.\r\n\r\n#### Validating non-breaking changes #2760\r\n\r\nOutside of choosing React, EUI strives to be agnostic about the technical decisions of consuming applications. This requires a number of potential setups to be considered when making platform-level decisions and in some cases it's easy to accidentally neglect some case and release a breaking change without considering its full impact. We are looking to create a CI integration which will allow us validate PRs against a set of projects.\r\n\r\n### Typescript definitions update\r\n\r\nLast year every component was converted to TypeScript (#1557) - thank you to everyone who helped! This total conversion now provides better ways to generated the _eui.d.ts_ definitions file, and doing so will remove code & accuracy in some edge cases.\r\n\r\n# Support\r\n\r\nWe will continue to support ongoing design and development efforts across the Elastic organization. As a part of that we are tracking a number of accessibility improvements ranging from small cleanups to improving still across larger concepts.\r\n\r\n- [ ] [Accessibility](https://github.com/elastic/eui/projects/2)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4052",
+ "title": "Integrate EuiLink into the docs' routing",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-09-18T14:54:25Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "We do not prescribe what routing tech/framework to use, but because our documentation uses react-router, its `Link` component is used in our documentation. This also has negative impact on the code sandbox demos.\r\n\r\n* Locate uses of react-router's **Link** component\r\n* Replace with **EuiLink**\r\n\r\n_Originally posted by @chandlerprall in https://github.com/elastic/eui/pull/4046#r491004707_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4040",
+ "title": "[EuiTooltip] Flexibility, accessibility & guidelines",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-09-15T21:02:20Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Flexibility\r\n\r\nCurrently, adding EuiTooltip can be a bit of a pain because you have to wrap your component with the EuiTooltip component, which creates a wrapping DOM element, which may not display as you need so you have to pass an `anchorClassName` to override the display...\r\n\r\nA couple of ways we can make adding tooltips easier and more flexible:\r\n\r\n- [ ] Allow most components to simply accept a `tooltipContent` prop that will automatically add the necessary `ref`s to the component to position the tooltip against without having to create a wrapper. (Related: #2027)\r\n- [ ] EuiTooltip will still be available as a component as it exists today with some extra allowances like wrapping around a `string` in which the tooltip's anchor wrapper would become focusable. (Related: #2292)\r\n- [ ] Implement an extra long delay and probably smaller sized tooltip to replace browser `title` tooltips. This would help us to add our own tooltips to truncated components without relying on `title` which has questionable a11y support. (Related: #1923, #3588, #4085)\r\n- [ ] For icons or other elements that have meaning without text (but the textual context is helpful) and where we usually add `aria-label`, we could try to simplify this combination of `aria-label` and `title` with a tooltip. So that the screenreaders appropriately give meaning to the icon while their textual description can also be given for mouse users. (Related: #2021)\r\n\r\n## Accessibility\r\n\r\nFollowing watching [this presentation](https://www.youtube.com/watch?v=lb0_v7D4kbs) on the accessibility and overall useful \"tips\" for tooltips. My takeaways for [**EuiTooltip**](https://elastic.github.io/eui/#/display/tooltip) (understanding that tooltips in EUI are here to stay 😉 ):\r\n\r\n✅ On focus\r\n✅ No dismiss on timeout\r\n❌ Touch/eye control devices\r\n❌ Dismiss without moving “cursor”\r\n❌ Tooltip content is hoverable\r\n\r\n- [ ] Could create a toggle-able version (clickable anchor though couldn’t have any other function).\r\n- [ ] And/or just simply supply a close button close to the triggering element. We’d have to implement the triangle path to the tooltip. #3024\r\n- [ ] Even though she said `ESC` may not be ideal, it may be a good solution in **addition** to a close button\r\n\r\n## Guidelines\r\n\r\nSome additional bits we should add to doc guidelines for usage:\r\n - Keep it short\r\n - Keep in mind the purpose: naming or describing\r\n - Keep it non-essential"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4034",
+ "title": "[EuiDataGrid] Sorting on datetime schema does not work",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-09-12T16:34:59Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Sorting on columns whose schema type is `datetime` does not work. It instead sorts the (string) value inside that column alphabetically ascending or descending.\r\n\r\nSteps to reproduce: Go to https://elastic.github.io/eui/#/tabular-content/data-grid-schemas-and-popovers and try to sort by the `datetime` field in the column and see how the rows are not ordered by date, but instead by the alphabetical order of the week name in the front:\r\n\r\n![screenshot-20200912-183303](https://user-images.githubusercontent.com/877229/93000121-7b097080-f526-11ea-9f78-70beb2bf1c39.png)\r\n\r\n**Current workaround:**\r\nYou need to register a custom schema detector with a fixed `comparator` function."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4026",
+ "title": "[EuiSuperDatePicker] Does not properly restore relative dates",
+ "user": {
+ "login": "matt-moses",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8397647?v=4",
+ "html_url": "https://github.com/matt-moses"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-09-10T20:23:33Z",
+ "author_association": "NONE",
+ "body": "SuperDatePicker does not properly restore relative dates\r\n\r\nSteps to reproduce:\r\n1. Go to https://elastic.github.io/eui/#/forms/super-date-picker and to the first time picker on that page\r\n2. Click start date to edit the start date and enter `15` `months ago`\r\n![image](https://user-images.githubusercontent.com/8397647/92798784-ddbd0980-f378-11ea-975b-874cdea6a1e4.png)\r\n3. Observe SuperDatePicker puts human friendly desc in start date of `~ 1 year ago` which is handy.\r\n4. Click `Update`\r\n5. Observe the time picker reflects `15 months ago` just fine.\r\n![image](https://user-images.githubusercontent.com/8397647/92799079-21177800-f379-11ea-9c5c-b68a0b70272f.png)\r\n6. Click to edit the start date again\r\n7. Observe that `1` `year ago` is populate in the time picker GUI instead of `15 months ago`. Note the underlying date is still correct (verify this by looking at the absolute date at the bottom of the picker).\r\n![image](https://user-images.githubusercontent.com/8397647/92799418-6340b980-f379-11ea-99c0-7e470bf54bd5.png)\r\n8. As a user I would expect it to restore `15 months ago` and if I manually fix it myself it causes the dialog to get stuck in \"update mode\" (see https://github.com/elastic/eui/issues/4025)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4024",
+ "title": "[EuiDragDrop] Inefficiencies for specific use-case",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 9,
+ "created_at": "2020-09-09T17:18:12Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When we originally implemented this piece of UI (https://github.com/elastic/kibana/pull/66021/commits/74b69c7735a17b2e334844760cee71ce05d7ce76) we were using the DnD component provided by EUI. For the specific task of building ingest pipelines we hit a few snags:\r\n\r\n1. Processors in pipelines nest into one another. This means drop sites need to nest into one another -- something react-beautiful-dnd (the lib used by EUI) does not support (https://github.com/atlassian/react-beautiful-dnd/issues/1001)\r\n2. Processor pipelines can get tall. _Really_ tall. In some cases the UI will have to render ~150 processors. Dragging is not a very suitable UX in this case for certain actions where users might want to copy a processor and move it some 100 processors down (or up, or into another processor).\r\n3. With the way that react-dnd-works we started seeing performance issues when you start dragging (a slight lag in responsiveness) - this was sort of fixable by using react-virtualize (or react-window which this still needs to migrate to), but I'm not sure it was to an acceptable level.\r\n\r\nFor those reasons we pivoted to something better suited to the case of nested drop sites and really tall lists that need to be as performant as possible. Of the reasons I mentioned I'd say the first two are the most important. It would be cool to chat further about this specific problem and perhaps it is something EUI can come to solve?\r\n\r\n_Originally posted by @jloleysens in https://github.com/elastic/kibana/pull/76885#issuecomment-689400141_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4019",
+ "title": "[EuiDataGrid] Make column width editable / removable with keyboard",
+ "user": {
+ "login": "kertal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/463851?v=4",
+ "html_url": "https://github.com/kertal"
+ },
+ "labels": [
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 9,
+ "created_at": "2020-09-08T12:43:08Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "With the introduction of the column header menu #3087 \r\n\r\n![](https://user-images.githubusercontent.com/324519/76722137-99212000-66ff-11ea-8e92-19faa7462f1b.png)\r\n\r\nThis could be used to provide a way to edit the column's width, which is currently just possible by mouse. Currently the user can't reset this value once set. So an action like `Change width' would be useful.\r\n "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/4010",
+ "title": "[Spec] Utility bar for meta information and bulk selection actions",
+ "user": {
+ "login": "MichaelMarcialis",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3884767?v=4",
+ "html_url": "https://github.com/MichaelMarcialis"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1261750623,
+ "node_id": "MDU6TGFiZWwxMjYxNzUwNjIz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/spec",
+ "name": "spec",
+ "color": "d64db6",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-09-04T19:22:31Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Summary\r\n\r\nI believe we have a need for a new EUI component that would allow us to prepend meta information and bulk actions to adjacent, related EUI components (namely the tabular-focused ones). The use case for such a supplementary component would be to:\r\n\r\n1. Provide users basic meta information on object/row counts for tabular components (though there may be benefits in using such a component outside of tabular-only contexts). \r\n2. Conditionally inform users of any current selection status (for example, selected object/row counts).\r\n3. Conditionally make available bulk actions, if/when such selections are made. \r\n4. Optionally provide an open area for additional controls and actions.\r\n5. Provide a consistent means in which to deliver this information and actions to users across EUI and Kibana.\r\n\r\n![summary](https://user-images.githubusercontent.com/3884767/92269659-9f27da80-eeb2-11ea-9077-781e156b2a59.gif)\r\n\r\n## History\r\n\r\nSpecifically regarding bulk selection and actions, past patterns have emerged across Kibana that required either:\r\n\r\n1. Shuffling around other interface elements (for example, within an `EuiSearchBar` component) to make way for the conditional appearance of bulk action buttons.\r\n2. Static appearance of bulk action buttons in a disabled state, until bulk selection occurs (at which point the buttons would become enabled for use).\r\n\r\n![shuffle](https://user-images.githubusercontent.com/3884767/92271819-74d81c00-eeb6-11ea-96e1-f8b996239a20.gif)\r\n\r\n![static](https://user-images.githubusercontent.com/3884767/92271495-e794c780-eeb5-11ea-89f7-0116ac10697c.gif)\r\n\r\nNeither of the above are desirable solutions. The shuffling of interface elements can be confusing and potentially obtrusive to users, as it usually demands diminishing the presence of other elements on the page (such as a search bar). The disabling of bulk action buttons artificially bloats the page with controls users are unable to interact with until a bulk selection is made. The hope is that this newly proposed component would alleviate both of these concerns and provide a consistent design pattern.\r\n\r\nIt's also worth mentioning that the arrival of the new `EuiDataGrid` component also brought with it a means in which designers and engineers are able to implement bulk actions, but it is currently not an independent component and is tied to `EuiDataGrid`. Ideally, this would be a separate, agnostic component that could be prepended to any existing EUI element (`EuiDataGrid`, `EuiBasicTable`, others) to provide meta information and bulk actions in a consistent and predictable manner.\r\n\r\n![datagrid](https://user-images.githubusercontent.com/3884767/92273138-d7cab280-eeb8-11ea-865d-112a05408191.gif)\r\n\r\n## Desired Features\r\n\r\n### Functional\r\n\r\n#### Default Meta Information\r\n\r\nThe component should be expected to always present the user with a minimum amount of information related to the content the are currently viewing. In the case of tabular data, the default expectation would be to show a total count of the current objects/rows being presented (based on the currently applied search/filter values or lack thereof).\r\n\r\n#### Conditional Bulk Selection Information & Actions\r\n\r\nAssuming the content related to the utility bar supports bulk actions, the selection of one or more objects/rows should cause a count of those selected objects/rows to appear adjacent to the aforementioned total count. \r\n\r\nThis selection count should also double as a button. Interacting with this button should open a context menu of bulk actions the user can perform on the selected objects/rows. The bulk action context menu should include the option to clear the current bulk selection and at least one additional bulk action at a minimum. This bulk selection count button (and by relation, the total count) should be left-aligned in order to maintain a close proximity to the related content's bulk selection controls (which typically appear in the first, left-hand column of tabular components).\r\n\r\nIf the related content (ex. tabular component) is paginated, then the use of any \"select-all-objects-on-this-page\" option should trigger the conditional appearance of a \"Select everything on all pages\" button (which will cause all objects/rows on all pages to be included within the current bulk selection). Choosing either the clear selection action from the bulk action context menu or interacting with the \"select-all-objects-on-this-page\" option again should clear the current bulk selection entirely (causing all conditional bulk actions to disappear again).\r\n\r\n#### Optional Props & Children\r\n\r\nIdeally, there would be an optional border prop included in this component, which would allow designers and developers to choose how the component should appear in close proximity to a variety of existing EUI components.\r\n\r\nAssuming all meta information and bulk actions are left-aligned as detailed above, we can also utilize the right-hand portion of the proposed utility bar component by making it available as a freeform actions area (that accepts any React node). As we cannot assume all actions for content will always be bulk-oriented actions, this will give designers an additional area of possible interactivity without demanding additional space be used (further ensuring consistency). For example, here is an older example of the utility bar concept that was proposed for SIEM to allow users to perform aggregation and column customization actions, in addition the any bulk actions.\r\n\r\n![image](https://user-images.githubusercontent.com/3884767/92276744-98539480-eebf-11ea-8ef6-dfabba5ee610.png)\r\n\r\n### Aesthetic\r\n\r\nIn order to support the easy accompaniment of this component with a wide variety of EUI components, I believe that a minimal design would be best.\r\n\r\n## Open Questions\r\n\r\n- Should such a component as this replace or otherwise alter the current controls of the `EuiDataGrid` component? I assume the answer will be \"yes\" for consistency, but to what degree may be worth discussing in advance.\r\n- Assuming the current design from the provided examples is to be adopted to some degree, does this also warrant the need for a new button size (`xxs`) to be made available? I've personally desired a 12px font-size `EuiButtonEmpty` option in a number of circumstances, including here.\r\n- @hbharding from the Observability team recently extended this concept by [including a bar chart to the proposed utility bar component](https://www.figma.com/proto/k68l5ot8dxxT7MI5M8InCg/Ingest-Manager-Beta-1?node-id=3610%3A451&viewport=683%2C157%2C0.02454013004899025&scaling=scale-down) to provide additional context to the related content. Do we wish to account for such possibilities as being part of the proposed utility bar component? We could keep the utility bar and bar chart separate from one another, however there may be semantic and accessibility value in keeping such a visualization and its legend together in the markup.\r\n\r\n## Additional Examples\r\n\r\n- [Scheduled Reporting Prototype](https://www.figma.com/proto/S6nc2G5GgYj1qXjRJmqbOv/Awaiting-Dev-Scheduled-Reporting?node-id=83%3A32207&viewport=-395%2C297%2C0.05979277938604355&scaling=min-zoom)\r\n- [Spaces & Roles Solution Grouping Prototype](https://www.figma.com/proto/dBta1q3JgFe3Cfhw5h76Oq/Awaiting-Dev-Spaces-and-Roles-Solution-Grouping?node-id=110%3A3761&viewport=-1940%2C221%2C0.22199377417564392&scaling=min-zoom)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3996",
+ "title": "[EuiFilterSelectItem] Documentation example doesn't explain usage",
+ "user": {
+ "login": "cmac458",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1540312?v=4",
+ "html_url": "https://github.com/cmac458"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-09-02T15:52:40Z",
+ "author_association": "NONE",
+ "body": "EuiFilterSelectItem as far as I can see doesn't explain how to handle onChange events for this component, it's not quite the same as using EUISelectable as that has a top-level onChange event that returns the new options. Because the options of this component are rendered manually it suggests you need to handle each click\r\n\r\nhttps://codesandbox.io/s/mou52?file=/index.js"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3981",
+ "title": "Changes to generated TypeScript definitions",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-08-31T18:52:54Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Much of our process for generating _eui.d.ts_ - which provides typescript support to downstream projects - is built around our previous setup mixing JS & TS, and is largely obsolete. It is also causing issues (#3979).\r\n\r\nA previous attempt at this change ran Kibana's type check script out of memory."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3979",
+ "title": "Webstorm 2020.2 Cannot suggest import any component from Elastic UI",
+ "user": {
+ "login": "maxifom",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20924207?v=4",
+ "html_url": "https://github.com/maxifom"
+ },
+ "labels": [
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 15,
+ "created_at": "2020-08-31T14:05:55Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hello. I have Webstorm 2020.2 and when I type any component to import for example EuiButton it doesn't know that. Is it only my problem or anyone has the same problem and know how to fix it. \r\nP.S. Not using TypeScript, just React with create-react-app and added eui as dependency"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3975",
+ "title": "[EuiButton] Loses firmness after the first click",
+ "user": {
+ "login": "monfera",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1548516?v=4",
+ "html_url": "https://github.com/monfera"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-08-29T20:37:04Z",
+ "author_association": "MEMBER",
+ "body": "![button](https://user-images.githubusercontent.com/1548516/91645703-931dc200-ea47-11ea-8f96-298145495604.gif)\r\n\r\nTried it with and without an event handler with recent `eui`. Simplest case:\r\n```\r\nDone \r\n```\r\n\r\nTo restore firmness, I must click somewhere outside the button. It'll be good again for a single click."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3964",
+ "title": "Font features not working with Inter served by Google Fonts",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-08-25T17:04:19Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I tested this on the Google Font site and it's not working there which is how I determined that's where the problem is. \r\n\r\nIt was originally found when trying to use the `tnum` feature for the values of EuiProgress:\r\n\r\n> Essentially tabular numbers makes the numbers of a font behave almost like they are a monospace font so that when they are lined up in a column, they align better. Here's a screenshot of how it's **supposed** to behave with Inter. As I mentioned in the meeting, however, this is not currently working with the Google font. So I'll have to explore that later.\r\n\r\n \r\n\r\n_Originally posted by @cchaos in https://github.com/elastic/eui/pull/3948#issuecomment-680149086_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3961",
+ "title": "[EuiIcon] Title attribute generates React console error",
+ "user": {
+ "login": "nyurik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1641515?v=4",
+ "html_url": "https://github.com/nyurik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-08-25T02:13:18Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "```js\r\nimport { ReactComponent as icon } from \"./test.svg\";\r\n...\r\n \r\n```\r\n\r\n shows this error when drawing an SVG:\r\n\r\n> Warning: React does not recognize the `titleId` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `titleid` instead. If you accidentally passed it from a parent component, remove it from the DOM element.\r\n in svg (at test.svg:3)\r\n in SvgComponent (created by EuiIcon)\r\n in EuiIcon (at index.js:13)\r\n in StrictMode (at index.js:12)\r\n in Demo (at index.js:18)\r\n\r\nSee [demo](https://codesandbox.io/s/icon-with-title-error-exlux?file=/index.js)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3960",
+ "title": "[EuiSearchBar] Clear button hides RTL text",
+ "user": {
+ "login": "nyurik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1641515?v=4",
+ "html_url": "https://github.com/nyurik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 7,
+ "created_at": "2020-08-24T18:29:11Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When `` is in a RTL direction, the text is hidden behind the clear button. Also, both search and clear icons stay in the same location as for LTR, but should be reversed.\r\n\r\nExample -- open [sandbox](https://codesandbox.io/s/rtl-broken-in-searchbar-pyhkf?file=/index.js) and start typing in the search bar -- observe that the clear button appeared on top of the text.\r\n\r\n![image](https://user-images.githubusercontent.com/1641515/91082058-14272480-e616-11ea-8fa5-5003a3425590.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3928",
+ "title": "[Discuss] \"In-place\" text editing UX",
+ "user": {
+ "login": "jloleysens",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8155004?v=4",
+ "html_url": "https://github.com/jloleysens"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1913258010,
+ "node_id": "MDU6TGFiZWwxOTEzMjU4MDEw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20spec",
+ "name": "needs spec",
+ "color": "0be51d",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-08-17T09:25:30Z",
+ "author_association": "NONE",
+ "body": "In the Ingest Node Pipelines plugin in Kibana (Home > Stack Management > Ingest Node Pipelines) there is a component that provides an \"in-place\" or \"inline\" text editing UX. Specifically when editing a pipeline (see gif).\r\n\r\nThis component/behaviour seems well suited to living in EUI and should have an accompanying style guide explaining where it can be useful.\r\n\r\nFor instance, a capability like this can help make certain editing experiences more streamlined while not cluttering up the UI with text boxes or sending users through multiple clicks to edit a value. This is different to the more typical flow of see a thing, click to expand the details, then click edit. Only then is the user presented with a text field to enter or edit a value.\r\n\r\nAt an implementation level, this could be part of the existing text field component and simply be a prop that gets set to adapt the appearance.\r\n\r\n\r\n\r\nGif\r\n \r\n\r\n![Aug-17-2020 11-15-21](https://user-images.githubusercontent.com/8155004/90379452-0e13cf80-e07b-11ea-88d0-d0eaa05141f6.gif)\r\n\r\n\r\n "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3912",
+ "title": "[Meta] CSS-in-JS: Switching to `emotion`",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-08-13T20:26:47Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This is a meta ticket to discuss the rollout plan of the CSS in JS solution (Emotion). It is for documenting the expected upgrade process both within EUI and by consuming applications, and being transparent about our timeline.\r\n\r\n## (Tentative) Timeline & tasks\r\n\r\n### Spring 2021:\r\n\r\nGet the contexts built out and (partially) used in the EUI components and docs, as well as thoroughly tested in downstream applications like Kibana and Cloud. Figure out all the dependencies, hooks and possible state management that go with it.\r\n\r\n- [x] **EuiContext**: Overall context layer that would encompass theming, layering, etc… (#4440)\r\n- [x] **EuiThemeContext**: Theme specific layer with at least these properties: (#4440)\r\n - [x] `themeName`\r\n - [x] `colorMode: ‘light’ | ‘dark’`\r\n - [x] `{ colors: {primar, secondary, etc} }`\r\n- [x] `` aka: `{component} ` for switching of themes at the component level (#4440)\r\n\r\n### Summer 2021:\r\n\r\n- [x] Build out the theme layer (#4643)\r\n - [x] Convert all the SASS invisibles (variables, functions, etc) to JS\r\n - [x] Usage documentation\r\n- [x] Enable Emotion in Kibana (https://github.com/elastic/kibana/pull/98157)\r\n- [ ] **Initial release of context layer and global theme** (#4511)\r\n- [ ] Add global theme context provider in Kibana (elastic/kibana#108972)\r\n\r\n### Fall 2021:\r\n\r\nStart shifting component styles from SASS to JS. This part will probably take a full year and probably means phasing out the old 'legacy' theme, making Amsterdam default.\r\n\r\n- [ ] EUI breaking/major release with peerDep on `@emotion/react` (soon) **from this point forward using only the generated CSS is not supported, EUI must be used through React**\r\n- [ ] Use `EuiMark` as a good test subject (#4575)\r\n- [ ] Add global reset file via Emotion\r\n\r\n### Beyond full conversion:\r\n\r\n- [ ] Deprecate using EUI's SCSS mixins/variables\r\n- [ ] Deprecate using EUI's classnames\r\n- [ ] Remove class names (after a lengthy deprecation period)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3901",
+ "title": "[EuiDatePicker] With even more EUI",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-08-12T20:21:29Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "#3476 and #3850 highlight different cases where features implemented in the vendored `react-datepicker` either cause problems (`StrictMode` warnings, from a third-party lib) or don't match the expectations of EUI consumers (popover service logic differences).\r\n\r\nIn both instances EUI provides components (EuiFocusTrap, EuiPopover) that would solve the underlying issue while providing a better overall feature experience. The current vendor structure disallows EUI components in ReactDatepicker, and changing dependencies in the vendor fork would cause even further divergence.\r\n\r\nIt's been [discussed](https://github.com/elastic/eui/issues/3476#issuecomment-628225900) that EuiDatePicker could become a component composed of EuiFieldText, EuiPopover, and Calender (from `react-datepicker`). This would dramatically reduce EUI reliance on `react-datepicker` but would require a large amount of logic and functionality transfer (e.g., all open/close and `moment` parsing logic).\r\n\r\nWant to open discussion on options to resolve open issues and decided on the future path of `packages/react-datepicker/`\r\n\r\n//cc @chandlerprall "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3889",
+ "title": "[EuiModal] Accessibilty and experience updates",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-08-11T18:09:34Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Recent focus trap updates (#3631) raised the question of the default behavior of `EuiModal` as it relates to `ownFocus` and other features the new library affords (scroll locking and pointer-event disabling).\r\n\r\nLet's discuss what (if any) changes to make, and what longstanding a11y issues we can resolve in the process.\r\n\r\n* `ownFocus` by default\r\n* #502 and #699 propose various changes\r\n* `EuiOverlayMask` as part of `EuiModal` \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3850",
+ "title": "[EuiDatePicker] findDOMNode is deprecated in StrictMode. in EuiDatePicker",
+ "user": {
+ "login": "kurt-o-sys",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2430465?v=4",
+ "html_url": "https://github.com/kurt-o-sys"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-08-01T20:47:20Z",
+ "author_association": "NONE",
+ "body": "Having an overlay with an EuiDatePicker (using formik and yup for form control), I seem to run into issues with `findDOMNode` (when in `Strict` mode). Somewhere, depending on the code path, it seems there are still references to DOM Nodes. Can this be fixed?\r\n\r\n`DatePicker.js#L17-27`:\r\n```\r\nconst DatePicker = ({date, changeDateTo}) => {\r\n const {i18n} = useTranslation()\r\n return (\r\n \r\n )\r\n}\r\n```\r\n\r\n`ChooseActivityDateForm.js#L89-99`:\r\n```\r\nexport default ({formik}) => {\r\n const changeDateTo = date => {\r\n formik.setFieldValue('calendar.date', date)\r\n }\r\n const date = formik.values.calendar.date;\r\n return (\r\n \r\n \r\n \r\n \r\n ```\r\n\r\nresults in:\r\n\r\n```\r\nWarning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Calendar which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://fb.me/react-strict-mode-find-node\r\n in div (created by CalendarContainer)\r\n in CalendarContainer (created by Calendar)\r\n in Calendar (created by OnClickOutside(Calendar))\r\n in OnClickOutside(Calendar) (created by DatePicker)\r\n in div (created by InnerPopper)\r\n in InnerPopper (created by Context.Consumer)\r\n in Popper$1 (created by PopperComponent)\r\n in Manager (created by PopperComponent)\r\n in PopperComponent (created by DatePicker)\r\n in DatePicker (created by Context.Consumer)\r\n in EuiValidatableControl (created by EuiDatePicker)\r\n in div (created by EuiFormControlLayout)\r\n in div (created by EuiFormControlLayout)\r\n in EuiFormControlLayout (created by EuiDatePicker)\r\n in span (created by EuiDatePicker)\r\n in span (created by EuiDatePicker)\r\n in EuiDatePicker (at ChooseActivityDateForm.js:20)\r\n in DatePicker (at ChooseActivityDateForm.js:97)\r\n in div (created by EuiFlexItem)\r\n in EuiFlexItem (at ChooseActivityDateForm.js:96)\r\n in div (created by EuiFlexGroup)\r\n in EuiFlexGroup (at ChooseActivityDateForm.js:95)\r\n in Unknown (at AddActivityForm.js:47)\r\n in div (created by EuiFlexItem)\r\n ...\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3845",
+ "title": "[EuiPopover] Let 'anchorPosition' determine anchor position, regardless of screen real estate",
+ "user": {
+ "login": "i-a-n",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1937355?v=4",
+ "html_url": "https://github.com/i-a-n"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-07-31T23:23:49Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hi team, I noticed that `EuiPopover` wasn't respecting `anchorPosition` if it calculated that the content took up too much screen real estate. It simply treats `anchorPosition` as a preference, and overrides it when necessary. See the example in the documentation:\r\n\r\n \r\n\r\nHowever, the documentation also states:\r\n\r\n> The alignment and arrow on your popover can be set with the anchorPosition prop. These positions will not update based upon screen real estate and will stick to the positions you declare.\r\n\r\nSo we have a case of documentation-implementation mismatch. This was discussed on Slack [in this thread](https://elastic.slack.com/archives/C7QC1JV6F/p1596234657426000).\r\n\r\nWe need to be able to position a popover panel at a certain position regardless of screen real estate. Is that a property you would consider implementing? We definitely do need it, although I certainly understand why you don't think we should be doing this. However, as we are mimicking a dropdown with an `EuiInputPopover`, there are many states—especially in mobile views—that look and feel awkward when they reposition themselves above the trigger. \r\n\r\n \r\n\r\nSo we do think this is a feature that would help us out here quite a bit. Thanks for your time!"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3844",
+ "title": "[EuiButtonEmptyProps & EuiButtonIconProps & EuiButtonProps] Type don't match expectations",
+ "user": {
+ "login": "bevacqua",
+ "avatar_url": "https://avatars.githubusercontent.com/u/934293?v=4",
+ "html_url": "https://github.com/bevacqua"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-07-31T20:28:16Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Expectation is:\r\n\r\n```ts\r\nimport { PropsOf, EuiButtonEmpty, EuiButtonIcon, EuiButton } from '@elastic/eui'\r\n\r\ntype EuiButtonEmptyProps = PropsOf\r\ntype EuiButtonIconProps = PropsOf\r\ntype EuiButtonProps = PropsOf\r\n```\r\n\r\nBut those aren't the types we export"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/pull/3837",
+ "title": "[DRAFT] Allowing EuiFormRow props on EuiFieldText",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [],
+ "comments": 13,
+ "created_at": "2020-07-30T20:58:40Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "### Ref #2493\r\n\r\n~This is just a quick POC of~ Establishing a pattern of how we can extend **EuiFormRow** props on each input field component so that they can personally handle the correct values to pass down to **EuiFormRow**.\r\n\r\nThis doesn't explicitly \"fix\" all the issues from the referenced ticket, but it just showcase my idea of how easy it could be to not break current implementations but allow people to convert to the new format.\r\n\r\n \r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3807",
+ "title": "[EuiCodeEditor & EuiCodeBlock] Recommendations and migration guidance",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-07-27T19:00:45Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "**EuiCodeEditor is now deprecated and will be removed in a future version of EUI**\r\n\r\n- [x] If you just want to represent a more or less static code snippet (max length around 15 lines) use EuiCodeBlock.\r\n- [x] If you need capabilities to edit, or want to print longer code (or potentially don't know how long, because you're printing JSON from APIs), [use CodeEditor (within Kibana)](https://github.com/elastic/kibana/tree/master/src/plugins/kibana_react/public/code_editor).\r\n- [x] Don't use EuiCodeEditor for new places more, and instead favor implementing a Monaco editor like CodeEditor.\r\n\r\n_Originally posted by @timroes in https://github.com/elastic/kibana/issues/71425_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3738",
+ "title": "Debugging typescript files in development",
+ "user": {
+ "login": "sulemanof",
+ "avatar_url": "https://avatars.githubusercontent.com/u/31325372?v=4",
+ "html_url": "https://github.com/sulemanof"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-07-14T13:59:34Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It is impossible to debug typescript files in development mode. Number of line where a breakpoint is placed is not in sync with the source map generated tree.\r\nThis really complicates debugging stuff in development 😞 \r\n\r\nSteps to reproduce:\r\n- place the `debugger` statement somewhere in the EUI component code (`*.tsx` file);\r\n- start the development server via `yarn start`;\r\n- open a browser with dev tools;\r\n- the script is paused, but the line is not correct, e.x. :\r\n I placed the `debugger` on the line `221` \r\n \r\n ![image](https://user-images.githubusercontent.com/31325372/87434224-dc7a9500-c5f2-11ea-8ee1-bb04d2274f15.png)\r\n\r\n\r\n the script stops on line `221`, but it's other line after babel compiled it to `.js`:\r\n\r\n \r\n ![image](https://user-images.githubusercontent.com/31325372/87434377-12b81480-c5f3-11ea-94d5-f8d5a8824238.png)\r\n\r\n\r\n The stopped line is incorrect:\r\n\r\n ![image](https://user-images.githubusercontent.com/31325372/87434469-354a2d80-c5f3-11ea-9ac6-eaaa02a6190a.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3735",
+ "title": "[EuiFilterGroup] Rebuild multi-select demo using EuiSelectable ",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 912933648,
+ "node_id": "MDU6TGFiZWw5MTI5MzM2NDg=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/WCAG%20A",
+ "name": "WCAG A",
+ "color": "1ca89a",
+ "default": false,
+ "description": "Level A WCAG Accessibility Criteria"
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-07-13T21:19:15Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The existing EuiFilterGroup multi-select demo has a few a11y shortcomings and differs in implementation from EuiSelectable which has been crowned as the future implementation of dropdown-like things. To consolidate implementations of similar components, fix the a11y problems, and unify the UX, EuiFilterGroup should be rewritten using EuiSelectable.\r\n\r\nOn top of EuiSelectable, EuiFilterGroup's multi-select largely provides:\r\n1. A custom button that open a popover (inside which EuiSelectable would/could live)\r\n\r\nI think the EUI team prefers to keep the EuiComoboBox component and to wrap EuiSelectable within it but another implementation option is to add a \"renderAs\" prop (or something along those lines) to EuiSelectable to adjust styling."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3733",
+ "title": "[EuiSuggest] Rebuild using EuiSelectable",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 912933648,
+ "node_id": "MDU6TGFiZWw5MTI5MzM2NDg=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/WCAG%20A",
+ "name": "WCAG A",
+ "color": "1ca89a",
+ "default": false,
+ "description": "Level A WCAG Accessibility Criteria"
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-07-13T20:56:58Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The existing EuiSuggest has quite a few a11y shortcomings (see #2404 for the original remediation plan). \r\n\r\nInstead of effectively rewriting it from scratch, it should use EuiSelectable to inherit all the a11y work that went into it and to consolidate implementations of similar components.\r\n\r\nOn top of EuiSelectable, EuiSuggest largely provides:\r\n1. An opinionated rendering of individual items\r\n2. Some more states of the search field\r\n\r\nI think the EUI team prefers to keep the EuiSuggest component and to wrap EuiSelectable within it but another implementation option is to add a \"renderAs\" prop (or something along those lines) to EuiSelectable to adjust styling."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3719",
+ "title": "[EuiDataGrid & EuiFlyout] Z-Index of flyout is wrong in a full screen",
+ "user": {
+ "login": "mouradmourafiq",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1261626?v=4",
+ "html_url": "https://github.com/mouradmourafiq"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-07-09T13:16:19Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I am not sure if this is a bug or a feature but after this PR #3655 was merged, this [grid example](https://elastic.github.io/eui/#/tabular-content/data-grid-control-columns) does not work any more when selecting full screen and clicking on the control button that shows the flyout view."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3713",
+ "title": "[EuiDataGrid] `testenv` for `global._isJest`",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 873872737,
+ "node_id": "MDU6TGFiZWw4NzM4NzI3Mzc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/test",
+ "name": "test",
+ "color": "74bfe8",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-07-08T18:52:33Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Investigate an alternative to setting `global._isJest = true;` in Kibana's jest polyfills setup."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3712",
+ "title": "[EuiOverlayMask] `testenv` mock",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 873872737,
+ "node_id": "MDU6TGFiZWw4NzM4NzI3Mzc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/test",
+ "name": "test",
+ "color": "74bfe8",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-07-08T18:51:03Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Investigate a `testenv` mock for **EuiOverlayMask** to help jest instances that cannot flush the effects needed to mount the main element."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3680",
+ "title": "[EuiFlexGroup] Column layout has \"weird\" responsive behavior",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735487266,
+ "node_id": "MDU6TGFiZWw3MzU0ODcyNjY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/style%20only",
+ "name": "style only",
+ "color": "9fdb67",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-07-01T17:53:13Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Currently when you have a `EuiFlexGroup` with `direction=\"collumn\"` and multiple items in it, it all looks good in wide screen mode, that basically all items will render under each other and share screen space (or if you use `grow={false}` behave as expected).\r\n\r\nIf the screen now goes to small suddenly all items will be made 100% height and wrap beside each other in a scrolling way. This feels like a very weird behavior, since I'd assume the view below each other was already quiet responsive and we're now breaking it in a way that requires horizontal scrolling (and in most layouts looks weird).\r\n\r\nI've created the following [code sandbox](https://edp36.csb.app/) to demonstrate the behavior (just resize to a smaller width).\r\n\r\nThis behavior is triggered by setting `flex-basis: 100% !important` on the items when in responsive design. I have the feeling this should only happen when the flex group is not a column direction?\r\n\r\nIf that's the desired fix, to only apply the flex group is of type row, I am happy to open a PR, but wanted to understand what your desired fix for that is."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3678",
+ "title": "[EuiProgress] Add semantic structure to label and value",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-07-01T16:36:43Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Pulling out an idea from PR #3218 into a follow up issue. \r\n\r\nTrying to think of a way to join the label and value text so there's something more semantic tying them together rather than just proximity...\r\n\r\nI'm thinking maybe a `` might work? A DOM structure like this maybe:\r\n```html\r\n\r\n\tMen's clothing \r\n\t80% \r\n\t \r\n \r\n```\r\nIf we introduced an extra prop for how to render the wrapping element, we could even extend this to better work with a whole list of these like in the demo. Something like:\r\n```jsx\r\n\r\n\t \r\n\t \r\n\t \r\n\t \r\n \r\n```\r\nWhere as changes the wrapping `` of each ` ` to a `` so that we can create one list of progress bars, instead of _n_ lists. (Maybe as is too vague and broad given that `
` is probably the only valid value, but just throwing out an idea.)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3671",
+ "title": "Add guidelines for z-index concerns/customizations/practices",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-06-29T20:30:09Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "What are you thoughts on creating a specific z-index concerns/customizations/practices page in the docs?\r\n\r\n_Originally posted by @chandlerprall in https://github.com/elastic/eui/pull/3655#issuecomment-651246729_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3653",
+ "title": "[Discuss] Where/how to store illustrations and consume them",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2810744698,
+ "node_id": "MDU6TGFiZWwyODEwNzQ0Njk4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/stale-issue",
+ "name": "stale-issue",
+ "color": "ededed",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-06-24T13:35:26Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "> As for **where** to store the illustrations, should we consider that these are brand-specific and don't want to open-source them or are we good with allowing public access to them?\r\n\r\n_Originally posted by @cchaos in https://github.com/elastic/eui/issues/3626#issuecomment-646182801_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3637",
+ "title": "[EuiInMemoryTable & EuiSearchBar] Clears the filter input as you enter some text",
+ "user": {
+ "login": "cjcenizal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1238659?v=4",
+ "html_url": "https://github.com/cjcenizal"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-06-18T22:55:22Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In the below example, the `EuiInMemoryTable` has its `search` prop configured with:\r\n\r\n```js\r\n{\r\n query: '', // A variable that initially is defined as an empty string\r\n box: { incremental: true },\r\n}\r\n```\r\n\r\nIf you type `name=` and then any character, that keypress results in the character being input into the search box but then the search box gets cleared.\r\n\r\n![table_filter](https://user-images.githubusercontent.com/1238659/85079439-b42a8280-b17b-11ea-8b6c-dcb03d464c55.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3626",
+ "title": "404 & 403 pages as components",
+ "user": {
+ "login": "gjones",
+ "avatar_url": "https://avatars.githubusercontent.com/u/305167?v=4",
+ "html_url": "https://github.com/gjones"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 11,
+ "created_at": "2020-06-17T17:47:02Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "As Elastic builds more apps in-house, its becoming apparent that to ensure that platform feel, there are some areas we should be consistent with across those apps. Rather than trying to rebuild these areas in each code base, it seems to make sense to add them as components to EUI. \r\n\r\nOne such example is 404 / 403 pages, we have them in Cloud already and have another two apps that will be needing them. We initially worked with the marketing team for the illustrations. I would think that a certain level of customisation would be required for the buttons. \r\n\r\n![](https://user-images.githubusercontent.com/44808440/69146319-de29a280-0acf-11ea-96b7-be6d24179006.png)\r\n\r\nDo people agree? I'd be interesting in discussing to see if we think it's a good idea.\r\n\r\nHere's the original cloud issue\r\nhttps://github.com/elastic/cloud/issues/42989"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3625",
+ "title": "[EuiSelectable] Discoverability of exclusions",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-06-17T16:48:16Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "**Selectable** currently supports exclusions by clicking on each option multiple times: clicking once sets it to \"included\", clicking again sets it to \"excluded\", and clicking again resets it to nothing.\r\n\r\nThere isn't a great way to expose this to assistive tech (currently being done with `aria-label`s reading out instructions) but also this doesn't seem very discoverable to many people without specific instructions being given on the page.\r\n\r\nI'd like to propose an alternative design that shows the \"exclusion\" action on hover/focus on each option. (This could be further extended to show both an \"exclusion\" and \"inclusion\" actions if there's concern that people would then stop clicking on the option itself for \"inclusion\" - the default action.) \r\n\r\nQuick prototype showing just the \"exclusion\" action on hover:\r\n![Kapture 2020-06-16 at 12 18 50](https://user-images.githubusercontent.com/4188087/84926013-61c06780-b090-11ea-9fb6-1079f06701ef.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3573",
+ "title": "[EuiComboBox] Bluring triggers `onCreateOption`",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-06-07T22:15:11Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "If you use a `EuiComboBox` and have a `onCreateOption` property, so that in theory new \"pills\" can be created when hitting enter after typing, this property will also be triggered when the user blurs the combo box. Meaning, e.g. the following sequence will create a new option:\r\n\r\n* Type something into the combo box\r\n* Press
Escape to hide the popover that says \"hit enter to create that option\"\r\n* Click somewhere outside the combo box\r\n\r\nThe `onCreateOption` will be triggered as if the user has hit
Enter initially. This feels like very unintuitive behavior for me and not what I would expect in most combo boxes.\r\n\r\nI think if we want to keep the default behavior like that, we should at least have a property, that allows to disable that behavior and in case the user blurs, the value they typed will just stay inside the box (without creating a pill), or be removed from the box (I think there might be use-cases for both)."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3564",
+ "title": "[Spec] Empty states pattern",
+ "user": {
+ "login": "katrin-freihofner",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20965076?v=4",
+ "html_url": "https://github.com/katrin-freihofner"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1261750623,
+ "node_id": "MDU6TGFiZWwxMjYxNzUwNjIz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/spec",
+ "name": "spec",
+ "color": "d64db6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 7,
+ "created_at": "2020-06-05T10:55:04Z",
+ "author_association": "NONE",
+ "body": "## Purpose\r\nThis empty state pattern should provide information and guidance for users when certain areas do not have any content. It informs the user what is missing and gives them an actionable step if applicable.\r\n\r\n\r\n## Parts\r\n\r\nAn empty state has\r\n- a title\r\n- a description (optional)\r\n- an illustration (optional)\r\n- a call to action\r\n- links or secondary buttons with further actions and information (for example a link to the docs)\r\n\r\n## Use cases\r\n- Empty, because the user hasn’t **created anything**. \r\nAction: Create something\r\n- Empty, because the user doesn’t have **data**. \r\nAction: Add data\r\n- Empty, because the user doesn’t have **permission** or **license**. \r\nAction: Request permission/upgrade license/start free trial\r\n\r\n- Empty, because the data doesn’t match **filter** or **time filter**\r\n- Empty, because there are no results matching the **search** \r\nAction: Reset filter or push to adjust them / Redirect to filters/search\r\n\r\n- Empty, because of an **error** -- their connectivity or request/fetch error\r\nAction: Refresh/try again/reformat data \r\nAction is specific to the error\r\n\r\n\r\n## Related issues that could use this pattern\r\n### Observability\r\nhttps://github.com/elastic/kibana/issues/46704\r\nhttps://github.com/elastic/apm/issues/219\r\nhttps://github.com/elastic/uptime/issues/144\r\nhttps://github.com/elastic/kibana/issues/68757\r\n\r\n\r\n### EUI\r\nhttps://github.com/elastic/eui/issues/1221"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3548",
+ "title": "[EuiDragDrop] Draggable is way out of the context when start dragging",
+ "user": {
+ "login": "sergibondarenko",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5389745?v=4",
+ "html_url": "https://github.com/sergibondarenko"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-06-04T07:57:12Z",
+ "author_association": "NONE",
+ "body": "Kibana 7.7.1\r\nEui 24.1.0\r\n\r\nThis happens when a drag and drop list is EuiAccordion child. Here is the demo app https://github.com/sergibondarenko/kibana-plugin-dnd-demo\r\n\r\nScreenshot\r\n\r\n![Screenshot 2020-06-04 at 09 50 49](https://user-images.githubusercontent.com/5389745/83730673-b3590300-a649-11ea-8f8e-6bd62d6070aa.png)\r\n\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3544",
+ "title": "[EuiBasicTable] EuiTableFieldDataColumnType.mobileOptions type appears incomplete",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-06-03T16:18:28Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Our docs for _Build a custom table from individual components_ present a more flexible `mobileOptions` object than what **EuiBasicTable**'s `columns` accepts; I'm not sure if this is intended. If so, we should document the difference in that section. If not, we need to widen the column `mobileOptions` type.\r\n\r\n**Edit:** decision made, the types need to be widened to match the underlying column types\r\n\r\n`EuiTableFieldDataColumnType.mobileOptions` is defined as\r\nhttps://github.com/elastic/eui/blob/91badba89f4b816880ba63654adf6cf7ebaf62a5/src/components/basic_table/table_types.ts#L55-L60\r\n\r\nAlthough it is a straight pass-through to **EuiTableHeaderCell**\r\nhttps://github.com/elastic/eui/blob/91badba89f4b816880ba63654adf6cf7ebaf62a5/src/components/basic_table/basic_table.tsx#L714\r\n\r\nhttps://github.com/elastic/eui/blob/91badba89f4b816880ba63654adf6cf7ebaf62a5/src/components/basic_table/basic_table.tsx#L739\r\n\r\nhttps://github.com/elastic/eui/blob/91badba89f4b816880ba63654adf6cf7ebaf62a5/src/components/basic_table/basic_table.tsx#L781\r\n\r\nAnd also a pass through to **EuiTableRowCell**\r\n\r\nhttps://github.com/elastic/eui/blob/91badba89f4b816880ba63654adf6cf7ebaf62a5/src/components/basic_table/basic_table.tsx#L1200-L1206"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3539",
+ "title": "[EuiDataGrid] Column selector errors when its dependent state briefly de-syncs",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-06-02T21:09:55Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "from https://github.com/elastic/eui/pull/3520#discussion_r434060179\r\n\r\n_column_selector.tsx_ has to use `displayValues[id] || id` instead of `displayValues[id]` right now as a fallback until `useDependentState` re-syncs the value, as it relies on the post-render `useEffect`.\r\n\r\nhttps://github.com/elastic/eui/blob/d0c497b0bde3110983325200bab5d1dd3bd11f36/src/components/datagrid/column_selector.tsx#L202"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3533",
+ "title": "[EuiDataGrid] Bug when removing items",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-06-02T10:48:46Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When you use a data grid, with a very simple array of items and let data grid handle the sorting internally like the following:\r\n\r\n```tsx\r\n
\r\n```\r\n\r\nIf you now sort the table by an order that is not the same as the native order of the array, and delete an item on top of the table (I've only tested when it's the last item in the array actually), the `renderCellValue` will after that deletion (and the change to the `EuiDataGrid`, due to changed `rowCount`) be called, once again for every cell of the item you removed. So you'll get a call to `renderCellValue` with `rowIndex` being outside the `rowCount` size you actually specified. Thus if your `renderCellValue` does something as simple as `items[info.rowIndex]` to render the cell, you'll run into errors because that row does not longer exist.\r\n\r\n**Expected behavior**: Data grid should never call `renderCellValue` with a `rowIndex`, that is `>=` rowCount and thus outside the rows that actually exist.\r\n\r\nAs far as I debugged, the invalid call seems to be coming from the `EuiDataGridCell` component that is used inside the `MigrationObserver`, since the `EuiDataGridCellValueElement` passed into the `renderCellValue` method has the `data-test-subj` set during those invalid calls, which only happens via the `EuiDataGridCell` component and not via other calls to that method."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3510",
+ "title": "[EuiSuperSelect] Ignores `readOnly` prop",
+ "user": {
+ "login": "mwswindle",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33688953?v=4",
+ "html_url": "https://github.com/mwswindle"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-05-22T18:40:26Z",
+ "author_association": "NONE",
+ "body": "I'm developing a plugin on Kibana v7.7.0 tag, which is using elastic/eui v21.0.1.\r\n\r\nI'm using the `EuiSuperSelect` component, which has a `readOnly` prop. If I set this prop to `true`, I can see the styling of the component change, removing the shadows, but I'm still able to change the value.\r\n\r\nI have several other EUI components (such as EuiFieldText) that use the same `readOnlyState` variable, that all behave as expected.\r\n\r\n```tsx\r\n\r\n```\r\n![image](https://user-images.githubusercontent.com/33688953/82699754-d7244e00-9c32-11ea-8cec-eeb231bd28e2.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3500",
+ "title": "[AriaToolbar] component",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-05-18T18:28:31Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Preamble\r\n\r\nThere are 3 focus strategies: the default one (tabbing works as expected), roving tabindex, and `aria-activedescendant`.\r\n\r\nThe default one just works so there's nothing for us to do. `aria-activedescendant` is pretty rare so let's not worry about it at the moment. But roving tabindex does come up with decent frequency so I'd like to explore creating a reusable pattern (component? util? hook?) for quickly implementing it. Ideally it'd be exportable so consumers as well as EUI could benefit from it.\r\n\r\n## Summary\r\n\r\nWith several tab-heavy, discrete components we want to keep the keyboard experience streamlined. Taking Kibana as an example, tabbing through the app can become an arduous and long process depending on the page.\r\n\r\nOne way to streamline this is a roving tabindex. All the tabbable items of a component get `tabindex=-1` except the first one which is at `tabindex=0`. Once you're on the first element, you can use arrow keys to move your focus between the tabbable items. Pressing tab again moves you out of the component. Tabbing back into it (e.g., shift+tab) returns can optionally return you to either the first tabbable item again or return you to the same one when you exited (depending on whichever makes most sense for the component).\r\n\r\n[ARIA spec](https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_general_within) for reference\r\n\r\n## Technical considerations\r\n\r\n1. Should optionally reset to first item or last item to be focused\r\n2. How many axises do we want to support? (Only 1-axis would be simpler for sure, but 2-axis use cases also exist.)\r\n3. Should only be allowed on specific aria roles (I can make a list of which once we get to this.)\r\n\r\n## Design/UX considerations\r\n\r\n1. It can sometimes be unexpected when the tabbing strategy switches. Do we want any sort of visual indicator? (I've seen a little arrow keys icon popup on the page sometimes for when roving tab focus is in place. Could also do something with custom focus states on either the wrapping component or each tabbable element. Probably other ideas out there as well.) \r\n\r\n\tAll that said, solving this isn't a big deal in my opinion because the cost of not knowing is pretty low. (A user may tab past the component but should always be able to tab back and arrow keys are a common alternative so there shouldn't be any teaching required.)\r\n\r\n2. Some things are assumed to be one axis but can overflow to more line. In those cases, it's a toss up rather focus should support 2-axis arrow navigation as well. Assuming everything is technically feasible, what would we want to do? (For example, a toolbar that spans two lines.)\r\n\r\n## Examples in EUI today\r\n\r\n1. **DataGrid**\\* is a great example of 2-axis roving focus (`role=grid`)\r\n2. **BottomBar** and **ControlBar** should support x-axis roving (`role=toolbar`)\r\n3. **ButtonGroup** with more than 3 buttons should support x-axis roving (`role=toolbar`)\r\n4. **TreeView** should support y-axis roving (`role=tree`)\r\n5. **Tabs** with more than 3 tabs should support x-axis roving (`role=tablist`)\r\n7. Pills inside a **ComboBox** should support x-axis roving (`role=list`, I think...)\r\n8. **FilterGroup** with more than 3 **FilterGroupButton** items should support x-axis roving (`role=toolbar`, I think...)\r\n6. Misc other \"toolbars\" (e.g., above the **DataGrid**, above the **Markdown**)\r\n\r\n- **DataGrid**, I believe, is the only implemented on today. It's also the most complicated one.\r\n- **TreeView** and **DataGrid** (will) have significant other arrow key controls which we should make sure don't interfere.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3499",
+ "title": "[EuiIcon] Doesn't retry failed icon loads",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-05-18T14:00:09Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Network errors happen, and **EuiIcon** shouldn't expect its dynamic import to always succeed. We should add some basic retry logic."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3494",
+ "title": "[DOCS] Code generator service doesn't group imports from same library",
+ "user": {
+ "login": "anishagg17",
+ "avatar_url": "https://avatars.githubusercontent.com/u/43617894?v=4",
+ "html_url": "https://github.com/anishagg17"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-05-16T07:53:38Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "![Screenshot 2020-05-16 at 1 21 08 PM](https://user-images.githubusercontent.com/43617894/82114080-1c023d80-9778-11ea-9eba-c0727fd99b77.png)\r\n\r\nMultiple import statements appear from `@elastic/eui`."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3476",
+ "title": "[EuiDatePicker] Fix display in overflow containers",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-05-13T20:19:21Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Currently `EuiDatePicker` does not work properly when places e.g. in a Modal where it doesn't have enough space. Instead it will just cause it's parent `overflow: auto` container to scroll:\r\n\r\n![screenshot-20200513-204914](https://user-images.githubusercontent.com/877229/81860880-aa53a500-9567-11ea-86f4-eac0b1d669cf.png)\r\n\r\nIt would be nice if it would be able to be used in these scenarios too."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3474",
+ "title": "[Discuss] Skeleton component and usage",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-05-13T18:35:37Z",
+ "author_association": "MEMBER",
+ "body": "@bevacqua reminded us that folks are using ` ` quite a bit downstream. We've also seen some usage in the SIEM apps that @andrew-goldstein and @XavierM put together. We had a discussion as a team about how to handle these types of loading states and came away with the following discussion points:\r\n\r\n### We need more skeleton primitives for off the cuff usage\r\n\r\nTo \"fake\" components we probably need skeleton solutions to the following:\r\n\r\n* Images\r\n* Avatars\r\n* Text of various sizes\r\n* \"Blocks\"\r\n\r\n### Long term, it might be nice to build skeleton modes into the components directly\r\n\r\nWe rambled a little bit about whether EUI components should actually have a `skeleton` boolean prop that would just automatically fake content as needed.\r\n\r\n![image](https://user-images.githubusercontent.com/324519/81851016-af840600-950d-11ea-8aa8-ddce8c66d8f0.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3469",
+ "title": "[EuiDataGrid] EuiOverlayMask needs a higher z-index when in fullscreen",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735487266,
+ "node_id": "MDU6TGFiZWw3MzU0ODcyNjY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/style%20only",
+ "name": "style only",
+ "color": "9fdb67",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-05-13T09:06:19Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The data grid fullscreen currently has a z-index of 8000, while the `EuiOverlayMask` has a z-index of only 6000. I think the `EuiOverlayMask` should have a higher z-index than pretty much everything else. Currently if you have actions in a data grid that will open a modal, this won't show when in fullscreen because it's hidden behind the fullscreen mask. I think it would make sense to still see modals even if the data grid is in fullscreen. I am not sure if there is any component where it would make sense, that it has a higher z-index than the `EuiOverlayMask`."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3461",
+ "title": "[EuiDatePicker] Investigate `utcOffset` prop",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-05-11T20:43:34Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "After reviewing #3436, it doesn't appear that the `utcOffset` prop in `EuiDatePicker` does what it says/what we think.\r\n\r\nIn the docs, the actual UTC offset is done on `selected` value itself:\r\n\r\nhttps://github.com/elastic/eui/blob/12074a5827c27500ade1747661c59608b0980cf6/src-docs/src/views/date_picker/utc.js#L43-L45\r\n\r\nAnd passing _just_ the offset value via the `utcOffset` prop has no effect.\r\n\r\nAs such, simply passing through `utcOffset` to `EuiSuperDatePicker` also has no effect.\r\n\r\nThere are 0 usages in Kibana so it's hard to track correct usage and output.\r\n\r\n_Originally posted by @thompsongl in https://github.com/elastic/eui/issues/3433#issuecomment-625526431_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3443",
+ "title": "[EuiDualRange] + [EuiRangeInput] types are too permissive and don't match",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 903880265,
+ "node_id": "MDU6TGFiZWw5MDM4ODAyNjU=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/typescript",
+ "name": "typescript",
+ "color": "41bf07",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-05-07T19:55:53Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Summary\r\nChange all occurrences of `number | string` types to only allow `number`\r\n\r\n## Why?\r\nIt's confusing accepting both. I realize this was probably done to pave over whatever craziness the DOM might return, but I think pushing a `parseInt` into consuming apps is worth the type checking cleanliness.\r\n\r\nEspecially when it's inconsistent with `EuiRangeInputProps` which only accepts `number` for `min` and `max` which means to validate that your `value` falls in between your `min` and your `max` you have to jump through a bunch of hoops with types.\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3403",
+ "title": "Puppeteer-related CI failures",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-04-29T15:08:43Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Noticing an increase in CI failures (both jobs) due to Puppeteer-Chromium download errors:\r\n\r\n[Example](https://kibana-ci.elastic.co/job/elastic+eui+pull-request-deploy-docs/976/console):\r\n```\r\n09:30:03 error /app/node_modules/puppeteer: Command failed.\r\n09:30:03 Exit code: 1\r\n09:30:03 Command: node install.js\r\n09:30:03 Arguments: \r\n09:30:03 Directory: /app/node_modules/puppeteer\r\n09:30:03 Output:\r\n09:30:03 ERROR: Failed to download Chromium r706915! Set \"PUPPETEER_SKIP_CHROMIUM_DOWNLOAD\" env variable to skip download.\r\n09:30:03 Error: end of central directory record signature not found\r\n09:30:03 at /app/node_modules/yauzl/index.js:167:14\r\n09:30:03 at /app/node_modules/yauzl/index.js:473:5\r\n09:30:03 at /app/node_modules/fd-slicer/index.js:32:7\r\n09:30:03 at FSReqWrap.wrapper [as oncomplete] (fs.js:467:17)\r\n09:30:03 -- ASYNC --\r\n09:30:03 at BrowserFetcher. (/app/node_modules/puppeteer/lib/helper.js:111:15)\r\n09:30:03 at Object. (/app/node_modules/puppeteer/install.js:62:16)\r\n09:30:03 at Module._compile (internal/modules/cjs/loader.js:778:30)\r\n09:30:03 at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)\r\n09:30:03 at Module.load (internal/modules/cjs/loader.js:653:32)\r\n09:30:03 at tryModuleLoad (internal/modules/cjs/loader.js:593:12)\r\n09:30:03 at Function.Module._load (internal/modules/cjs/loader.js:585:3)\r\n09:30:03 at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)\r\n09:30:03 at startup (internal/bootstrap/node.js:283:19)\r\n09:30:03 at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)\r\n```\r\n\r\nNo initial thoughts on a cause or remedy."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3385",
+ "title": "[Discuss] Cross-browser focus states for overflow containers",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-04-24T18:17:00Z",
+ "author_association": "MEMBER",
+ "body": "We had some discussion on the resizable container scroll interactions as part of https://github.com/elastic/eui/pull/2701#issuecomment-618715386, specifically around the following two issues. It was decided this is a more global issue than one component and we should think holistically at the problem.\r\n\r\n* Should EUI give guidance and adhere to applying `tabindex=0` for any elements with an applied `overflow: auto` property.\r\n* How should EUI consistently apply styling for such a cases? How can we make this not weird specifically in `auto` situations where the element may or may not be scrollable. \r\n\r\nCurrently the browsers treat scrollable containers differently and there is some suggestive guidance from AXE to correct it. https://dequeuniversity.com/rules/axe/3.5/scrollable-region-focusable?application=AxeChrome\r\n\r\nLikely if applied, even in EUI components, there would still need to exist guidance of some sort, since EUI would not be able to control all general downstream usages, where `tabindex` would need to be applied manually. Potentially we could mitigate this by introducing a small component called `EuiScrollableContainer` that could act as a simple utility component to apply tabindex and the proper styling selectors necessary to attack this consistently."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3346",
+ "title": "[EuiAccordion] Usage of ResizeObserver throws \"error\" during canvas workpad load",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-04-17T18:53:41Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When loading a busy canvas workpad (like the ecom sample dataset's), the `ResizeObserver loop limit exceeded` error is thrown. This is ignorable and indicates that the observed element was resized multiple times during the same animation frame - https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\r\n\r\nIt's being swallowed on the canvas side, at least temporarily, but we should see if we can help address it."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3334",
+ "title": "[EuiDataGrid] Rendering EuiTextField inside cell breaks focus",
+ "user": {
+ "login": "deliveryblueprintsdev",
+ "avatar_url": "https://avatars.githubusercontent.com/u/62741503?v=4",
+ "html_url": "https://github.com/deliveryblueprintsdev"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-04-16T15:12:17Z",
+ "author_association": "NONE",
+ "body": "When rendering an `EuiTextField` inside a `EuiDataGrid` cell, it doesn't behave as described in the documentation with regards to interactive elements. \r\n\r\nWhen clicking the cell, instead of the focusing the text element, the cell focuses instead, and a second click is required before the click event is bubbled down to the text input. \r\n\r\nAdditionally, any re-renders of the `EuiDataGrid` results in the focus of the text field being lost also, so it's only possible to enter one character before you have to re-focus again. \r\n\r\nHow can I ensure a single click focuses the cell input, and subsequent re-renders don't remove the focus from the field?\r\n\r\n[Video Example](https://streamable.com/lzy5o2)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3231",
+ "title": "[EuiInMemoryTable] Pagination state does not update when props change",
+ "user": {
+ "login": "i-a-n",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1937355?v=4",
+ "html_url": "https://github.com/i-a-n"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-04-02T19:38:13Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Updating the `pagination` prop on `EuiInMemoryTable` doesn't render expected pagination output. For instance, updating from `pagination={false}` to `pagination={true}` (without a re-mount) will render a buggy state where `Rows per page: 1`:\r\n\r\n \r\n\r\nAccording to @thompsongl :\r\n> It doesn't appear that EuiInMemoryTable will update pagination state when changes to pagination props occur. It does so once on mount and it will do so when table items change, but not on direct prop updates.\r\n\r\nSo, here's an issue for tracking. Thanks!"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3218",
+ "title": "[EuiFormRow] With difficult components",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1913258010,
+ "node_id": "MDU6TGFiZWwxOTEzMjU4MDEw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20spec",
+ "name": "needs spec",
+ "color": "0be51d",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-04-01T20:41:30Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "**EuiFormRow** passes down the `id` an `input` element should take on to wire up **EuiFormRow**'s `` correctly. \r\n\r\nBut there are several cases where this breaks down:\r\n- #3037 describes a case where if the form control isn't built as expected by **EuiFormRow** and so the `id` never makes it to the ` `\r\n- Another issue is what to do if there are multiple ` ` elements (like dual input [Range Sliders](https://elastic.github.io/eui/#/forms/range-sliders) because you can't have multiple ids on a page\r\n- Another issue, that's been somewhat hastily solved by the `hasChildLabel` prop on **EuiFormRow**, is with wrapped ` ` elements that already have an applied label\r\n- And, the impetus for making this issue, for the case of a `searchable` **EuiSelectable**, the ` ` needs the passed in `id` but also an associated element (a `ul` in this case) needs a reverse `aria-describedby` set to the `label`'s `id`.\r\n\r\n@chandlerprall suggested that this might be solved by somehow using React's context to do all this... \r\n\r\nKind of related to #2493"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3202",
+ "title": "Adding underlines to some links/buttons",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 7,
+ "created_at": "2020-03-31T16:53:49Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "In an effort to iteratively improve accessibility for our links/buttons (#2446) let's add underlines to some links in specific areas:\r\n- Inside of **EuiCallout**\r\n\t- Why? Because callouts can be so many different colors, it's a nightmare for calculating all of the color contrast possibilities. Doing this let's us cut a bunch of permutations. \r\n- Inside of **EuiText**\r\n\t- Why? Mostly because it makes some logical sense. We expect this content to be longer form text content so let's optimize for scanning and reading.\r\n- Inside of **EuiFormRow** `helpText` and `error` text\r\n\t- Why? It's small text with less contrast which compounds how difficult it is to see something actionable.\r\n\r\n## Term definition\r\n- **Link**: In this issue, I refer to \"links\" a lot. For the purpose of this issue, a link is anything inside of an anchor tag (``) that doesn't have any visual affordances other than color. In EUI, this means **EuiLink** and **EuiButtonEmpty** with an `href` set."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3172",
+ "title": "[EuiSelectable in EuiPopover] Focus trap requires two clicks when focus is on select",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-03-25T23:04:24Z",
+ "author_association": "MEMBER",
+ "body": "## To replicate\r\n\r\n1. Go to `EuiExpression` docs https://elastic.github.io/eui/#/forms/expression\r\n2. Click first expression.\r\n3. Change the dropdown\r\n4. Two clicks are required to exit the trap\r\n\r\nThis is not something specific to `EuiExpression` and I was able to replicate in the popover docs by adding a new select.\r\n\r\n![](http://snid.es/a2b2c2a189d5/Screen%252520Recording%2525202020-03-25%252520at%25252004.01%252520PM.gif)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3151",
+ "title": "[EuiDataGrid] Cells in focus aren't always in view",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-03-23T17:18:27Z",
+ "author_association": "CONTRIBUTOR",
+ "body": " \r\n\r\nIf a cell is partially cut off by the scrolling container, there's no way to see the whole thing with just a keyboard. If the cell is completely cut off, the browser will scroll it into view for you.\r\n\r\nWe should scroll the container to completely show the currently focused cell.\r\n\r\n(May be a Firefox only issue.)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3150",
+ "title": "[META][DOCS] Convert examples to function components + hooks",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 735495843,
+ "node_id": "MDU6TGFiZWw3MzU0OTU4NDM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/chore",
+ "name": "chore",
+ "color": "d319bd",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 10,
+ "created_at": "2020-03-23T15:23:24Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "We've embraced function components and hooks in our `src`, but continue to copy&paste the examples' class component structure when creating new docs. This also impacts developers when they go to copy the example code, and need to convert it from class components.\r\n\r\nNew examples should avoid using class components, and existing ones should be converted."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3140",
+ "title": "[EuiCodeBlock] Possibility to show line numbers",
+ "user": {
+ "login": "mouradmourafiq",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1261626?v=4",
+ "html_url": "https://github.com/mouradmourafiq"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-03-21T11:00:43Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It would be nice to have a flag to show line numbers on `EuiCodeBlock` when not used inline.\r\n\r\ne.g.\r\n\r\n```typescript\r\n\r\n {this.state.fileContent}\r\n \r\n\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3111",
+ "title": "[EuiBasicTable] \"Select all\" checkbox regenerates id on each render",
+ "user": {
+ "login": "tsullivan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/908371?v=4",
+ "html_url": "https://github.com/tsullivan"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-03-17T21:09:28Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It looks like the checkbox IDs are populated by making dynamic strings. This is making it impossible to do unit testing with snapshots.\r\n\r\nExample of the dynamic strings, from the EUI docs:\r\n![image](https://user-images.githubusercontent.com/908371/76902236-ce8d5100-6858-11ea-83c2-e1d7a2fa4143.png)\r\n\r\nSnapshot tests will fail with errors like:\r\n```diff\r\n aria-label=\"Select all rows\"\r\n checked={false}\r\n className=\"euiCheckbox__input\"\r\n data-test-subj=\"checkboxSelectAll\"\r\n disabled={true}\r\n - id=\"_selection_column-checkbox_fubvvpen\"\r\n + id=\"_selection_column-checkbox_oruz39nk\"\r\n onChange={[Function]}\r\n type=\"checkbox\"\r\n />\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3092",
+ "title": "[EuiContextMenuItem] Text bottom is cut off when `href` prop is supplied",
+ "user": {
+ "login": "justinkambic",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18429259?v=4",
+ "html_url": "https://github.com/justinkambic"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-03-16T15:00:59Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I have noticed that the bottom of an `EuiContextMenuItem` is cut off when I specify the `href` prop for its content. Screenshot (look at the letter `g` in the text that says \"Manage alerts\"):\r\n\r\n![image](https://user-images.githubusercontent.com/18429259/76770827-e25f8700-6774-11ea-8260-963aaf03daac.png)\r\n\r\nThe implementation of the item looks like:\r\n\r\n```typescript\r\n \r\n \r\n ,\r\n```\r\n\r\nIf I remove the `href` prop, I no longer see the issue:\r\n![image](https://user-images.githubusercontent.com/18429259/76771139-41bd9700-6775-11ea-87cc-fe9267743fb2.png)\r\n\r\nThis is happening for me in Firefox Dev Edition 75.0b2."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3072",
+ "title": "[EuiMark] Accessibility",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-03-13T23:00:02Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "- [x] 1. Have a designer assess the styling of the rendered mark\r\n- [x] 2. Use in EuiHighlight\r\n- [ ] 3. Add in accessibility\r\n\r\n---\r\n\r\nOriginal comment\r\n\r\n> From previously open PRs:\r\n> \r\n> We'll want to add the following for accessibility, also:\r\n> https://github.com/thompsongl/eui/blob/euimark/src/components/mark/_mark.scss#L19-L37\r\n\r\nI'd suggest doing something similar to this using `EuiScreenReaderOnly` before and after the mark, rather than using CSS before/after. That was we can make sure the text gets `i18n` treatment.\r\n\r\n_Originally posted by @snide in https://github.com/elastic/eui/pull/3060#issuecomment-598947838_\r\n\r\n----"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3059",
+ "title": "[EuiSuperDatePicker] Should quick-select auto close?",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-03-12T19:27:04Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Split from #3033\r\n\r\nShould `EuiSuperDatePicker`'s quick-select auto close if the refresh interval timer is _started_, either by mouse or keyboard ( focusing on the _Start_ button and activating it, and/or pressing enter while in one of the interval inputs)?"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3058",
+ "title": "Multi-Project Testing Suite",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-03-12T18:31:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Automated testing for projects and deployments that we expect EUI to support. Currently, we rely on manual build steps or testing suites (functional and/or unit tests) provided by consuming applications to check environment compatibility and catch instances of breaking API changes. Conversion to and adoption of TypeScript has helped at a low level, but we need broader, less manual means of understanding support coverage.\r\n\r\n**Outcome**\r\nA script or pattern of scripts that EUI engineers can run to:\r\n\r\n1. Install EUI in various project target instances; #2760 tracks the discussion about which projects to support.\r\n2. Run the consuming project's linting and / or testing suite(s).\r\n3. Run a production build of the consuming project.\r\n4. Detect and report failures and incompatibilities.\r\n\r\n**Related Discussion**\r\n\r\n> The primary goal of the project is a flexible, configurable framework that can be setup for these platforms and others in the future (+ at least one that is internal to Elastic). Ideally, we'd like the project to include testing EUI changes on those 3 identified platforms. This will help prove out the testing approach.\r\n> Flexibility and configuration [for] running the tests only against the platforms/frameworks that a given consumer cares about. For instance, if testing against Kibana is not necessary, that test could be skipped. Ideally, there would be some level of customization that would allow users to add their own targets, as well.\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3032",
+ "title": "[EuiDescribedFormGroup] Reintroduce `fieldset`/`legend`",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2020-03-10T18:02:44Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Originally, it was `div[role=group]` with no `legend`. \r\n\r\nThen in #2783 we changed it to use `fieldset`/`legend` with some `aria-hidden` and `ScreenReaderOnly` gymnastics to solve all the a11y and design issues.\r\n\r\nThen in #2888 we discovered we might have made the a11y worse so we largely reverted the change in #2989.\r\n\r\nWe still want to introduce `fieldset` and `legend` into our form layouts but we gotta be careful about how... \r\n\r\nMaybe we need to first come up with a plan for #2493 before tackling this? That would, potentially, give us a more prescriptive usage pattern for developers to use which might loosen up the abstract nature of the a11y and design issues... "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3028",
+ "title": "[EuiFlexGrid] Has responsive issues in Firefox",
+ "user": {
+ "login": "gjones",
+ "avatar_url": "https://avatars.githubusercontent.com/u/305167?v=4",
+ "html_url": "https://github.com/gjones"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-03-10T13:05:20Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "**Summary**\r\nAs reported in the linked cloud issue, The responsive layout of the deployment cards on the Deployment list view does not behaviour as expected. The do not seem to be resizing correctly. This layout uses `EuiFlexGrid` \r\n\r\n\r\nAffects: \r\n**ECE version: 2.4.3** - but seems to be a problem in ESS too. \r\n**Browser: Firefox**\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/3021",
+ "title": "Reveal feature requested",
+ "user": {
+ "login": "ghost",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4",
+ "html_url": "https://github.com/ghost"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1913258010,
+ "node_id": "MDU6TGFiZWwxOTEzMjU4MDEw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20spec",
+ "name": "needs spec",
+ "color": "0be51d",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-03-10T01:31:50Z",
+ "author_association": "NONE",
+ "body": "Guiding Principles \r\n\r\nUser Interface is something that can lead to wonders in thoughts and attention if made in an interactive and enhanced way. Many times there are few cases where we give information about multiple users/locations/incidents together on the webpage in the form of a series placed next to another. This information is more suited and well put up in front of people when it is initially hidden and then revealed as soon as the user moves to that content.\r\nThat lets the user to get to that info/point much better.\r\n\r\n\"Reveal\" feature serves this purpose.\r\n\r\nFeature \r\n\r\nA reveal displays additional content in place of previous content when activated. \r\n \r\n\r\nTypes \r\n\r\n\r\nFade => An element can disappear to reveal content below. \r\nMove => An element can move in a direction to reveal content. \r\nRotate => An element can rotate to reveal content below. \r\n \r\n\r\nContent \r\n\r\nVisible Content => A reveal may contain content that is visible before interaction. \r\nHidden Content => A reveal may contain content that is hidden before user interaction. \r\n \r\n\r\nStates \r\n\r\nActive => An active reveal displays its hidden content. \r\nDisabled=> A disabled reveal will not animate when hovered. \r\n \r\n\r\nVariations \r\n\r\nInstant => An element can show its content without delay \r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2996",
+ "title": "[EuiDataGrid] Show a message when all columns are hidden",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-03-06T19:06:51Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It's also weird to have \"pages\" of data, but nothing is showing.\r\n\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2990",
+ "title": "[EuiDataGrid] Sticky headers have trouble with focus and scrolling",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-03-05T20:49:11Z",
+ "author_association": "MEMBER",
+ "body": "Described well in this set of comments. Likely we'll need to start calculating position of scrollbars for either the header, or the overflowed content if we want to make this work in a generic, repeatable way.\r\n\r\nhttps://github.com/elastic/eui/pull/2959#discussion_r387296057"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2984",
+ "title": "[EuiProgress] Render a ` ` element when no value",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-03-04T22:35:12Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Summary\r\n`EuiProgress` renders a `div` if no `value is set.\r\n\r\nA ` ` element with no `value` set is considered in an indeterminate state which I think is a pretty good semantic indication of our visual representation of when `EuiProgress` is used without a `value`. \r\n\r\n## What to do\r\nAlways render a ` ` element\r\n\r\nSee the discussion in #2985, which concludes that we need to reassess the use of a pseudo element for the indeterminate state. Firefox is the limiting factor, and we'll need to come up with a design that works without a `div`"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2983",
+ "title": "[EuiProgress] Add option to render as a meter",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-03-04T22:17:13Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "## Summary\r\n\r\nThe semantics of ` ` and ` ` are a little different though visually they present really similar info. \r\n\r\nIn Discover (and probably other areas), Kibana uses `EuiProgress` to show a ratio of a thing, not to actually show a \"progressing\" state. In these cases, ` ` would be the appropriate element to use.\r\n\r\n## What to do\r\n1. Add an option to render `EuiProgress` with a ` ` element instead. This might require some CSS tweaks as well to make sure both components render the same in all browsers.\r\n\r\n2. Add a note to the docs about the difference and when to use which. (` ` should be used when it is a long running task that will complete. ` ` should be used when you are displaying a static ratio.)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2981",
+ "title": "[EuiDataGrid] bi-directional infinite scrolling",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-03-04T17:49:21Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Summarizing a conversation with @weltenwort \r\n\r\n* logs app is the two-sided open-ended timeline and pagination doesn't work very well without a well-known \"first\" page (siem has an unrelated case where pagination doesn't work well)\r\n* logs are often interacted with as a stream, chopping up the log stream into arbitrary pages gets in the way of the usual viewing experience; having to pagination between two that would otherwise be right next to each other is cumbersome\r\n\r\nImplementation considerations would need to include pinned rows and/or columns."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2903",
+ "title": "Scrollspy feature requested",
+ "user": {
+ "login": "ghost",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4",
+ "html_url": "https://github.com/ghost"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1913258010,
+ "node_id": "MDU6TGFiZWwxOTEzMjU4MDEw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20spec",
+ "name": "needs spec",
+ "color": "0be51d",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 14,
+ "created_at": "2020-02-22T10:54:53Z",
+ "author_association": "NONE",
+ "body": "Scrollspy is a jQuery plugin that tracks certain elements and which element the user's screen is currently centered on. The main demo of this is our table of contents on every documentation page to the right/left/top. Clicking on these links will also scroll the page to that element."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2883",
+ "title": "[EuiBadge] Prevent color opacity",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2020-02-19T23:41:56Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Per discussion in #2850, now that we've opened up `EuiColorPicker` to opacity we may want to do more than give console warnings for invalid color input. For instance, 8-digit hex values are still renderable by `EuiBadge` but are not desirable and can cause contrast failures.\r\n\r\n#2804 is related for validation reasons\r\n\r\nSolutions:\r\n\r\n- Set alpha channel to 1 regardless of provided `color` value\r\n- Render a transparent badge to show incompatibility\r\n- Update warning message to indicate opacity support\r\n- Take opacity into account in color contrast calculations (if possible)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2876",
+ "title": "[EuiColorStops] Beginning from empty should look more empty",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-02-19T19:08:48Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "\r\n![image](https://user-images.githubusercontent.com/549577/74866786-6ca4fe80-5321-11ea-8a05-38f83d0b4b1a.png)\r\n\r\n> Beginning and end transition colors: This is intentional. I'm having trouble finding the conversation, but it boils down to is that each color thumb is the start of a new color. Before a thumb, it is either the previous color or empty/gray. After a thumb, that color goes to infinity or until the next thumb.\r\n\r\nYep. This was a valid request from Maps. They have situations where the color doesn't start until a certain point. The best way to illustrate that was to use gray since that felt \"disabled\"\r\n\r\n_Originally posted by @snide in https://github.com/elastic/eui/pull/2850#issuecomment-588391982_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2848",
+ "title": "[EuiBasicTable] Easier multi-row selection",
+ "user": {
+ "login": "cjcenizal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1238659?v=4",
+ "html_url": "https://github.com/cjcenizal"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2020-02-12T18:23:36Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Per https://github.com/elastic/kibana/issues/57424, a user has pointed out that selecting multiple rows requires acquiring and clicking a checkbox for each individual row. This can become tedious when you want to select many rows.\r\n\r\nThe user's suggestion was to support holding down `SHIFT` to allow the user to click two separate rows and automatically select all rows in between them. This is similar to how GitHub allows users to select a group of commits to review during PR code review.\r\n\r\nI have an alternative solution which involves two parts:\r\n\r\n1. Make the entire table cell containing the checkbox clickable. This larger hit area will make acquisition of the checkbox easier, so selecting a row will be faster.\r\n2. Add an [onDragEnter](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/ondragenter) handler to this cell, which will toggle the selection state. This way you can \"brush\" over multiple checkboxes with the mouse held down, to select them. Or, if they're already selected, this will deselect them.\r\n\r\nI don't feel strongly about either of these solutions and I'm open to other, better ways of accomplishing this goal.\r\n\r\n![ezgif-2-c17d259a812b](https://user-images.githubusercontent.com/12175559/74318347-545f3d80-4d7d-11ea-9fd9-ba4b996ca9f6.gif)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2843",
+ "title": "[EuiTreeView] Allow draggable and droppable entries",
+ "user": {
+ "login": "jloleysens",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8155004?v=4",
+ "html_url": "https://github.com/jloleysens"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1913258010,
+ "node_id": "MDU6TGFiZWwxOTEzMjU4MDEw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20spec",
+ "name": "needs spec",
+ "color": "0be51d",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2020-02-11T13:53:32Z",
+ "author_association": "NONE",
+ "body": "Would it be possible to create a draggable/droppable version of the `EuiTreeView`?\r\n\r\nWhat I am thinking of is a new configuration like:\r\n\r\n```tsx\r\n {}}\r\n /* rest of props */\r\n/>\r\n```\r\n\r\nWhich flags to the tree that it should create drag and drop zones around enabled Nodes:\r\n\r\n```ts\r\ninterface Node { isDropZone: boolean ... }\r\n```\r\n\r\nThis could enable business logic to determine what nodes in the tree are drop zone targets and just let application code respond to drag and drop events?\r\n\r\nThis would be great for this use case: https://github.com/elastic/kibana/pull/57310\r\n\r\nAlternatively, if there isn't enough traction for building this into `EuiTreeView` we can build a custom component."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2841",
+ "title": "[EuiComboBox] Rebuild with EuiSelectable",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-02-10T18:55:22Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The existing EuiComboBox has a few a11y shortcomings and differs in implementation from EuiSelectable which has been crowned as the future implementation of dropdown-like things. To consolidate implementations of similar components, fix the a11y problems, and unify the UX, EuiComboBox should be rewritten using EuiSelectable.\r\n\r\nOn top of EuiSelectable, EuiComboBox largely provides:\r\n\r\n1. A clear button (which needs improved contrast from what's there today)\r\n\t\r\n\t\tPicture example \r\n\t\t(should be 4.5:1)\r\n\t\t \r\n\t \r\n2. Buttons with the selected items inside the search field\r\n3. A dropdown view of the results instead of inline\r\n\t\r\n\t\tWhich currently has a minor a11y issue associated with it (#5024) \r\n\t\tPopup indicator should be excluded from focus order (Under \"Keyboard Interaction\" for Combobox )\r\n\t\t \r\n\t \r\n\r\nI think the EUI team prefers to keep the EuiComoboBox component and to wrap EuiSelectable within it but another implementation option is to add a \"renderAs\" prop (or something along those lines) to EuiSelectable to adjust styling.\r\n\r\nThis replaces Kibana issues [#42988](https://github.com/elastic/kibana/issues/42988) and [#39357](https://github.com/elastic/kibana/issues/39357)"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2839",
+ "title": "[EuiDataGrid] Allow sticky columns",
+ "user": {
+ "login": "pickypg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1501235?v=4",
+ "html_url": "https://github.com/pickypg"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-02-10T14:31:24Z",
+ "author_association": "MEMBER",
+ "body": "I got some feedback on a particularly wide usage of data grid where some people would like to lock some columns so that when they are forced to horizontally scroll, they get the column(s) that they're most interested in stuck on the screen.\r\n\r\nI assume that the same applies to a sticky row in the same way that spreadsheets support both directions."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2824",
+ "title": "[EuiColorPicker] Prepend should shift popover to align to input",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-02-04T16:51:01Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "The left side of the popover is aligned with the prepend versus the actual input. It should align to the input.\r\n\r\n \r\n\r\n_Originally posted by @cchaos in https://github.com/elastic/eui/pull/2819#issuecomment-581997257_"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2821",
+ "title": "[EuiDataGrid] Popover arrow placement is incorrect when tall",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2020-02-03T21:51:47Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Example:\r\n![Screen Shot 2020-02-03 at 16 50 06](https://user-images.githubusercontent.com/4188087/73694099-69fda480-46a5-11ea-817d-edf2e4a54a95.png)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2816",
+ "title": "[EuiDatePicker] Display error for minDate and maxDate",
+ "user": {
+ "login": "tabna",
+ "avatar_url": "https://avatars.githubusercontent.com/u/35232837?v=4",
+ "html_url": "https://github.com/tabna"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-02-01T19:55:53Z",
+ "author_association": "NONE",
+ "body": "In the date picker, if you set a minDate and maxDate, the < > controls enable and disable appropriately, but the Month and Year controls do not. \r\n\r\nFor example, in the demo shown in the documentation, the min/max is currently set to a one week time span, 1/20/2020 - 2/6/2020. If you click on '2020' in the calendar header, it displays a blank screen where normally you would see the year choices. At the very least, it should display all allowed years within the min/max - in this case, just 2020. What would be better is that if only the current year is allowed, the '2020' link is disabled.\r\n\r\nAlso in the demo, if you click on the Month, you get a screen showing all month choices. You should only see months within the allowed range. If the range spans multiple years, you'd still see all months, but in the demo it only spans two months of one year, so you should only see January and February. \r\n\r\nBecause of this, I am able to select a date not in the range by clicking on 'February', then clicking on 'May', which because today was the 1st, populates the input with 5/1/2020, well outside of the range."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2806",
+ "title": "[EuiIcon] Support straight SVG usages",
+ "user": {
+ "login": "cchaos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/549577?v=4",
+ "html_url": "https://github.com/cchaos"
+ },
+ "labels": [
+ {
+ "id": 885030943,
+ "node_id": "MDU6TGFiZWw4ODUwMzA5NDM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/icons",
+ "name": "icons",
+ "color": "2d0470",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 14,
+ "created_at": "2020-01-30T17:35:32Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Currently, when using custom icons with EuiIcon and passing an `.svg` file to the `type` prop, EuiIcon **always** spits out an `img` tag with the SVG data-uri as the `src`. This causes issues when consumers want to use the SVG content directly, for instance, when coloring the fills based on the theme/content with `fill: currentColor`.\r\n\r\n### Current example:\r\n\r\n```jsx\r\nimport reactSvg from '../../images/custom.svg';\r\n \r\n```\r\n\r\n### Renders: \r\n\r\n```html\r\n \r\n```\r\n\r\n### What needs to render:\r\n\r\n```html\r\n\r\n ...SVG content...\r\n \r\n```\r\n\r\ncc @gjones @thompsongl "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2804",
+ "title": "Use chroma-js for all color parsing and conversion",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735495843,
+ "node_id": "MDU6TGFiZWw3MzU0OTU4NDM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/chore",
+ "name": "chore",
+ "color": "d319bd",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-01-30T16:58:02Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Now that EUI has heavy reliance on `chroma-js` (color palette creation, color contrast calculations for a11y), other custom methods should likely be deprecated and removed.\r\n\r\nSuch custom methods are part of the public API, so we need to either schedule for deprecation and removal, or convert them to use `chroma-js` for consistency.\r\n\r\nMethods in the EUI public API:\r\n```\r\nhexToHsv,\r\nhexToRgb,\r\nhsvToHex,\r\nhsvToRgb,\r\nrgbToHex,\r\nrgbToHsv,\r\nisValidHex\r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2799",
+ "title": "[META] EUI Infra Improvements",
+ "user": {
+ "login": "thompsongl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2728212?v=4",
+ "html_url": "https://github.com/thompsongl"
+ },
+ "labels": [
+ {
+ "id": 735509412,
+ "node_id": "MDU6TGFiZWw3MzU1MDk0MTI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/platform",
+ "name": "platform",
+ "color": "38f79e",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ }
+ ],
+ "comments": 0,
+ "created_at": "2020-01-27T19:29:46Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This issue can be used to track ongoing and upcoming improvements to the test, build, release, and CI infrastructure behind EUI.\r\n\r\n## Test\r\n- [x] Automated a11y testing (axe) [#2231, #2569, elastic/infra#16634]\r\n\r\n## Release\r\n- [ ] CI-based npm publishing\r\n - [x] Manual\r\n - [ ] Automated\r\n\r\n## CI\r\n- [x] Git tag-based docs deployment\r\n- [x] Doc preview builds for pull requests\r\n\r\n## Docs\r\n- [x] Bekitzur infra [#2787]\r\n- [ ] eui.elastic.co as canonical documentation location (Github pages redirect)\r\n- [ ] Versioned docs \r\n - [ ] CI-based automated deployment\r\n - [ ] with version-switching UI\r\n- [ ] Static/SSR docs site build [#2730, #2577]\r\n- [ ] Enable Elastic Site Search / full text search\r\n- [ ] Telemetry [#2363]"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2793",
+ "title": "[EuiDataGrid] Control isExpandable at the cell level",
+ "user": {
+ "login": "pickypg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1501235?v=4",
+ "html_url": "https://github.com/pickypg"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2020-01-25T00:57:17Z",
+ "author_association": "MEMBER",
+ "body": "I am building a calendar using the DataGrid and I have run into the need to allow a small popover form, but only if the calendar day has stuff in it. For example, imagine that a manager wants to override a holiday to mark an engineer as working, it obviously is an unnecessary step if there is no holiday on that day.\r\n\r\n \r\n\r\nI'd like an enhancement where, before it attempts to render the cell with `isDetails` set to `true`, (or the popover version), it would instead check if it even should. The easiest approach seems to be making `isExpandable` a `callback | boolean | undefined`, which probably helps it to avoid invoking a function call for _all_ cells anyway. For the best impact, this function would need be passed the `rowIndex` and `columnId` just like the render cell function."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2760",
+ "title": "[META] Environments/Projects we want to intentionally support",
+ "user": {
+ "login": "chandlerprall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/313125?v=4",
+ "html_url": "https://github.com/chandlerprall"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 6,
+ "created_at": "2020-01-15T17:14:33Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "We've talked a lot about which projects & environments we want to support. I'm rolling those up into this ticket as a place to track discussions & decisions.\r\n\r\nExternal (non-Elastic) targets mean we intend to support EUI running in those environments, Internal (Elastic managed) targets likely means we directly maintain & update as EUI releases.\r\n\r\n### Current targets\r\n* EUI Gatsby starter (https://github.com/elastic/gatsby-eui-starter)\r\n* codesandbox\r\n* Create React App\r\n\r\n### Possibilities\r\n* EUI Next.js starter (https://github.com/elastic/next-eui-starter)\r\n* Server Side Rendering (#2074)\r\n* ESM-only systems such as snowpack and vite (#3521)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2756",
+ "title": "[Spec] Add a popover component to text and textarea fields for inserting variables",
+ "user": {
+ "login": "mdefazio",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3756330?v=4",
+ "html_url": "https://github.com/mdefazio"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2020-01-14T15:24:14Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Users need an easy way to add index fields (or other possible variables) into an input text field or textArea field.\r\n\r\n#### Proposal:\r\n**Add an optional icon to the right of the `text` and `textarea` input types that would open a popover.**\r\n\r\n![image](https://user-images.githubusercontent.com/3756330/72356420-3b4c6980-36b7-11ea-9101-5b43aeb8b15e.png)\r\n\r\n**When the icon is clicked**, a popover will appear (to the right or at the bottom, depending on space). This will provide a scrollable list of variables available for use.\r\n\r\n![image](https://user-images.githubusercontent.com/3756330/72356214-e0b30d80-36b6-11ea-99df-b9f2dd09bbc8.png)\r\n\r\n**Clicking on a variable** will insert the variable at the current point of the cursor. We could style the variable differently from the rest of the input entry so it stands out more. Or we can wrap it in curly brackets. Either way, it should be clear it is dynamic entry.\r\n\r\n![image](https://user-images.githubusercontent.com/3756330/72356300-09d39e00-36b7-11ea-9dbc-7c547a4cece5.png)\r\n\r\n**To change a variable**, the user can simply press the text and the popover will reopen. \r\n\r\n![image](https://user-images.githubusercontent.com/3756330/72356328-1526c980-36b7-11ea-8396-89004cab15b3.png)\r\n\r\n**To remove a variable**, the user would press the cross next to the variable (in the styled version). \r\n\r\nIn the alternate version, they would simply navigate their cursor to the point of the variable and delete using the keyboard. However, we should treat the entire variable as a single key, so deleting the right curly bracket, would delete the entire variable. This is to avoid residual text from a variable that may confuse the user.\r\n\r\n![image](https://user-images.githubusercontent.com/3756330/72356552-7058bc00-36b7-11ea-939d-6e3217c04b76.png)\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2743",
+ "title": "[EuiPopover] Doesn't work while in fullscreen",
+ "user": {
+ "login": "smith",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9912?v=4",
+ "html_url": "https://github.com/smith"
+ },
+ "labels": [
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 2,
+ "created_at": "2020-01-08T22:41:45Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "When in fullscreen mode popovers don't show up. \r\n\r\nThe problem is popovers, by default, are added at the end of the `body` element. When an element is fullscreen, everything else is ignored when rendering.\r\n\r\nUsing the `insert` prop can be used as a workaround.\r\n\r\nThis example codesandbox shows this in action: https://codesandbox.io/s/working-eui-isni5\r\n\r\nYou'll have to view it outside of the codesandbox editor for the fullscreen button to work: https://isni5.csb.app/"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2708",
+ "title": "[EuiSuperSelect] Accessibility issues",
+ "user": {
+ "login": "peteharverson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7405507?v=4",
+ "html_url": "https://github.com/peteharverson"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2019-12-20T14:37:12Z",
+ "author_association": "NONE",
+ "body": "An accessibility audit on the ML UI has raised several issues related to the EuiSuperSelect control:\r\n\r\n- The rendered `` element is given `role=\"option\"` (see https://github.com/elastic/kibana/issues/52378). The \"option\" role is intended to identify a selectable item in a select list. Authors must ensure elements with role option are contained in, or owned by, an element with the role listbox. It has been suggested that for the `button` element, you are restricted to the following roles: `checkbox`, `link`, `menuitem`, `menuitemcheckbox`, `menuitemradio`, `radio`, or `switch`, although I wonder if the `listbox` role is more suitable here?\r\n\r\n```\r\n\r\n\r\n...More Code...\r\n\r\n \r\n```\r\n\r\n- The button is rendered with an `undefined` value for `aria-labelledby`. This looks like it is because `src/components/form/super_select/super_select_control.js` is using the `id` property which is `undefined`.\r\n\r\n- Focus order is lost when exiting the options. After tabbing into the options in the control, and then pressing ESC to close the control or ENTER to select a value, the next TAB should navigate to the next control on the page, but focus returns to the first element on the page (can be reproduced on the EUI Examples page, or see https://github.com/elastic/kibana/issues/50181).\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2705",
+ "title": "[EuiBasicTable] Should allow visual grouping of cells, especially columns",
+ "user": {
+ "login": "wylieconlon",
+ "avatar_url": "https://avatars.githubusercontent.com/u/666475?v=4",
+ "html_url": "https://github.com/wylieconlon"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 3,
+ "created_at": "2019-12-19T22:01:03Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "This is not a request for full grouping support like the data grid will support, but for a simpler form of this: https://github.com/elastic/eui/issues/1689\r\n\r\nThe default way that Kibana flattens aggregated data is to repeat all the values in a column, which results in a table with redundancy:\r\n\r\n \r\n\r\nIs there a way to hide duplicate row values and present a more condensed version of the table? Maybe something like this?\r\n\r\n \r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2684",
+ "title": "[EuiDataGrid] Align schemas with Kibana",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 2,
+ "created_at": "2019-12-17T20:04:36Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "It'd be way convenient if DataGrid's default schema's aligned with Kibana's `KBN_FIELD_TYPES`\r\n\r\nhttps://github.com/elastic/kibana/blob/master/src/plugins/data/common/kbn_field_types/types.ts"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2679",
+ "title": "[Docs] Add automated tests for all pages",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 873872737,
+ "node_id": "MDU6TGFiZWw4NzM4NzI3Mzc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/test",
+ "name": "test",
+ "color": "74bfe8",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 8,
+ "created_at": "2019-12-17T18:34:04Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "After #2569, the guideline pages could manually be added to run through axe to check for accessibility issues. After #3502, all guidelines pages were tested by default unless they were disabled.\r\n\r\n**Implementation note:** To see the currently skipped pages, go to `scripts/a11y-testing.js`.\r\n\r\nPages left to enable:\r\n- [ ] Resizable Container\r\n- [ ] Button\r\n- [ ] Tree View\r\n- [ ] Side Nav\r\n- [ ] Tables\r\n- [ ] In Memory Tables\r\n- [ ] Aspect Ratio\r\n- [ ] Code\r\n- [ ] Drag And Drop\r\n- [ ] Compressed Forms\r\n- [ ] Combo Box\r\n- [ ] Color Selection\r\n- [ ] Code Editor\r\n- [ ] Date Picker\r\n- [x] Selectable (#3570)\r\n- [ ] Suggest\r\n- [ ] Super Date Picker\r\n- [ ] Creating Charts\r\n- [ ] Part to Whole Comparisons\r\n- [ ] CSS Utility Classes\r\n- [ ] Focus Trap\r\n\r\nPRs so far:\r\n- #2569\r\n- #2995\r\n- #3004\r\n- #3035\r\n- #3036\r\n- #3077\r\n- #3096\r\n- #3097\r\n- #3502"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2677",
+ "title": "EUI pattern for in product help",
+ "user": {
+ "login": "gchaps",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33642766?v=4",
+ "html_url": "https://github.com/gchaps"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 735494787,
+ "node_id": "MDU6TGFiZWw3MzU0OTQ3ODc=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/documentation",
+ "name": "documentation",
+ "color": "5462bc",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 4,
+ "created_at": "2019-12-17T17:51:10Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Sometimes users need more help than can be provided in the UI copy and tooltips. It would be nice to have a pattern for in product help. \r\n\r\nI've seen some apps use the [flyout](https://elastic.github.io/eui/#/layout/flyout) on the right. If this is the pattern we want, can we get some guidelines on how to use it, such as width size? "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2636",
+ "title": "[EuiDataGrid] Allow overriding individual aspects of default schemas",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 735494060,
+ "node_id": "MDU6TGFiZWw3MzU0OTQwNjA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/feature%20request",
+ "name": "feature request",
+ "color": "fef2c0",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1325439805,
+ "node_id": "MDU6TGFiZWwxMzI1NDM5ODA1",
+ "url": "https://api.github.com/repos/elastic/eui/labels/discussion",
+ "name": "discussion",
+ "color": "79e081",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2019-12-12T00:45:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Chiefly, I want to be able to override how default schemas render their cells.\r\n\r\nUsing DataGrid within Kibana, nearly always we will want to provide our own render function for known types (because of field formatters) but it would be nice to be able to use the other built-in bits for schemas (such as sorting, iconography, detection for unknown types, etc.)\r\n\r\nMarking this as up for `discussion` though because I'm not really sure what the best way to expose this would be though...\r\n\r\nFor reference, current default types in Kibana are: \r\n```ts\r\nexport enum FIELD_FORMAT_IDS {\r\n _SOURCE = '_source',\r\n BOOLEAN = 'boolean',\r\n BYTES = 'bytes',\r\n COLOR = 'color',\r\n CUSTOM = 'custom',\r\n DATE = 'date',\r\n DATE_NANOS = 'date_nanos',\r\n DURATION = 'duration',\r\n IP = 'ip',\r\n NUMBER = 'number',\r\n PERCENT = 'percent',\r\n RELATIVE_DATE = 'relative_date',\r\n STATIC_LOOKUP = 'static_lookup',\r\n STRING = 'string',\r\n TRUNCATE = 'truncate',\r\n URL = 'url',\r\n}\r\n```\r\n\r\n(though users can create their own as well)\r\n\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2625",
+ "title": "[EuiDataGrid] Removing a row while a popover is open, opens a popover for another row",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1630413413,
+ "node_id": "MDU6TGFiZWwxNjMwNDEzNDEz",
+ "url": "https://api.github.com/repos/elastic/eui/labels/data%20grid",
+ "name": "data grid",
+ "color": "b7420c",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 3,
+ "created_at": "2019-12-10T22:12:00Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "If I remove a row from an action in a details popover of a cell, I expect that popover to close and not reopen for the new row at that spot.\r\n\r\nExample:\r\n![Kapture 2019-12-10 at 16 05 05](https://user-images.githubusercontent.com/4188087/70573411-8aa6f380-1b67-11ea-8d71-41866b00fe86.gif)\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2609",
+ "title": "[EuiFlexGrid] Allow number of columns based on viewport size",
+ "user": {
+ "login": "flaviolivolsi",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5151628?v=4",
+ "html_url": "https://github.com/flaviolivolsi"
+ },
+ "labels": [
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 2358914164,
+ "node_id": "MDU6TGFiZWwyMzU4OTE0MTY0",
+ "url": "https://api.github.com/repos/elastic/eui/labels/long-term%20goal",
+ "name": "long-term goal",
+ "color": "8bede6",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 5,
+ "created_at": "2019-12-09T15:26:12Z",
+ "author_association": "NONE",
+ "body": "Is there any easy way I can set a certain value for the number of columns of a grid for the desktop viewport size and another one, for example, for tablets viewport size? If not, would a pull request be welcome to implement such a feature? I find it something very important for certain layouts.\r\n\r\nA practical example of what I mean (just to give the idea):\r\n\r\n```\r\n\r\n ...\r\n \r\n```\r\n\r\nAn idea could even be to have a helper to facilitate these operations, hence a function that extracts the values from `$euiBreakpoints` from SASS and compares the current viewport size against the breakpoints, returning the current one. This way the code would look something like this:\r\n\r\n```\r\n\r\n ...\r\n \r\n```"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2579",
+ "title": "[EuiContextMenu] Popover has to close before changes made to items are reflected",
+ "user": {
+ "login": "lou00011",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33159214?v=4",
+ "html_url": "https://github.com/lou00011"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903826641,
+ "node_id": "MDU6TGFiZWw5MDM4MjY2NDE=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:engineer",
+ "name": "assign:engineer",
+ "color": "f2af85",
+ "default": false,
+ "description": "Task that should go to an engineer"
+ },
+ {
+ "id": 1167062650,
+ "node_id": "MDU6TGFiZWwxMTY3MDYyNjUw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/good%20first%20issue",
+ "name": "good first issue",
+ "color": "fca4c0",
+ "default": true,
+ "description": ""
+ }
+ ],
+ "comments": 9,
+ "created_at": "2019-12-02T00:00:38Z",
+ "author_association": "NONE",
+ "body": "I wanted to make a context menu where each individual menu element can be toggled. I am doing this by changing the icon from `empty` to `check`.\r\n\r\n```\r\n setState(!state))\r\n >Entry A \r\n```\r\nHowever, I found that the context menu doesn't reflect the changes on the fly, but the popover must close and reopen for the change to be reflected.\r\n\r\nIs intentional? Is there anyway I can make this element reactive like everything else?\r\n"
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2544",
+ "title": "Look into using Use @media (prefers-reduced-motion) in EUI",
+ "user": {
+ "login": "snide",
+ "avatar_url": "https://avatars.githubusercontent.com/u/324519?v=4",
+ "html_url": "https://github.com/snide"
+ },
+ "labels": [
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ }
+ ],
+ "comments": 1,
+ "created_at": "2019-11-18T17:40:47Z",
+ "author_association": "MEMBER",
+ "body": "Although Kibana has an accessibility mode for turning off animation, it is pretty heavy handed. Likely we could do something more elegant in EUI."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2540",
+ "title": "[EuiDescribedFormGroup] Allow custom widths to be set",
+ "user": {
+ "login": "gjones",
+ "avatar_url": "https://avatars.githubusercontent.com/u/305167?v=4",
+ "html_url": "https://github.com/gjones"
+ },
+ "labels": [
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 1399999948,
+ "node_id": "MDU6TGFiZWwxMzk5OTk5OTQ4",
+ "url": "https://api.github.com/repos/elastic/eui/labels/prop%20request",
+ "name": "prop request",
+ "color": "3d4d9e",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 4,
+ "created_at": "2019-11-15T16:33:37Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "**Summary** \r\nCurrently `EuiDescribedFormGroup` is a 50/50 split between the label (left) and the form/action area (right). I'd like to suggest that we allow a more specific breakdowns to be set.\r\n\r\n![Screenshot 2019-11-15 at 11 24 27](https://user-images.githubusercontent.com/305167/68958649-8242df00-079a-11ea-8d35-601fe160b6ba.png)\r\n\r\n**Our problem** \r\nIn it's default state, there's not enough space in the right side for more complex actions to be taken. When `maxWidth:full` is set, there's enough space on the right but now there's too much space on the left and the label is often isolated.\r\n\r\n**Proposed solution** \r\nHandle the label width with a prop that takes percentage, an example might be `labelWidth: 35`. This would give the label width 35% and automatically assign the right side the remaining 65%.\r\n\r\nThis would allow us in Cloud to do something like this: \r\n![Screenshot 2019-11-15 at 11 30 16](https://user-images.githubusercontent.com/305167/68959080-625feb00-079b-11ea-84c5-48cb6d85543b.png)\r\n\r\nThoughts? \r\n\r\ncc @cchaos @snide "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2528",
+ "title": "[EuiSuggest] Status changes width of text field",
+ "user": {
+ "login": "i-a-n",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1937355?v=4",
+ "html_url": "https://github.com/i-a-n"
+ },
+ "labels": [
+ {
+ "id": 723745422,
+ "node_id": "MDU6TGFiZWw3MjM3NDU0MjI=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/bug",
+ "name": "bug",
+ "color": "ee0701",
+ "default": true,
+ "description": null
+ },
+ {
+ "id": 903848780,
+ "node_id": "MDU6TGFiZWw5MDM4NDg3ODA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:anyone",
+ "name": "assign:anyone",
+ "color": "e0c679",
+ "default": false,
+ "description": "Tasks that anyone should be OK fixing"
+ },
+ {
+ "id": 1559297000,
+ "node_id": "MDU6TGFiZWwxNTU5Mjk3MDAw",
+ "url": "https://api.github.com/repos/elastic/eui/labels/needs%20triage",
+ "name": "needs triage",
+ "color": "f47fe5",
+ "default": false,
+ "description": "For tickets that need some manner of validation / help and should be checked on later."
+ }
+ ],
+ "comments": 1,
+ "created_at": "2019-11-14T02:28:38Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "Hi team. I noticed that when changing the status on an `` element, typically from \"unchanged\" to \"loading\", that the width can change by a fair amount, up to 20 pixels. This causes a serious amount of jank on layouts that are dynamic and not full-width.\r\n\r\nHere's a pared-down example where a two-column flexbox layout is disrupted by toggling the loading state on/off. Just type slowly in the text field to toggle the status: https://codesandbox.io/s/optimistic-shadow-rlvq1\r\n\r\nThis isn't a blocker or anything for me, but I thought I'd bring it up for discussion and further tracking if it's something we want to fix."
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2511",
+ "title": "[EuiSuperDatePicker] Design discussion",
+ "user": {
+ "login": "timroes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/877229?v=4",
+ "html_url": "https://github.com/timroes"
+ },
+ "labels": [
+ {
+ "id": 735485963,
+ "node_id": "MDU6TGFiZWw3MzU0ODU5NjM=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/design%20decision",
+ "name": "design decision",
+ "color": "006b75",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 903825990,
+ "node_id": "MDU6TGFiZWw5MDM4MjU5OTA=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/assign:designer",
+ "name": "assign:designer",
+ "color": "9688f7",
+ "default": false,
+ "description": "Task that should go to a designer"
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 1,
+ "created_at": "2019-11-04T16:02:49Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "I would like to open a discussion issue around the current design and functionality of the SuperDatePicker. I’ve finished giving a Kibana training and saw around 50% of the users struggle with doing basic tasks like selecting a “from/to”time range in it. I wonder if we did already do some usability tests on the component—and if not, if you think we could potentially do some usability tests on the design/functionality of the component?\r\n\r\nI would be interested in seeing how different users perceive and are able to work with the time picker, especially also checking users not worked with the pre 7.0 time picker but also users who did. Having results of some usability tests might make it easier to objectively evaluate it’s current design again, and maybe see if there are improvements we could still do.\r\n\r\ncc @cchaos @snide "
+ },
+ {
+ "html_url": "https://github.com/elastic/eui/issues/2493",
+ "title": "[EuiFormRow] API and a11y cleanup",
+ "user": {
+ "login": "myasonik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4188087?v=4",
+ "html_url": "https://github.com/myasonik"
+ },
+ "labels": [
+ {
+ "id": 738909016,
+ "node_id": "MDU6TGFiZWw3Mzg5MDkwMTY=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/meta",
+ "name": "meta",
+ "color": "0e8a16",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 813180454,
+ "node_id": "MDU6TGFiZWw4MTMxODA0NTQ=",
+ "url": "https://api.github.com/repos/elastic/eui/labels/accessibility",
+ "name": "accessibility",
+ "color": "b7f41a",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 2809429546,
+ "node_id": "MDU6TGFiZWwyODA5NDI5NTQ2",
+ "url": "https://api.github.com/repos/elastic/eui/labels/skip-stale-check",
+ "name": "skip-stale-check",
+ "color": "8089A1",
+ "default": false,
+ "description": ""
+ }
+ ],
+ "comments": 10,
+ "created_at": "2019-10-28T15:28:18Z",
+ "author_association": "CONTRIBUTOR",
+ "body": "# Proposal\r\nDeprecate `labelType` and `hasChildLabel` on `` and, instead, programmatically detect what the correct element should be. \r\n\r\nOur current solution requires the developer to know ahead of time what's going to render and how the child elements effect what you have to pass into `EuiFormRow`. \r\n\r\n# Details\r\nIn general, it should be `` unless the child form elements already have an accessible name wired up.\r\n\r\nSo, elements that need a label: ` `, ``, ``, ``, ``, and `
+
`;
diff --git a/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap b/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap
index 09eea256ef4..01ded9459b9 100644
--- a/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap
+++ b/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap
@@ -8,6 +8,21 @@ exports[`EuiDataGridCell renders 1`] = `
isExpandable={true}
popoverContent={[Function]}
renderCellValue={[Function]}
+ rowHeightUtils={
+ Object {
+ "clearHeightsCache": [MockFunction],
+ "compareHeights": [MockFunction],
+ "computeStylesForGridCell": [MockFunction],
+ "getCalculatedHeight": [MockFunction],
+ "getFont": [MockFunction],
+ "getRowHeight": [MockFunction],
+ "getStylesForCell": [MockFunction],
+ "isAutoHeight": [MockFunction],
+ "isDefinedHeight": [MockFunction],
+ "setGrid": [MockFunction],
+ "setRowHeight": [MockFunction],
+ }
+ }
rowIndex={0}
visibleRowIndex={0}
>
@@ -40,6 +55,21 @@ exports[`EuiDataGridCell renders 1`] = `
isExpandable={true}
isExpanded={false}
renderCellValue={[Function]}
+ rowHeightUtils={
+ Object {
+ "clearHeightsCache": [MockFunction],
+ "compareHeights": [MockFunction],
+ "computeStylesForGridCell": [MockFunction],
+ "getCalculatedHeight": [MockFunction],
+ "getFont": [MockFunction],
+ "getRowHeight": [MockFunction],
+ "getStylesForCell": [MockFunction],
+ "isAutoHeight": [MockFunction],
+ "isDefinedHeight": [MockFunction],
+ "setGrid": [MockFunction],
+ "setRowHeight": [MockFunction],
+ }
+ }
rowIndex={0}
setCellContentsRef={[Function]}
setCellProps={[Function]}
diff --git a/src/components/datagrid/body/data_grid_body.test.tsx b/src/components/datagrid/body/data_grid_body.test.tsx
index e4193e74ae9..70250b2367c 100644
--- a/src/components/datagrid/body/data_grid_body.test.tsx
+++ b/src/components/datagrid/body/data_grid_body.test.tsx
@@ -7,11 +7,11 @@
*/
import React from 'react';
-import { mount } from 'enzyme';
+import { mount, render } from 'enzyme';
+import { mockRowHeightUtils } from '../__mocks__/row_height_utils';
import { DataGridSortingContext } from '../data_grid_context';
import { schemaDetectors } from '../data_grid_schema';
-import { RowHeightUtils } from '../row_height_utils';
import { EuiDataGridBody, getParentCellContent } from './data_grid_body';
@@ -39,16 +39,7 @@ describe('EuiDataGridBody', () => {
setVisibleColumns: jest.fn(),
switchColumnPos: jest.fn(),
schemaDetectors,
- rowHeightUtils: ({
- isDefinedHeight: () => false,
- isAutoHeight: () => false,
- setRowHeight: () => {},
- getRowHeight: () => 34,
- setGrid: () => {},
- compareHeights: (currentRowHeight: number, cachedRowHeight: number) =>
- currentRowHeight === cachedRowHeight,
- getCalculatedHeight: () => 34,
- } as any) as RowHeightUtils,
+ rowHeightUtils: mockRowHeightUtils,
};
beforeAll(() => {
@@ -59,9 +50,13 @@ describe('EuiDataGridBody', () => {
});
it('renders', () => {
- const component = mount( );
+ // EuiDataGridBody has to be `render`ed here - if you try to `mount`,
+ // it fails to update the snapshot because it's so large it causes memory issues
+ const component = render( );
expect(component).toMatchSnapshot();
- expect(component.find('Cell')).toHaveLength(2);
+ expect(component.find('[data-test-subj="dataGridRowCell"]')).toHaveLength(
+ 2
+ );
});
it('renders leading columns, trailing columns, and footer rows', () => {
diff --git a/src/components/datagrid/body/data_grid_cell.test.tsx b/src/components/datagrid/body/data_grid_cell.test.tsx
index 1e884293411..657bfe0c319 100644
--- a/src/components/datagrid/body/data_grid_cell.test.tsx
+++ b/src/components/datagrid/body/data_grid_cell.test.tsx
@@ -10,6 +10,7 @@ import React from 'react';
import { mount, ReactWrapper } from 'enzyme';
import { keys } from '../../../services';
+import { mockRowHeightUtils } from '../__mocks__/row_height_utils';
import { EuiDataGridCell } from './data_grid_cell';
describe('EuiDataGridCell', () => {
@@ -27,6 +28,7 @@ describe('EuiDataGridCell', () => {
),
popoverContent: () => popover
,
+ rowHeightUtils: mockRowHeightUtils,
};
const mountEuiDataGridCellWithContext = ({ ...props } = {}) => {
@@ -153,13 +155,8 @@ describe('EuiDataGridCell', () => {
value: 10,
});
const getRowHeight = jest.fn(() => 20);
- const rowHeightUtils = {
- isAutoHeight: () => true,
- compareHeights: (savedHeight: number, newHeight: number) =>
- savedHeight === newHeight,
- };
- component.setProps({ rowHeightUtils, getRowHeight });
+ component.setProps({ getRowHeight });
});
});
diff --git a/src/components/datagrid/data_grid.test.tsx b/src/components/datagrid/data_grid.test.tsx
index 17f4391803d..18966b6046d 100644
--- a/src/components/datagrid/data_grid.test.tsx
+++ b/src/components/datagrid/data_grid.test.tsx
@@ -15,53 +15,13 @@ import {
takeMountedSnapshot,
} from '../../test';
import { EuiDataGridColumnResizer } from './body/header/data_grid_column_resizer';
-import { EuiDataGridRowHeightOption } from './data_grid_types';
import { keys } from '../../services';
import { act } from 'react-dom/test-utils';
-jest.mock('./row_height_utils', () => {
- return {
- RowHeightUtils: jest.fn().mockImplementation(() => {
- return {
- computeStylesForGridCell: () => {},
- clearHeightsCache: () => {},
- setGrid: () => {},
- getStylesForCell: () => ({
- wordWrap: 'break-word',
- wordBreak: 'break-word',
- flexGrow: 1,
- }),
- isDefinedHeight: () => true,
- isAutoHeight: () => false,
- setRowHeight: () => {},
- getRowHeight: () => 32,
- getFont: () => null,
- compareHeights: (currentRowHeight: number, cachedRowHeight: number) =>
- currentRowHeight === cachedRowHeight,
- getCalculatedHeight: (
- heightOption: EuiDataGridRowHeightOption,
- defaultHeight: number
- ) => {
- if (typeof heightOption === 'object') {
- if (heightOption.lineCount) {
- return heightOption.lineCount;
- }
-
- if (heightOption.height) {
- return heightOption.height;
- }
- }
-
- if (heightOption) {
- return heightOption;
- }
-
- return defaultHeight;
- },
- };
- }),
- };
-});
+import { mockRowHeightUtils } from './__mocks__/row_height_utils';
+jest.mock('./row_height_utils', () => ({
+ RowHeightUtils: jest.fn(() => mockRowHeightUtils),
+}));
function getFocusableCell(component: ReactWrapper) {
return findTestSubject(component, 'dataGridRowCell').find('[tabIndex=0]');
From 95363620f231c025d055a52eca40bafc74f734fd Mon Sep 17 00:00:00 2001
From: Constance Chen
Date: Tue, 14 Sep 2021 13:33:37 -0700
Subject: [PATCH 35/57] [EuiGridCell] Refactor + write test for new
componentDidUpdate logic
- Pull into separate class fn for readability, since the logic isn't using prevProps but is just running on evry update
- destructure for readability
- declare vars for if condition readability
---
.../datagrid/body/data_grid_cell.test.tsx | 15 ++++++
.../datagrid/body/data_grid_cell.tsx | 50 +++++++++++--------
2 files changed, 44 insertions(+), 21 deletions(-)
diff --git a/src/components/datagrid/body/data_grid_cell.test.tsx b/src/components/datagrid/body/data_grid_cell.test.tsx
index 657bfe0c319..7b8e9592469 100644
--- a/src/components/datagrid/body/data_grid_cell.test.tsx
+++ b/src/components/datagrid/body/data_grid_cell.test.tsx
@@ -167,6 +167,21 @@ describe('EuiDataGridCell', () => {
});
describe('componentDidUpdate', () => {
+ it('recalculates row height on every update', () => {
+ const { isAutoHeight, setRowHeight } = mockRowHeightUtils;
+ (isAutoHeight as jest.Mock).mockImplementation(() => true);
+
+ const component = mountEuiDataGridCellWithContext({
+ rowHeightsOptions: { defaultHeight: 'auto' },
+ getRowHeight: jest.fn(() => 50),
+ });
+
+ component.setProps({ rowIndex: 2 }); // Trigger any update
+ expect(setRowHeight).toHaveBeenCalled();
+
+ (isAutoHeight as jest.Mock).mockRestore();
+ });
+
it('resets cell props when the cell columnId changes', () => {
const setState = jest.spyOn(EuiDataGridCell.prototype, 'setState');
const component = mountEuiDataGridCellWithContext();
diff --git a/src/components/datagrid/body/data_grid_cell.tsx b/src/components/datagrid/body/data_grid_cell.tsx
index 0b779142a3f..289054e3298 100644
--- a/src/components/datagrid/body/data_grid_cell.tsx
+++ b/src/components/datagrid/body/data_grid_cell.tsx
@@ -194,6 +194,33 @@ export class EuiDataGridCell extends Component<
}
};
+ recalculateRowHeight() {
+ const cellRef = this.cellRef.current;
+ const { getRowHeight, rowHeightUtils, rowHeightsOptions } = this.props;
+
+ if (cellRef && getRowHeight && rowHeightUtils && rowHeightsOptions) {
+ const { rowIndex, colIndex, visibleRowIndex } = this.props;
+
+ const isAutoHeight = rowHeightUtils.isAutoHeight(
+ rowIndex,
+ rowHeightsOptions
+ );
+ const isHeightSame = rowHeightUtils.compareHeights(
+ cellRef.offsetHeight,
+ getRowHeight(rowIndex)
+ );
+
+ if (isAutoHeight && !isHeightSame) {
+ rowHeightUtils.setRowHeight(
+ rowIndex,
+ colIndex,
+ this.cellContentsRef?.offsetHeight,
+ visibleRowIndex
+ );
+ }
+ }
+ }
+
componentDidMount() {
this.unsubscribeCell = this.context.onFocusUpdate(
[this.props.colIndex, this.props.visibleRowIndex],
@@ -217,27 +244,8 @@ export class EuiDataGridCell extends Component<
}
componentDidUpdate(prevProps: EuiDataGridCellProps) {
- if (
- this.cellRef.current &&
- this.props.getRowHeight &&
- this.props.rowHeightUtils &&
- this.props.rowHeightsOptions &&
- this.props.rowHeightUtils.isAutoHeight(
- this.props.rowIndex,
- this.props.rowHeightsOptions
- ) &&
- !this.props.rowHeightUtils?.compareHeights(
- this.cellRef.current.offsetHeight,
- this.props.getRowHeight(this.props.rowIndex)
- )
- ) {
- this.props.rowHeightUtils?.setRowHeight(
- this.props.rowIndex,
- this.props.colIndex,
- this.cellContentsRef?.offsetHeight,
- this.props.visibleRowIndex
- );
- }
+ this.recalculateRowHeight();
+
if (this.props.columnId !== prevProps.columnId) {
this.setCellProps({});
}
From f58d629f6eed0b0b518a8b6761a7afaebc7cc9d4 Mon Sep 17 00:00:00 2001
From: Constance Chen
Date: Tue, 14 Sep 2021 13:42:01 -0700
Subject: [PATCH 36/57] [EuiGridCell] PR feedback: destructure props for
readability
---
.../datagrid/body/data_grid_cell.tsx | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/components/datagrid/body/data_grid_cell.tsx b/src/components/datagrid/body/data_grid_cell.tsx
index 289054e3298..8c6cd65c727 100644
--- a/src/components/datagrid/body/data_grid_cell.tsx
+++ b/src/components/datagrid/body/data_grid_cell.tsx
@@ -311,21 +311,21 @@ export class EuiDataGridCell extends Component<
setCellContentsRef = (ref: HTMLDivElement | null) => {
this.cellContentsRef = ref;
+ const { rowHeightUtils, rowHeightsOptions, rowIndex } = this.props;
if (
- this.props.rowHeightUtils &&
- this.props.rowHeightsOptions &&
- this.props.rowHeightUtils.isAutoHeight(
- this.props.rowIndex,
- this.props.rowHeightsOptions
- )
+ rowHeightUtils &&
+ rowHeightsOptions &&
+ rowHeightUtils.isAutoHeight(rowIndex, rowHeightsOptions)
) {
if (ref && hasResizeObserver) {
+ const { colIndex, visibleRowIndex } = this.props;
+
const setRowHeight = (rowHeight: number) =>
- this.props.rowHeightUtils?.setRowHeight(
- this.props.rowIndex,
- this.props.colIndex,
+ rowHeightUtils.setRowHeight(
+ rowIndex,
+ colIndex,
rowHeight,
- this.props.visibleRowIndex
+ visibleRowIndex
);
this.contentObserver = observeHeight(ref, setRowHeight);
} else if (this.contentObserver) {
From b2e99760e9d255561c61f2f7f84fa72adea87eda Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Wed, 15 Sep 2021 13:40:28 +0300
Subject: [PATCH 37/57] fix nit's
---
.../datagrid/body/data_grid_body.tsx | 5 +--
.../datagrid/body/data_grid_cell.tsx | 38 +++++++++----------
src/components/datagrid/data_grid_types.ts | 6 +--
src/components/datagrid/row_height_utils.ts | 27 ++++++-------
4 files changed, 33 insertions(+), 43 deletions(-)
diff --git a/src/components/datagrid/body/data_grid_body.tsx b/src/components/datagrid/body/data_grid_body.tsx
index 72dc338cde7..97335b433ce 100644
--- a/src/components/datagrid/body/data_grid_body.tsx
+++ b/src/components/datagrid/body/data_grid_body.tsx
@@ -556,7 +556,7 @@ export const EuiDataGridBody: FunctionComponent = (
}
if (!height && rowHeightsOptions.defaultHeight === AUTO_HEIGHT) {
- return rowHeightUtils.getRowHeight(correctRowIndex) || defaultHeight;
+ height = rowHeightUtils.getRowHeight(correctRowIndex);
}
}
@@ -697,9 +697,6 @@ export const EuiDataGridBody: FunctionComponent = (
}
width={finalWidth}
columnWidth={getWidth}
- estimatedRowHeight={
- rowHeightsOptions?.estimatedRowHeight || defaultHeight
- }
height={finalHeight}
rowHeight={getRowHeight}
itemData={{
diff --git a/src/components/datagrid/body/data_grid_cell.tsx b/src/components/datagrid/body/data_grid_cell.tsx
index 8c6cd65c727..aeaa72d1e31 100644
--- a/src/components/datagrid/body/data_grid_cell.tsx
+++ b/src/components/datagrid/body/data_grid_cell.tsx
@@ -73,9 +73,9 @@ const EuiDataGridCellContent: FunctionComponent<
ref={setCellContentsRef}
data-datagrid-cellcontent
className={
- !isDefinedHeight
- ? 'euiDataGridRowCell__truncate'
- : 'euiDataGridRowCell__definedHeight'
+ isDefinedHeight
+ ? 'euiDataGridRowCell__definedHeight'
+ : 'euiDataGridRowCell__truncate'
}
style={
isDefinedHeight
@@ -98,20 +98,6 @@ const EuiDataGridCellContent: FunctionComponent<
}
);
-function observeHeight(
- component: HTMLDivElement | null,
- setRowHeight?: (rowHeight: number) => void
-) {
- const observer = new (window as any).ResizeObserver(() => {
- const rowHeight = component!.getBoundingClientRect().height;
- if (setRowHeight) {
- setRowHeight(rowHeight);
- }
- });
- observer.observe(component);
- return observer;
-}
-
export class EuiDataGridCell extends Component<
EuiDataGridCellProps,
EuiDataGridCellState
@@ -144,13 +130,27 @@ export class EuiDataGridCell extends Component<
focusTimeout: number | undefined;
style = null;
+ observeHeight = (
+ component: HTMLDivElement | null,
+ setRowHeight?: (rowHeight: number) => void
+ ) => {
+ const observer = new (window as any).ResizeObserver(() => {
+ const rowHeight = component!.getBoundingClientRect().height;
+ if (setRowHeight) {
+ setRowHeight(rowHeight);
+ }
+ });
+ observer.observe(component);
+ return observer;
+ };
+
setCellRef = (ref: HTMLDivElement | null) => {
this.cellRef.current = ref;
// watch the first cell for size changes and use that to re-compute row heights
if (this.props.colIndex === 0 && this.props.visibleRowIndex === 0) {
if (ref && hasResizeObserver) {
- this.observer = observeHeight(ref, this.props.setRowHeight);
+ this.observer = this.observeHeight(ref, this.props.setRowHeight);
} else if (this.observer) {
this.observer.disconnect();
}
@@ -327,7 +327,7 @@ export class EuiDataGridCell extends Component<
rowHeight,
visibleRowIndex
);
- this.contentObserver = observeHeight(ref, setRowHeight);
+ this.contentObserver = this.observeHeight(ref, setRowHeight);
} else if (this.contentObserver) {
this.contentObserver.disconnect();
}
diff --git a/src/components/datagrid/data_grid_types.ts b/src/components/datagrid/data_grid_types.ts
index b61ee871c2f..084c562a1b3 100644
--- a/src/components/datagrid/data_grid_types.ts
+++ b/src/components/datagrid/data_grid_types.ts
@@ -247,7 +247,7 @@ export type CommonGridProps = CommonProps &
*/
width?: CSSProperties['width'];
/**
- * Defines a react-window props.
+ * Allows customizing the underlying [react-window grid](https://react-window.vercel.app/#/api/VariableSizeGrid) props.
*/
virtualizationOptions?: Partial;
/**
@@ -713,8 +713,4 @@ export interface EuiDataGridRowHeightsOptions {
* Defines the height for a specific row. It can be line count or just height.
*/
rowHeights?: Record;
- /**
- * Average (or estimated) row height for unrendered rows.
- */
- estimatedRowHeight?: number;
}
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 4a7330ad625..7e24edb961c 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -34,6 +34,7 @@ function getNumberFromPx(style?: string) {
}
export const AUTO_HEIGHT = 'auto';
+const DEFAULT_HEIGHT = 32;
// So that we use lineCount options we should know exactly row height which allow to show defined line count.
// For this we should know paddings and line height. Because of this we should compute styles for cell with grid styles
@@ -56,7 +57,7 @@ export class RowHeightUtils {
setRowHeight(
rowIndex: number,
colIndex: number,
- height: number = 32,
+ height: number = DEFAULT_HEIGHT,
visibleRowIndex: number
) {
const rowHeights = this.heightsCache.get(rowIndex) || {};
@@ -109,15 +110,12 @@ export class RowHeightUtils {
rowIndex: number,
rowHeightsOptions: EuiDataGridRowHeightsOptions
) {
- if (
- rowHeightsOptions.rowHeights &&
- rowHeightsOptions.rowHeights[rowIndex]
- ) {
- return rowHeightsOptions.rowHeights[rowIndex] === AUTO_HEIGHT;
+ if (rowHeightsOptions.rowHeights?.[rowIndex] === AUTO_HEIGHT) {
+ return true;
}
- if (rowHeightsOptions.defaultHeight) {
- return rowHeightsOptions.defaultHeight === AUTO_HEIGHT;
+ if (rowHeightsOptions.defaultHeight === AUTO_HEIGHT) {
+ return true;
}
return false;
@@ -128,8 +126,7 @@ export class RowHeightUtils {
rowHeightsOptions: EuiDataGridRowHeightsOptions
) {
if (
- (rowHeightsOptions.rowHeights &&
- rowHeightsOptions.rowHeights[rowIndex]) ||
+ rowHeightsOptions.rowHeights?.[rowIndex] ||
rowHeightsOptions.defaultHeight
) {
return true;
@@ -152,7 +149,7 @@ export class RowHeightUtils {
lineHeight: getNumberFromPx(allStyles.lineHeight),
};
document.body.removeChild(this.fakeCell);
- // we need clear height cache so that recalculate heigths for new styles.
+ // we need clear the height cache so that it recalculates heights for new styles
this.clearHeightsCache();
}
@@ -183,7 +180,7 @@ export class RowHeightUtils {
return Math.max(heightOption, defaultHeight);
}
- if (heightOption && heightOption === AUTO_HEIGHT && rowIndex) {
+ if (heightOption === AUTO_HEIGHT && rowIndex) {
return this.getRowHeight(rowIndex);
}
@@ -194,13 +191,13 @@ export class RowHeightUtils {
rowHeightsOptions: EuiDataGridRowHeightsOptions,
rowIndex: number
): CSSProperties => {
- let initialHeight =
- rowHeightsOptions.rowHeights && rowHeightsOptions.rowHeights[rowIndex];
-
if (this.isAutoHeight(rowIndex, rowHeightsOptions)) {
return {};
}
+ let initialHeight =
+ rowHeightsOptions.rowHeights && rowHeightsOptions.rowHeights[rowIndex];
+
if (!initialHeight) {
initialHeight = rowHeightsOptions.defaultHeight;
}
From c1c52d4107d3201b8702ac8d37e3071866883870 Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 13:22:01 +0100
Subject: [PATCH 38/57] Making datagrid matching the top snippet and improving
demo
---
.../src/views/datagrid/row_auto_height.tsx | 105 ++++++++++--------
1 file changed, 57 insertions(+), 48 deletions(-)
diff --git a/src-docs/src/views/datagrid/row_auto_height.tsx b/src-docs/src/views/datagrid/row_auto_height.tsx
index 6bc93b9d87a..e725eadd90b 100644
--- a/src-docs/src/views/datagrid/row_auto_height.tsx
+++ b/src-docs/src/views/datagrid/row_auto_height.tsx
@@ -9,16 +9,19 @@ import React, {
// @ts-ignore not configured to import json
import githubData from './row_auto_height_data.json';
+import { formatDate } from '../../../../src/services';
+
import {
EuiDataGrid,
EuiDataGridProps,
} from '../../../../src/components/datagrid';
import { EuiLink } from '../../../../src/components/link';
-import { EuiIcon } from '../../../../src/components/icon';
-import { EuiToolTip } from '../../../../src/components/tool_tip';
import { EuiAvatar } from '../../../../src/components/avatar';
import { EuiBadge } from '../../../../src/components/badge';
import { EuiMarkdownFormat } from '../../../../src/components/markdown_editor';
+import { EuiText } from '../../../../src/components/text';
+import { EuiTitle } from '../../../../src/components/title';
+import { EuiSpacer } from '../../../../src/components/spacer';
interface DataShape {
html_url: string;
@@ -50,30 +53,20 @@ const DataContext = createContext(undefined);
const columns = [
{
- id: 'created',
- displayAsText: 'Created',
- schema: 'datetime',
+ id: 'index',
+ displayAsText: 'Index',
isExpandable: false,
+ initialWidth: 80,
},
{
- id: 'title',
- displayAsText: 'Title',
- isExpandable: false,
- },
- {
- id: 'user',
- displayAsText: 'User',
+ id: 'issue',
+ displayAsText: 'Issue',
isExpandable: false,
},
{
id: 'body',
displayAsText: 'Description',
},
- {
- id: 'labels',
- displayAsText: 'Labels',
- isExpandable: false,
- },
];
// it is expensive to compute 10000 rows of fake data
@@ -90,49 +83,58 @@ const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
const item = data[rowIndex];
let content: ReactNode = '';
- if (columnId === 'title') {
+ if (columnId === 'index') {
+ content = <>{rowIndex}>;
+ } else if (columnId === 'issue') {
content = (
<>
+
+
+
+ {item.title}
+ {' '}
+ {item.labels.map(({ name, color }) => (
+
+ {name}
+
+ ))}
+
+
+
+
+
+
+
+ Opened by{' '}
+ {' '}
+ {item.user.login} on {formatDate(item.created_at, 'dobLong')}
+
+
+
+
+
{item.comments >= 1 && (
-
-
-
- )}
-
- {item.title}
-
- >
- );
- } else if (columnId === 'user') {
- content = (
- <>
-
- {item.user.login}
- >
- );
- } else if (columnId === 'labels') {
- content = (
- <>
- {item.labels.map(({ name, color }) => (
-
- {name}
+
+ {`${item.comments} comments`}
- ))}
+ )}
>
);
- } else if (columnId === 'created') {
- content = item.created_at.toString();
} else if (columnId === 'body') {
if (isDetails) {
// expanded in a popover
content = {item.body ?? ''} ;
} else {
// a full issue description is a *lot* to shove into a cell
- content = (item.body ?? '').slice(0, 300);
+ content = content = (
+
+ {(item.body ?? '').slice(0, 300)}
+
+ );
}
}
@@ -173,9 +175,16 @@ export default () => {
columns.map(({ id }) => id)
); // initialize to the full set of columns
+ // matches the example snippet
const rowHeightsOptions = useMemo(
() => ({
defaultHeight: 'auto' as const,
+ rowHeights: {
+ 1: {
+ lineCount: 5,
+ },
+ 4: 140,
+ },
}),
[]
);
From 9231c306c07af9f6410895553a96053c01d30a86 Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 13:27:01 +0100
Subject: [PATCH 39/57] Fixing comments line
---
src-docs/src/views/datagrid/row_auto_height.tsx | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src-docs/src/views/datagrid/row_auto_height.tsx b/src-docs/src/views/datagrid/row_auto_height.tsx
index e725eadd90b..f89e0bc81eb 100644
--- a/src-docs/src/views/datagrid/row_auto_height.tsx
+++ b/src-docs/src/views/datagrid/row_auto_height.tsx
@@ -92,7 +92,8 @@ const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
{item.title}
- {' '}
+
+ {' '}
{item.labels.map(({ name, color }) => (
{name}
@@ -117,8 +118,14 @@ const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
- {item.comments >= 1 && (
-
+ {item.comments === 1 && (
+
+ {`${item.comments} comment`}
+
+ )}
+
+ {item.comments >= 2 && (
+
{`${item.comments} comments`}
)}
From 425de962f2456a6aa6fdcff92ad37626f3594ac4 Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 13:35:04 +0100
Subject: [PATCH 40/57] Removing HTML code
---
.../datagrid/datagrid_height_options_example.js | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index b0f393263a1..b57f8b1b6c3 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -1,6 +1,5 @@
import React, { Fragment } from 'react';
-import { renderToHtml } from '../../services';
import { GuideSectionTypes } from '../../components';
import {
EuiCallOut,
@@ -12,10 +11,8 @@ import {
import DataGridRowHeightOptions from './row_height_options';
const dataGridRowHeightOptionsSource = require('!!raw-loader!./row_height_options');
-const dataGridRowHeightOptionsHtml = renderToHtml(DataGridRowHeightOptions);
import DataGridRowAutoHeight from './row_auto_height';
const dataGridRowAutoHeightSource = require('!!raw-loader!./row_auto_height');
-const dataGridRowAutoHeightHtml = renderToHtml(DataGridRowAutoHeight);
const rowHeightsSnippet = `rowHeightsOptions = {
defaultHeight: {
@@ -68,7 +65,7 @@ export const DataGridRowHeightOptionsExample = {
Rows must be at least 34 pixels tall so they can
render at least one line of text. If you provide a smaller height the
- row will default to 34 pixels.
+ row will default to 34 pixels .
@@ -81,10 +78,6 @@ export const DataGridRowHeightOptionsExample = {
type: GuideSectionTypes.JS,
code: dataGridRowHeightOptionsSource,
},
- {
- type: GuideSectionTypes.HTML,
- code: dataGridRowHeightOptionsHtml,
- },
],
title: 'Fixed heights for rows',
text: (
@@ -103,10 +96,6 @@ export const DataGridRowHeightOptionsExample = {
type: GuideSectionTypes.JS,
code: dataGridRowAutoHeightSource,
},
- {
- type: GuideSectionTypes.HTML,
- code: dataGridRowAutoHeightHtml,
- },
],
title: 'Auto-fit row to content',
text: (
From e5d766fb30ee5dbac3ce6c4cf354ac15d8497a9f Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 14:26:24 +0100
Subject: [PATCH 41/57] New section title
---
.../datagrid_height_options_example.js | 80 +++++++++++++++++--
1 file changed, 74 insertions(+), 6 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index b57f8b1b6c3..ba9c72bbdea 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -27,20 +27,86 @@ const rowHeightsSnippet = `rowHeightsOptions = {
},
}`;
-const autoRowHeightsSnippet = `
- {
- defaultHeight: 'auto', // each row auto fit to content except rows which was defined in 'rowHeights'
+const rowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
+ () => ({
+ defaultHeight: {
+ lineCount: 2, // default every row to 2 lines of text. Also we can provide height in pixels
+ },
rowHeights: {
1: {
lineCount: 5, // for row which have index 1 we allow to show 5 lines after that we truncate
},
4: 140, // for row which have index 4 we set 140 pixel
+ 5: 80,
},
- }
+ }),
+ []
+);
+
+
+`;
+
+const autoRowHeightsSnippet = `rowHeightsOptions = {
+ defaultHeight: 'auto', // each row auto fit to content except rows which was defined in 'rowHeights'
+ rowHeights: {
+ 1: {
+ lineCount: 5, // for row which have index 1 we allow to show 5 lines after that we truncate
+ },
+ 4: 140, // for row which have index 4 we set 140 pixel
+ },
+}
+`;
+
+const autoRowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
+ () => ({
+ defaultHeight: 'auto',
+ rowHeights: {
+ 1: {
+ lineCount: 5,
+ },
+ 4: 140,
+ },
+ }),
+ []
+);
+
+
`;
export const DataGridRowHeightOptionsExample = {
- title: 'Data grid row height options',
+ title: 'Data grid row heights options',
intro: (
@@ -89,6 +155,7 @@ export const DataGridRowHeightOptionsExample = {
),
components: { DataGridRowHeightOptions },
demo: ,
+ snippet: rowHeightsFullSnippet,
},
{
source: [
@@ -97,7 +164,7 @@ export const DataGridRowHeightOptionsExample = {
code: dataGridRowAutoHeightSource,
},
],
- title: 'Auto-fit row to content',
+ title: 'Auto heights for rows',
text: (
@@ -114,6 +181,7 @@ export const DataGridRowHeightOptionsExample = {
),
components: { DataGridRowAutoHeight },
demo: ,
+ snippet: autoRowHeightsFullSnippet,
},
],
};
From 8bc5aac724a70d7bbabb6c75dc13885b370a4783 Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Wed, 15 Sep 2021 08:19:17 -0600
Subject: [PATCH 42/57] Small logic optimization
---
src/components/datagrid/body/data_grid_cell.tsx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/components/datagrid/body/data_grid_cell.tsx b/src/components/datagrid/body/data_grid_cell.tsx
index aeaa72d1e31..f5eca7ff69e 100644
--- a/src/components/datagrid/body/data_grid_cell.tsx
+++ b/src/components/datagrid/body/data_grid_cell.tsx
@@ -313,11 +313,12 @@ export class EuiDataGridCell extends Component<
this.cellContentsRef = ref;
const { rowHeightUtils, rowHeightsOptions, rowIndex } = this.props;
if (
+ hasResizeObserver &&
rowHeightUtils &&
rowHeightsOptions &&
rowHeightUtils.isAutoHeight(rowIndex, rowHeightsOptions)
) {
- if (ref && hasResizeObserver) {
+ if (ref) {
const { colIndex, visibleRowIndex } = this.props;
const setRowHeight = (rowHeight: number) =>
From 4ac0a88bd9be89c56587aab0b475dcaf5cbe05a3 Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 16:15:30 +0100
Subject: [PATCH 43/57] Improving texts
---
.../datagrid_height_options_example.js | 50 +++++++++++--------
1 file changed, 28 insertions(+), 22 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index ba9c72bbdea..e9adc32063e 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -2,6 +2,7 @@ import React, { Fragment } from 'react';
import { GuideSectionTypes } from '../../components';
import {
+ EuiDataGrid,
EuiCallOut,
EuiCode,
EuiCodeBlock,
@@ -9,6 +10,8 @@ import {
EuiText,
} from '../../../../src/components';
+import { EuiDataGridRowHeightsOptions } from '!!prop-loader!../../../../src/components/datagrid/data_grid_types';
+
import DataGridRowHeightOptions from './row_height_options';
const dataGridRowHeightOptionsSource = require('!!raw-loader!./row_height_options');
import DataGridRowAutoHeight from './row_auto_height';
@@ -32,13 +35,6 @@ const rowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
defaultHeight: {
lineCount: 2, // default every row to 2 lines of text. Also we can provide height in pixels
},
- rowHeights: {
- 1: {
- lineCount: 5, // for row which have index 1 we allow to show 5 lines after that we truncate
- },
- 4: 140, // for row which have index 4 we set 140 pixel
- 5: 80,
- },
}),
[]
);
@@ -75,13 +71,7 @@ const autoRowHeightsSnippet = `rowHeightsOptions = {
const autoRowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
() => ({
- defaultHeight: 'auto',
- rowHeights: {
- 1: {
- lineCount: 5,
- },
- 4: 140,
- },
+ defaultHeight: 'auto'
}),
[]
);
@@ -111,9 +101,11 @@ export const DataGridRowHeightOptionsExample = {
- Row height options can be passed down to the grid through the{' '}
- rowHeightsOptions prop. It accepts an object
- configuring the default height and/or specific row heights:
+ By default, the rows get a fixed height of 34 pixels ,
+ but there are scenarios where you might want to expand the height to
+ fit more content. To do that, you can pass an object to the{' '}
+ rowHeightsOptions prop. This object accepts two
+ properties:
@@ -148,12 +140,21 @@ export const DataGridRowHeightOptionsExample = {
title: 'Fixed heights for rows',
text: (
+
+ You can change the default height to any size bigger than that by
+ specifying the line count or the height in pixels for all rows or
+ just for a specific row.
+
{rowHeightsSnippet}
),
components: { DataGridRowHeightOptions },
+ props: {
+ EuiDataGrid,
+ EuiDataGridRowHeightsOptions,
+ },
demo: ,
snippet: rowHeightsFullSnippet,
},
@@ -168,18 +169,23 @@ export const DataGridRowHeightOptionsExample = {
text: (
- Row height options also supports to set value so that rows auto fit
- to content. Just provide auto as value for{' '}
- defaultHeight or for one of the rows in{' '}
- rowHeights
+ You can change the default height for all rows by setting{' '}
+ defaultHeight="auto" . This will ensure
+ the rows will auto expand to fit the content. You can also override
+ the height of a specific row by passing an object to the{' '}
+ rowHeights property with the index number and{' '}
+ "auto" .
-
{autoRowHeightsSnippet}
),
components: { DataGridRowAutoHeight },
+ props: {
+ EuiDataGrid,
+ EuiDataGridRowHeightsOptions,
+ },
demo: ,
snippet: autoRowHeightsFullSnippet,
},
From 968ee10918d5cfd924b086a98e508207fd7c0ff0 Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 16:39:12 +0100
Subject: [PATCH 44/57] Renaming files and improving "fixed heights rows" demo
---
.../datagrid_height_options_example.js | 24 +-
...ow_auto_height.tsx => row_height_auto.tsx} | 2 +-
.../src/views/datagrid/row_height_fixed.tsx | 228 ++++++++++++++++++
.../src/views/datagrid/row_height_options.js | 118 ---------
4 files changed, 242 insertions(+), 130 deletions(-)
rename src-docs/src/views/datagrid/{row_auto_height.tsx => row_height_auto.tsx} (99%)
create mode 100644 src-docs/src/views/datagrid/row_height_fixed.tsx
delete mode 100644 src-docs/src/views/datagrid/row_height_options.js
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index e9adc32063e..377a75806ff 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -12,20 +12,18 @@ import {
import { EuiDataGridRowHeightsOptions } from '!!prop-loader!../../../../src/components/datagrid/data_grid_types';
-import DataGridRowHeightOptions from './row_height_options';
-const dataGridRowHeightOptionsSource = require('!!raw-loader!./row_height_options');
-import DataGridRowAutoHeight from './row_auto_height';
-const dataGridRowAutoHeightSource = require('!!raw-loader!./row_auto_height');
+import DataGridRowHeightOptions from './row_height_fixed';
+const dataGridRowHeightOptionsSource = require('!!raw-loader!./row_height_fixed');
+import DataGridRowAutoHeight from './row_height_auto';
+const dataGridRowAutoHeightSource = require('!!raw-loader!./row_height_auto');
const rowHeightsSnippet = `rowHeightsOptions = {
- defaultHeight: {
- lineCount: 2, // default every row to 2 lines of text. Also we can provide height in pixels
- },
+ defaultHeight: 140,
rowHeights: {
1: {
lineCount: 5, // for row which have index 1 we allow to show 5 lines after that we truncate
},
- 4: 140, // for row which have index 4 we set 140 pixel
+ 4: 200, // for row which have index 4 we set 140 pixel
5: 80,
},
}`;
@@ -141,9 +139,13 @@ export const DataGridRowHeightOptionsExample = {
text: (
- You can change the default height to any size bigger than that by
- specifying the line count or the height in pixels for all rows or
- just for a specific row.
+ You can change the default height for all rows by passing to the
+ defaultHeight property a{' '}
+ lineCount or height . This will
+ ensure the rows will expand to match that configuration. You can
+ also override the height of a specific row by passing an object to
+ the rowHeights property with the index number and
+ lineCount or height .
{rowHeightsSnippet}
diff --git a/src-docs/src/views/datagrid/row_auto_height.tsx b/src-docs/src/views/datagrid/row_height_auto.tsx
similarity index 99%
rename from src-docs/src/views/datagrid/row_auto_height.tsx
rename to src-docs/src/views/datagrid/row_height_auto.tsx
index f89e0bc81eb..917f845a8cc 100644
--- a/src-docs/src/views/datagrid/row_auto_height.tsx
+++ b/src-docs/src/views/datagrid/row_height_auto.tsx
@@ -182,7 +182,7 @@ export default () => {
columns.map(({ id }) => id)
); // initialize to the full set of columns
- // matches the example snippet
+ // matches the snippet example
const rowHeightsOptions = useMemo(
() => ({
defaultHeight: 'auto' as const,
diff --git a/src-docs/src/views/datagrid/row_height_fixed.tsx b/src-docs/src/views/datagrid/row_height_fixed.tsx
new file mode 100644
index 00000000000..5dcde75205b
--- /dev/null
+++ b/src-docs/src/views/datagrid/row_height_fixed.tsx
@@ -0,0 +1,228 @@
+import React, {
+ useCallback,
+ useState,
+ createContext,
+ useContext,
+ useMemo,
+ ReactNode,
+} from 'react';
+// @ts-ignore not configured to import json
+import githubData from './row_auto_height_data.json';
+
+import { formatDate } from '../../../../src/services';
+
+import {
+ EuiDataGrid,
+ EuiDataGridProps,
+} from '../../../../src/components/datagrid';
+import { EuiLink } from '../../../../src/components/link';
+import { EuiAvatar } from '../../../../src/components/avatar';
+import { EuiBadge } from '../../../../src/components/badge';
+import { EuiMarkdownFormat } from '../../../../src/components/markdown_editor';
+import { EuiText } from '../../../../src/components/text';
+import { EuiTitle } from '../../../../src/components/title';
+import { EuiSpacer } from '../../../../src/components/spacer';
+
+interface DataShape {
+ html_url: string;
+ title: string;
+ user: {
+ login: string;
+ avatar_url: string;
+ };
+ labels: Array<{
+ name: string;
+ color: string;
+ }>;
+ comments: number;
+ created_at: string;
+ body?: string;
+}
+
+// convert strings to Date objects
+for (let i = 0; i < githubData.length; i++) {
+ githubData[i].created_at = new Date(githubData[i].created_at);
+}
+
+type DataContextShape =
+ | undefined
+ | {
+ data: DataShape[];
+ };
+const DataContext = createContext(undefined);
+
+const columns = [
+ {
+ id: 'index',
+ displayAsText: 'Index',
+ isExpandable: false,
+ initialWidth: 80,
+ },
+ {
+ id: 'issue',
+ displayAsText: 'Issue',
+ isExpandable: false,
+ },
+ {
+ id: 'body',
+ displayAsText: 'Description',
+ },
+];
+
+// it is expensive to compute 10000 rows of fake data
+// instead of loading up front, generate entries on the fly
+const raw_data: DataShape[] = githubData;
+
+const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
+ rowIndex,
+ columnId,
+ isDetails,
+}) => {
+ const { data } = useContext(DataContext)!;
+
+ const item = data[rowIndex];
+ let content: ReactNode = '';
+
+ if (columnId === 'index') {
+ content = <>{rowIndex}>;
+ } else if (columnId === 'issue') {
+ content = (
+ <>
+
+
+
+ {item.title}
+
+ {' '}
+ {item.labels.map(({ name, color }) => (
+
+ {name}
+
+ ))}
+
+
+
+
+
+
+
+ Opened by{' '}
+ {' '}
+ {item.user.login} on {formatDate(item.created_at, 'dobLong')}
+
+
+
+
+
+ {item.comments === 1 && (
+
+ {`${item.comments} comment`}
+
+ )}
+
+ {item.comments >= 2 && (
+
+ {`${item.comments} comments`}
+
+ )}
+ >
+ );
+ } else if (columnId === 'body') {
+ if (isDetails) {
+ // expanded in a popover
+ content = {item.body ?? ''} ;
+ } else {
+ // a full issue description is a *lot* to shove into a cell
+ content = content = (
+
+ {(item.body ?? '').slice(0, 300)}
+
+ );
+ }
+ }
+
+ return content;
+};
+
+export default () => {
+ // ** Pagination config
+ const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 });
+
+ // ** Sorting config
+ const [sortingColumns, setSortingColumns] = useState([]);
+ const onSort = useCallback(
+ (sortingColumns) => {
+ setSortingColumns(sortingColumns);
+ },
+ [setSortingColumns]
+ );
+
+ const onChangeItemsPerPage = useCallback(
+ (pageSize) =>
+ setPagination((pagination) => ({
+ ...pagination,
+ pageSize,
+ pageIndex: 0,
+ })),
+ [setPagination]
+ );
+
+ const onChangePage = useCallback(
+ (pageIndex) =>
+ setPagination((pagination) => ({ ...pagination, pageIndex })),
+ [setPagination]
+ );
+
+ // Column visibility
+ const [visibleColumns, setVisibleColumns] = useState(() =>
+ columns.map(({ id }) => id)
+ ); // initialize to the full set of columns
+
+ // matches the snippet example
+ const rowHeightsOptions = useMemo(
+ () => ({
+ defaultHeight: 140,
+ rowHeights: {
+ 1: {
+ lineCount: 5,
+ },
+ 4: 200,
+ 5: 80,
+ },
+ }),
+ []
+ );
+
+ const dataContext = useMemo(
+ () => ({
+ data: raw_data,
+ }),
+ []
+ );
+
+ return (
+
+
+
+ );
+};
diff --git a/src-docs/src/views/datagrid/row_height_options.js b/src-docs/src/views/datagrid/row_height_options.js
deleted file mode 100644
index e9f09302681..00000000000
--- a/src-docs/src/views/datagrid/row_height_options.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import React, {
- useCallback,
- useState,
- createContext,
- useContext,
- useMemo,
-} from 'react';
-import { fake } from 'faker';
-
-import { EuiDataGrid } from '../../../../src/components/';
-
-const DataContext = createContext();
-
-const columns = [
- {
- id: 'name',
- displayAsText: 'Name',
- defaultSortDirection: 'asc',
- },
- {
- id: 'text',
- cellActions: [
- ({ Component }) => {
- return (
-
- Heart
-
- );
- },
- ],
- },
-];
-
-// it is expensive to compute 10000 rows of fake data
-// instead of loading up front, generate entries on the fly
-const raw_data = [];
-
-function RenderCellValue({ rowIndex, columnId }) {
- const { data } = useContext(DataContext);
-
- if (data[rowIndex] == null) {
- data[rowIndex] = {
- name: fake('{{lorem.text}}'),
- text: fake('{{lorem.text}}'),
- };
- }
-
- return data[rowIndex][columnId];
-}
-
-export default () => {
- // ** Pagination config
- const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 50 });
-
- const onChangeItemsPerPage = useCallback(
- (pageSize) =>
- setPagination((pagination) => ({
- ...pagination,
- pageSize,
- pageIndex: 0,
- })),
- [setPagination]
- );
-
- const onChangePage = useCallback(
- (pageIndex) =>
- setPagination((pagination) => ({ ...pagination, pageIndex })),
- [setPagination]
- );
-
- // Column visibility
- const [visibleColumns, setVisibleColumns] = useState(() =>
- columns.map(({ id }) => id)
- ); // initialize to the full set of columns
-
- const rowHeightsOptions = useMemo(
- () => ({
- defaultHeight: {
- lineCount: 2,
- },
- rowHeights: {
- 1: {
- lineCount: 5,
- },
- 4: 140,
- 5: 80,
- },
- }),
- []
- );
-
- const dataContext = useMemo(
- () => ({
- data: raw_data,
- }),
- []
- );
-
- return (
-
-
-
- );
-};
From 1a015b637044725afce93eed697a5341f891032c Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 17:10:22 +0100
Subject: [PATCH 45/57] Better text :D
---
.../datagrid/datagrid_height_options_example.js | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index 377a75806ff..0bbd9e990ac 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -100,7 +100,7 @@ export const DataGridRowHeightOptionsExample = {
By default, the rows get a fixed height of 34 pixels ,
- but there are scenarios where you might want to expand the height to
+ but there are scenarios where you might want to adjust the height to
fit more content. To do that, you can pass an object to the{' '}
rowHeightsOptions prop. This object accepts two
properties:
@@ -142,9 +142,10 @@ export const DataGridRowHeightOptionsExample = {
You can change the default height for all rows by passing to the
defaultHeight property a{' '}
lineCount or height . This will
- ensure the rows will expand to match that configuration. You can
- also override the height of a specific row by passing an object to
- the rowHeights property with the index number and
+ ensure the rows will adjust the height to match that configuration.
+ You can also override the height of a specific row by passing an
+ object to the rowHeights property with the index
+ number and
lineCount or height .
@@ -173,10 +174,10 @@ export const DataGridRowHeightOptionsExample = {
You can change the default height for all rows by setting{' '}
defaultHeight="auto" . This will ensure
- the rows will auto expand to fit the content. You can also override
- the height of a specific row by passing an object to the{' '}
- rowHeights property with the index number and{' '}
- "auto" .
+ the rows will automatically adjust the height to fit the contents.
+ You can also override the height of a specific row by passing an
+ object to the rowHeights property with the index
+ number and "auto" .
{autoRowHeightsSnippet}
From b8bce9cce884614c820abda88041f0f9ebc09ccb Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Wed, 15 Sep 2021 18:02:46 +0100
Subject: [PATCH 46/57] Text again
---
.../datagrid_height_options_example.js | 47 ++++++++++++-------
1 file changed, 29 insertions(+), 18 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index 0bbd9e990ac..58100a3b5de 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -18,7 +18,7 @@ import DataGridRowAutoHeight from './row_height_auto';
const dataGridRowAutoHeightSource = require('!!raw-loader!./row_height_auto');
const rowHeightsSnippet = `rowHeightsOptions = {
- defaultHeight: 140,
+ defaultHeight: 140, // default every row to 140px
rowHeights: {
1: {
lineCount: 5, // for row which have index 1 we allow to show 5 lines after that we truncate
@@ -31,8 +31,7 @@ const rowHeightsSnippet = `rowHeightsOptions = {
const rowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
() => ({
defaultHeight: {
- lineCount: 2, // default every row to 2 lines of text. Also we can provide height in pixels
- },
+ lineCount: 2,
}),
[]
);
@@ -43,7 +42,7 @@ const rowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
columnVisibility={{ visibleColumns, setVisibleColumns }}
rowCount={rowCount}
height={400}
- renderCellValue={RenderCellValue}
+ renderCellValue={renderCellValue}
inMemory={{ level: 'sorting' }}
sorting={{ columns: sortingColumns, onSort }}
rowHeightsOptions={rowHeightsOptions}
@@ -56,15 +55,24 @@ const rowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
/>
`;
-const autoRowHeightsSnippet = `rowHeightsOptions = {
- defaultHeight: 'auto', // each row auto fit to content except rows which was defined in 'rowHeights'
+const autoRowHeightsSnippet = `// the demo below matches this snippet
+rowHeightsOptions = {
+ defaultHeight: 'auto', // all rows will automatically adjust the height except rows defined in 'rowHeights'
rowHeights: {
1: {
- lineCount: 5, // for row which have index 1 we allow to show 5 lines after that we truncate
+ lineCount: 5, // row with index 1 will show 5 lines
},
- 4: 140, // for row which have index 4 we set 140 pixel
+ 4: 140, // row with index 4 will adjust the height to 140px
},
}
+
+// you can also automatically adjust the height for a specific row
+rowHeightsOptions = {
+ rowHeights: {
+ 1: 'auto', // row with index 1 will automatically adjust the height
+ 4: 140, // row with index 4 will adjust the height to 140px
+ }
+}
`;
const autoRowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
@@ -80,7 +88,7 @@ const autoRowHeightsFullSnippet = `const rowHeightsOptions = useMemo(
columnVisibility={{ visibleColumns, setVisibleColumns }}
rowCount={rowCount}
height={400}
- renderCellValue={RenderCellValue}
+ renderCellValue={renderCellValue}
inMemory={{ level: 'sorting' }}
sorting={{ columns: sortingColumns, onSort }}
rowHeightsOptions={rowHeightsOptions}
@@ -99,9 +107,9 @@ export const DataGridRowHeightOptionsExample = {
- By default, the rows get a fixed height of 34 pixels ,
- but there are scenarios where you might want to adjust the height to
- fit more content. To do that, you can pass an object to the{' '}
+ By default, all rows get a height of 34 pixels , but
+ there are scenarios where you might want to adjust the height to fit
+ more content. To do that, you can pass an object to the{' '}
rowHeightsOptions prop. This object accepts two
properties:
@@ -139,14 +147,15 @@ export const DataGridRowHeightOptionsExample = {
text: (
- You can change the default height for all rows by passing to the
- defaultHeight property a{' '}
- lineCount or height . This will
- ensure the rows will adjust the height to match that configuration.
+ You can change the default height for all rows by passing to the{' '}
+ defaultHeight property a line count or a height
+ in pixels. This will ensure the rows will adjust the height to match
+ that configuration.
+
+
You can also override the height of a specific row by passing an
object to the rowHeights property with the index
- number and
- lineCount or height .
+ number, line count or a height in pixels.
{rowHeightsSnippet}
@@ -175,6 +184,8 @@ export const DataGridRowHeightOptionsExample = {
You can change the default height for all rows by setting{' '}
defaultHeight="auto" . This will ensure
the rows will automatically adjust the height to fit the contents.
+
+
You can also override the height of a specific row by passing an
object to the rowHeights property with the index
number and "auto" .
From 8f3d3df7856d1e94a09ae91d6d9d4d3c439d0cca Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Wed, 15 Sep 2021 11:14:50 -0600
Subject: [PATCH 47/57] Correctly identify the row heights page in the a11y
test skipping
---
scripts/a11y-testing.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/a11y-testing.js b/scripts/a11y-testing.js
index 23fe3ea8b0c..daaf22b469f 100644
--- a/scripts/a11y-testing.js
+++ b/scripts/a11y-testing.js
@@ -21,7 +21,7 @@ const docsPages = async (root, page) => {
`${root}#/tabular-content/data-grid-control-columns`,
`${root}#/tabular-content/data-grid-footer-row`,
`${root}#/tabular-content/data-grid-virtualization`,
- `${root}#/tabular-content/data-grid-row-height-options`,
+ `${root}#/tabular-content/data-grid-row-heights-options`,
];
return [
From 0c1326076bf546149ba73d372e3fe953d912fbef Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Wed, 15 Sep 2021 11:35:29 -0600
Subject: [PATCH 48/57] Small copy cleanup
---
.../datagrid_height_options_example.js | 38 ++++++++++---------
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_height_options_example.js b/src-docs/src/views/datagrid/datagrid_height_options_example.js
index 58100a3b5de..4799ab28685 100644
--- a/src-docs/src/views/datagrid/datagrid_height_options_example.js
+++ b/src-docs/src/views/datagrid/datagrid_height_options_example.js
@@ -60,17 +60,17 @@ rowHeightsOptions = {
defaultHeight: 'auto', // all rows will automatically adjust the height except rows defined in 'rowHeights'
rowHeights: {
1: {
- lineCount: 5, // row with index 1 will show 5 lines
+ lineCount: 5, // row at index 1 will show 5 lines
},
- 4: 140, // row with index 4 will adjust the height to 140px
+ 4: 140, // row at index 4 will adjust the height to 140px
},
}
// you can also automatically adjust the height for a specific row
rowHeightsOptions = {
rowHeights: {
- 1: 'auto', // row with index 1 will automatically adjust the height
- 4: 140, // row with index 4 will adjust the height to 140px
+ 1: 'auto', // row at index 1 will automatically adjust the height
+ 4: 140, // row at index 4 will adjust the height to 140px
}
}
`;
@@ -123,6 +123,11 @@ export const DataGridRowHeightOptionsExample = {
row
+
+ Each of these can be configured with an exact pixel height, a line
+ count, or "auto" to fit all of the
+ content. See the examples below for more details.
+
@@ -147,15 +152,14 @@ export const DataGridRowHeightOptionsExample = {
text: (
- You can change the default height for all rows by passing to the{' '}
- defaultHeight property a line count or a height
- in pixels. This will ensure the rows will adjust the height to match
- that configuration.
+ You can change the default height for all rows by passing a line
+ count or pixel value to the defaultHeight {' '}
+ property.
- You can also override the height of a specific row by passing an
- object to the rowHeights property with the index
- number, line count or a height in pixels.
+ You can also override the height of a specific row by passing a
+ rowHeights object associating the row's
+ index with a specific height configuration.
{rowHeightsSnippet}
@@ -181,14 +185,14 @@ export const DataGridRowHeightOptionsExample = {
text: (
- You can change the default height for all rows by setting{' '}
- defaultHeight="auto" . This will ensure
- the rows will automatically adjust the height to fit the contents.
+ To enable automatically fitting rows to their content you can set{' '}
+ defaultHeight="auto" . This ensures
+ every row automatically adjusts its height to fit the contents.
- You can also override the height of a specific row by passing an
- object to the rowHeights property with the index
- number and "auto" .
+ You can also override the height of a specific row by passing a
+ rowHeights object associating the row's
+ index with an "auto" value.
{autoRowHeightsSnippet}
From 4744bf1297840968f26bffd855074498666a6946 Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Wed, 15 Sep 2021 11:43:47 -0600
Subject: [PATCH 49/57] small example cleanup
---
src-docs/src/views/datagrid/row_height_auto.tsx | 5 +++++
src-docs/src/views/datagrid/row_height_fixed.tsx | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/src-docs/src/views/datagrid/row_height_auto.tsx b/src-docs/src/views/datagrid/row_height_auto.tsx
index 917f845a8cc..dba50acba2d 100644
--- a/src-docs/src/views/datagrid/row_height_auto.tsx
+++ b/src-docs/src/views/datagrid/row_height_auto.tsx
@@ -215,6 +215,11 @@ export default () => {
inMemory={{ level: 'sorting' }}
sorting={{ columns: sortingColumns, onSort }}
rowHeightsOptions={rowHeightsOptions}
+ virtualizationOptions={{
+ // rough average of the cell heights in the example
+ // accurately setting this smooths out the scrolling experience
+ estimatedRowHeight: 210,
+ }}
pagination={{
...pagination,
pageSizeOptions: [50, 250, 1000],
diff --git a/src-docs/src/views/datagrid/row_height_fixed.tsx b/src-docs/src/views/datagrid/row_height_fixed.tsx
index 5dcde75205b..65841c4032c 100644
--- a/src-docs/src/views/datagrid/row_height_fixed.tsx
+++ b/src-docs/src/views/datagrid/row_height_fixed.tsx
@@ -216,6 +216,11 @@ export default () => {
inMemory={{ level: 'sorting' }}
sorting={{ columns: sortingColumns, onSort }}
rowHeightsOptions={rowHeightsOptions}
+ virtualizationOptions={{
+ // rough average of the cell heights in the example
+ // accurately setting this smooths out the scrolling experience
+ estimatedRowHeight: 210,
+ }}
pagination={{
...pagination,
pageSizeOptions: [50, 250, 1000],
From 6969933c1ce8cdb4bca9037570b232499e79a514 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Thu, 16 Sep 2021 16:28:14 +0300
Subject: [PATCH 50/57] Fix calculating defaultHeight after using density
---
src/components/datagrid/body/data_grid_body.tsx | 8 +++++++-
src/components/datagrid/row_height_utils.ts | 4 ++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/components/datagrid/body/data_grid_body.tsx b/src/components/datagrid/body/data_grid_body.tsx
index 97335b433ce..bf60001e75e 100644
--- a/src/components/datagrid/body/data_grid_body.tsx
+++ b/src/components/datagrid/body/data_grid_body.tsx
@@ -526,6 +526,7 @@ export const EuiDataGridBody: FunctionComponent = (
const [minRowHeight, setRowHeight] = useState(INITIAL_ROW_HEIGHT);
+ // it depends on getComputedCellStyles because we use cell styles for calculating defaultHeight
const defaultHeight = useMemo(
() =>
rowHeightsOptions?.defaultHeight
@@ -534,7 +535,12 @@ export const EuiDataGridBody: FunctionComponent = (
minRowHeight
)
: minRowHeight,
- [rowHeightsOptions, minRowHeight, rowHeightUtils]
+ [
+ rowHeightsOptions,
+ minRowHeight,
+ rowHeightUtils,
+ rowHeightUtils.getComputedCellStyles(),
+ ]
);
const getRowHeight = useCallback(
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 7e24edb961c..e6ef506b54a 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -153,6 +153,10 @@ export class RowHeightUtils {
this.clearHeightsCache();
}
+ getComputedCellStyles() {
+ return this.styles;
+ }
+
calculateHeightForLineCount(lineCount: number) {
return Math.ceil(
lineCount * this.styles.lineHeight +
From 77bcbb24a062b9a989e814f795e11409e13f016b Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Thu, 16 Sep 2021 17:00:45 +0300
Subject: [PATCH 51/57] Update mock
---
src/components/datagrid/__mocks__/row_height_utils.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/components/datagrid/__mocks__/row_height_utils.ts b/src/components/datagrid/__mocks__/row_height_utils.ts
index 1f7ed5a3c00..dac8430c3ab 100644
--- a/src/components/datagrid/__mocks__/row_height_utils.ts
+++ b/src/components/datagrid/__mocks__/row_height_utils.ts
@@ -24,6 +24,7 @@ export const mockRowHeightUtils = ({
setRowHeight: jest.fn(),
getRowHeight: jest.fn(() => 32),
getFont: jest.fn(() => null),
+ getComputedCellStyles: jest.fn(() => {}),
compareHeights: jest.fn(
(currentRowHeight: number, cachedRowHeight: number) =>
currentRowHeight === cachedRowHeight
From d1d430595d2447e4fe9200214df06322b03ccef2 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Thu, 16 Sep 2021 17:48:25 +0300
Subject: [PATCH 52/57] make visibility property depends on calculating cell
height
---
.../datagrid/__mocks__/row_height_utils.ts | 1 +
src/components/datagrid/body/data_grid_body.tsx | 12 +++++++++++-
src/components/datagrid/body/data_grid_cell.tsx | 2 ++
src/components/datagrid/row_height_utils.ts | 10 +++++++++-
4 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/components/datagrid/__mocks__/row_height_utils.ts b/src/components/datagrid/__mocks__/row_height_utils.ts
index dac8430c3ab..85483e3bbe2 100644
--- a/src/components/datagrid/__mocks__/row_height_utils.ts
+++ b/src/components/datagrid/__mocks__/row_height_utils.ts
@@ -25,6 +25,7 @@ export const mockRowHeightUtils = ({
getRowHeight: jest.fn(() => 32),
getFont: jest.fn(() => null),
getComputedCellStyles: jest.fn(() => {}),
+ isGridReseted: jest.fn(() => true),
compareHeights: jest.fn(
(currentRowHeight: number, cachedRowHeight: number) =>
currentRowHeight === cachedRowHeight
diff --git a/src/components/datagrid/body/data_grid_body.tsx b/src/components/datagrid/body/data_grid_body.tsx
index bf60001e75e..cd56b1d8205 100644
--- a/src/components/datagrid/body/data_grid_body.tsx
+++ b/src/components/datagrid/body/data_grid_body.tsx
@@ -119,6 +119,11 @@ export const Cell: FunctionComponent = ({
[`euiDataGridRowCell--${textTransform}`]: textTransform,
});
+ const isHideCell =
+ rowHeightsOptions &&
+ rowHeightUtils?.isAutoHeight(rowIndex, rowHeightsOptions) &&
+ !rowHeightUtils?.isGridReseted();
+
if (isLeadingControlColumn) {
const leadingColumn = leadingControlColumns[columnIndex];
const { id, rowCellRender } = leadingColumn;
@@ -142,6 +147,7 @@ export const Cell: FunctionComponent = ({
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
+ visibility: isHideCell ? 'hidden' : 'visible',
}}
/>
);
@@ -169,6 +175,7 @@ export const Cell: FunctionComponent = ({
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
+ visibility: isHideCell ? 'hidden' : 'visible',
}}
/>
);
@@ -206,6 +213,7 @@ export const Cell: FunctionComponent = ({
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
+ visibility: isHideCell ? 'hidden' : 'visible',
}}
/>
);
@@ -526,6 +534,8 @@ export const EuiDataGridBody: FunctionComponent = (
const [minRowHeight, setRowHeight] = useState(INITIAL_ROW_HEIGHT);
+ const computedCellStyles = rowHeightUtils.getComputedCellStyles();
+
// it depends on getComputedCellStyles because we use cell styles for calculating defaultHeight
const defaultHeight = useMemo(
() =>
@@ -539,7 +549,7 @@ export const EuiDataGridBody: FunctionComponent = (
rowHeightsOptions,
minRowHeight,
rowHeightUtils,
- rowHeightUtils.getComputedCellStyles(),
+ computedCellStyles,
]
);
diff --git a/src/components/datagrid/body/data_grid_cell.tsx b/src/components/datagrid/body/data_grid_cell.tsx
index f5eca7ff69e..783f5ad365d 100644
--- a/src/components/datagrid/body/data_grid_cell.tsx
+++ b/src/components/datagrid/body/data_grid_cell.tsx
@@ -275,6 +275,8 @@ export class EuiDataGridCell extends Component<
if (nextProps.style.left !== this.props.style.left) return true;
if (nextProps.style.height !== this.props.style.height) return true;
if (nextProps.style.width !== this.props.style.width) return true;
+ if (nextProps.style.visibility !== this.props.style.visibility)
+ return true;
}
if (nextState.cellProps !== this.state.cellProps) return true;
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index e6ef506b54a..36f9684ea49 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -53,6 +53,7 @@ export class RowHeightUtils {
private timerId: any;
private grid?: Grid;
private lastUpdatedRow: number = Infinity;
+ private gridReseted: boolean = false;
setRowHeight(
rowIndex: number,
@@ -62,12 +63,13 @@ export class RowHeightUtils {
) {
const rowHeights = this.heightsCache.get(rowIndex) || {};
const adaptedHeight =
- height + this.styles.paddingTop + this.styles.paddingBottom;
+ Math.ceil(height + this.styles.paddingTop + this.styles.paddingBottom);
if (rowHeights[colIndex] === adaptedHeight) {
return;
}
+ this.gridReseted = false;
rowHeights[colIndex] = adaptedHeight;
this.heightsCache.set(rowIndex, rowHeights);
// save the first row index of batch, reassigning it only
@@ -93,10 +95,16 @@ export class RowHeightUtils {
}
resetGrid() {
+ this.gridReseted = true;
+ console.log('resetGrid')
this.grid?.resetAfterRowIndex(this.lastUpdatedRow);
this.lastUpdatedRow = Infinity;
}
+ isGridReseted() {
+ return this.gridReseted;
+ }
+
setGrid(grid: Grid) {
this.grid = grid;
}
From 5d589cc6f1fcc48fc67292e6e9b4b392a8c901ae Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Thu, 16 Sep 2021 10:53:04 -0600
Subject: [PATCH 53/57] make lint happy
---
.../datagrid/body/data_grid_body.tsx | 29 +++++++++----------
src/components/datagrid/row_height_utils.ts | 6 ++--
2 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/src/components/datagrid/body/data_grid_body.tsx b/src/components/datagrid/body/data_grid_body.tsx
index cd56b1d8205..bcaa42776ac 100644
--- a/src/components/datagrid/body/data_grid_body.tsx
+++ b/src/components/datagrid/body/data_grid_body.tsx
@@ -536,22 +536,19 @@ export const EuiDataGridBody: FunctionComponent = (
const computedCellStyles = rowHeightUtils.getComputedCellStyles();
- // it depends on getComputedCellStyles because we use cell styles for calculating defaultHeight
- const defaultHeight = useMemo(
- () =>
- rowHeightsOptions?.defaultHeight
- ? rowHeightUtils.getCalculatedHeight(
- rowHeightsOptions.defaultHeight,
- minRowHeight
- )
- : minRowHeight,
- [
- rowHeightsOptions,
- minRowHeight,
- rowHeightUtils,
- computedCellStyles,
- ]
- );
+ const defaultHeight = useMemo(() => {
+ // @ts-ignore we need to re-run this when computedCellStyles changes,
+ // but it isn't used directly; so let's make the hooks lint rule see
+ // that it is used, but we need to tell eslint to ignore
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const _computedCellStyles = computedCellStyles;
+ return rowHeightsOptions?.defaultHeight
+ ? rowHeightUtils.getCalculatedHeight(
+ rowHeightsOptions.defaultHeight,
+ minRowHeight
+ )
+ : minRowHeight;
+ }, [rowHeightsOptions, minRowHeight, rowHeightUtils, computedCellStyles]);
const getRowHeight = useCallback(
(rowIndex) => {
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 36f9684ea49..7c9d0859a65 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -62,8 +62,9 @@ export class RowHeightUtils {
visibleRowIndex: number
) {
const rowHeights = this.heightsCache.get(rowIndex) || {};
- const adaptedHeight =
- Math.ceil(height + this.styles.paddingTop + this.styles.paddingBottom);
+ const adaptedHeight = Math.ceil(
+ height + this.styles.paddingTop + this.styles.paddingBottom
+ );
if (rowHeights[colIndex] === adaptedHeight) {
return;
@@ -96,7 +97,6 @@ export class RowHeightUtils {
resetGrid() {
this.gridReseted = true;
- console.log('resetGrid')
this.grid?.resetAfterRowIndex(this.lastUpdatedRow);
this.lastUpdatedRow = Infinity;
}
From 9441e39a7dafa62a960a05f38f5170236b52a6b7 Mon Sep 17 00:00:00 2001
From: Uladzislau Lasitsa
Date: Thu, 16 Sep 2021 23:20:53 +0300
Subject: [PATCH 54/57] Revert "make visibility property depends on calculating
cell height"
This reverts commit d1d430595d2447e4fe9200214df06322b03ccef2.
---
src/components/datagrid/__mocks__/row_height_utils.ts | 1 -
src/components/datagrid/body/data_grid_body.tsx | 8 --------
src/components/datagrid/body/data_grid_cell.tsx | 2 --
src/components/datagrid/row_height_utils.ts | 7 -------
4 files changed, 18 deletions(-)
diff --git a/src/components/datagrid/__mocks__/row_height_utils.ts b/src/components/datagrid/__mocks__/row_height_utils.ts
index 85483e3bbe2..dac8430c3ab 100644
--- a/src/components/datagrid/__mocks__/row_height_utils.ts
+++ b/src/components/datagrid/__mocks__/row_height_utils.ts
@@ -25,7 +25,6 @@ export const mockRowHeightUtils = ({
getRowHeight: jest.fn(() => 32),
getFont: jest.fn(() => null),
getComputedCellStyles: jest.fn(() => {}),
- isGridReseted: jest.fn(() => true),
compareHeights: jest.fn(
(currentRowHeight: number, cachedRowHeight: number) =>
currentRowHeight === cachedRowHeight
diff --git a/src/components/datagrid/body/data_grid_body.tsx b/src/components/datagrid/body/data_grid_body.tsx
index bcaa42776ac..6627c842c5e 100644
--- a/src/components/datagrid/body/data_grid_body.tsx
+++ b/src/components/datagrid/body/data_grid_body.tsx
@@ -119,11 +119,6 @@ export const Cell: FunctionComponent = ({
[`euiDataGridRowCell--${textTransform}`]: textTransform,
});
- const isHideCell =
- rowHeightsOptions &&
- rowHeightUtils?.isAutoHeight(rowIndex, rowHeightsOptions) &&
- !rowHeightUtils?.isGridReseted();
-
if (isLeadingControlColumn) {
const leadingColumn = leadingControlColumns[columnIndex];
const { id, rowCellRender } = leadingColumn;
@@ -147,7 +142,6 @@ export const Cell: FunctionComponent = ({
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
- visibility: isHideCell ? 'hidden' : 'visible',
}}
/>
);
@@ -175,7 +169,6 @@ export const Cell: FunctionComponent = ({
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
- visibility: isHideCell ? 'hidden' : 'visible',
}}
/>
);
@@ -213,7 +206,6 @@ export const Cell: FunctionComponent = ({
style={{
...style,
top: `${parseFloat(style.top as string) + headerRowHeight}px`,
- visibility: isHideCell ? 'hidden' : 'visible',
}}
/>
);
diff --git a/src/components/datagrid/body/data_grid_cell.tsx b/src/components/datagrid/body/data_grid_cell.tsx
index 783f5ad365d..f5eca7ff69e 100644
--- a/src/components/datagrid/body/data_grid_cell.tsx
+++ b/src/components/datagrid/body/data_grid_cell.tsx
@@ -275,8 +275,6 @@ export class EuiDataGridCell extends Component<
if (nextProps.style.left !== this.props.style.left) return true;
if (nextProps.style.height !== this.props.style.height) return true;
if (nextProps.style.width !== this.props.style.width) return true;
- if (nextProps.style.visibility !== this.props.style.visibility)
- return true;
}
if (nextState.cellProps !== this.state.cellProps) return true;
diff --git a/src/components/datagrid/row_height_utils.ts b/src/components/datagrid/row_height_utils.ts
index 7c9d0859a65..862eb9355ff 100644
--- a/src/components/datagrid/row_height_utils.ts
+++ b/src/components/datagrid/row_height_utils.ts
@@ -53,7 +53,6 @@ export class RowHeightUtils {
private timerId: any;
private grid?: Grid;
private lastUpdatedRow: number = Infinity;
- private gridReseted: boolean = false;
setRowHeight(
rowIndex: number,
@@ -70,7 +69,6 @@ export class RowHeightUtils {
return;
}
- this.gridReseted = false;
rowHeights[colIndex] = adaptedHeight;
this.heightsCache.set(rowIndex, rowHeights);
// save the first row index of batch, reassigning it only
@@ -96,15 +94,10 @@ export class RowHeightUtils {
}
resetGrid() {
- this.gridReseted = true;
this.grid?.resetAfterRowIndex(this.lastUpdatedRow);
this.lastUpdatedRow = Infinity;
}
- isGridReseted() {
- return this.gridReseted;
- }
-
setGrid(grid: Grid) {
this.grid = grid;
}
From 9e3fc6da69c1629fcd7830d8644f9ac13a966339 Mon Sep 17 00:00:00 2001
From: Chandler Prall
Date: Thu, 16 Sep 2021 16:43:36 -0600
Subject: [PATCH 55/57] snapshot
---
.../datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap b/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap
index 01ded9459b9..f9378b7c4dc 100644
--- a/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap
+++ b/src/components/datagrid/body/__snapshots__/data_grid_cell.test.tsx.snap
@@ -14,6 +14,7 @@ exports[`EuiDataGridCell renders 1`] = `
"compareHeights": [MockFunction],
"computeStylesForGridCell": [MockFunction],
"getCalculatedHeight": [MockFunction],
+ "getComputedCellStyles": [MockFunction],
"getFont": [MockFunction],
"getRowHeight": [MockFunction],
"getStylesForCell": [MockFunction],
@@ -61,6 +62,7 @@ exports[`EuiDataGridCell renders 1`] = `
"compareHeights": [MockFunction],
"computeStylesForGridCell": [MockFunction],
"getCalculatedHeight": [MockFunction],
+ "getComputedCellStyles": [MockFunction],
"getFont": [MockFunction],
"getRowHeight": [MockFunction],
"getStylesForCell": [MockFunction],
From dbe8cf69f9ae569b786a776e9548bfddbddc2944 Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Mon, 20 Sep 2021 17:40:47 +0100
Subject: [PATCH 56/57] Updating example to make density work
---
.../src/views/datagrid/datagrid_styling_example.js | 4 +++-
src-docs/src/views/datagrid/row_height_auto.tsx | 13 ++++++-------
src-docs/src/views/datagrid/row_height_fixed.tsx | 13 ++++++-------
3 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_styling_example.js b/src-docs/src/views/datagrid/datagrid_styling_example.js
index 7020a0dff89..71619929a2c 100644
--- a/src-docs/src/views/datagrid/datagrid_styling_example.js
+++ b/src-docs/src/views/datagrid/datagrid_styling_example.js
@@ -170,7 +170,9 @@ export const DataGridStylingExample = {
With the default settings, the showStyleSelector {' '}
setting in toolbarVisibility means the user has
the ability to override the padding and font size passed into{' '}
- gridStyle by the engineer.
+ gridStyle by the engineer. The font size
+ overriding only works when using units relative to the parent
+ container, like an em .
{gridSnippet}
diff --git a/src-docs/src/views/datagrid/row_height_auto.tsx b/src-docs/src/views/datagrid/row_height_auto.tsx
index dba50acba2d..5771102da0d 100644
--- a/src-docs/src/views/datagrid/row_height_auto.tsx
+++ b/src-docs/src/views/datagrid/row_height_auto.tsx
@@ -20,7 +20,6 @@ import { EuiAvatar } from '../../../../src/components/avatar';
import { EuiBadge } from '../../../../src/components/badge';
import { EuiMarkdownFormat } from '../../../../src/components/markdown_editor';
import { EuiText } from '../../../../src/components/text';
-import { EuiTitle } from '../../../../src/components/title';
import { EuiSpacer } from '../../../../src/components/spacer';
interface DataShape {
@@ -88,8 +87,8 @@ const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
} else if (columnId === 'issue') {
content = (
<>
-
-
+
+
{item.title}
@@ -99,12 +98,12 @@ const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
{name}
))}
-
-
+
+
-
+
Opened by{' '}
+
{(item.body ?? '').slice(0, 300)}
);
diff --git a/src-docs/src/views/datagrid/row_height_fixed.tsx b/src-docs/src/views/datagrid/row_height_fixed.tsx
index 65841c4032c..d2f0f330cae 100644
--- a/src-docs/src/views/datagrid/row_height_fixed.tsx
+++ b/src-docs/src/views/datagrid/row_height_fixed.tsx
@@ -20,7 +20,6 @@ import { EuiAvatar } from '../../../../src/components/avatar';
import { EuiBadge } from '../../../../src/components/badge';
import { EuiMarkdownFormat } from '../../../../src/components/markdown_editor';
import { EuiText } from '../../../../src/components/text';
-import { EuiTitle } from '../../../../src/components/title';
import { EuiSpacer } from '../../../../src/components/spacer';
interface DataShape {
@@ -88,8 +87,8 @@ const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
} else if (columnId === 'issue') {
content = (
<>
-
-
+
+
{item.title}
@@ -99,12 +98,12 @@ const RenderCellValue: EuiDataGridProps['renderCellValue'] = ({
{name}
))}
-
-
+
+
-
+
Opened by{' '}
+
{(item.body ?? '').slice(0, 300)}
);
From a82612d8ccdee94dd1d3c58077c1eabc96037579 Mon Sep 17 00:00:00 2001
From: miukimiu
Date: Mon, 20 Sep 2021 18:59:14 +0100
Subject: [PATCH 57/57] Better `gridStyle` font size explanation
---
src-docs/src/views/datagrid/datagrid_styling_example.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src-docs/src/views/datagrid/datagrid_styling_example.js b/src-docs/src/views/datagrid/datagrid_styling_example.js
index 71619929a2c..73e8bed5bb3 100644
--- a/src-docs/src/views/datagrid/datagrid_styling_example.js
+++ b/src-docs/src/views/datagrid/datagrid_styling_example.js
@@ -171,8 +171,9 @@ export const DataGridStylingExample = {
setting in toolbarVisibility means the user has
the ability to override the padding and font size passed into{' '}
gridStyle by the engineer. The font size
- overriding only works when using units relative to the parent
- container, like an em .
+ overriding only works with text or elements that can inherit the
+ parent font size or elements that use units relative to the parent
+ container.
{gridSnippet}