Select: Add data-testid to Input (#87105)
* Select: Add custom input component * Forward data-testid * Add input selector * Props check
This commit is contained in:
@@ -72,9 +72,9 @@ describe('Loki query builder', () => {
|
|||||||
// Add labels to remove error
|
// Add labels to remove error
|
||||||
e2e.components.QueryBuilder.labelSelect().should('be.visible').click();
|
e2e.components.QueryBuilder.labelSelect().should('be.visible').click();
|
||||||
// wait until labels are loaded and set on the component before starting to type
|
// wait until labels are loaded and set on the component before starting to type
|
||||||
e2e.components.QueryBuilder.labelSelect().children('div').children('input').type('i');
|
e2e.components.QueryBuilder.inputSelect().type('i');
|
||||||
cy.wait('@labelsRequest');
|
cy.wait('@labelsRequest');
|
||||||
e2e.components.QueryBuilder.labelSelect().children('div').children('input').type('nstance{enter}');
|
e2e.components.QueryBuilder.inputSelect().type('nstance{enter}');
|
||||||
e2e.components.QueryBuilder.matchOperatorSelect()
|
e2e.components.QueryBuilder.matchOperatorSelect()
|
||||||
.should('be.visible')
|
.should('be.visible')
|
||||||
.click({ force: true })
|
.click({ force: true })
|
||||||
|
|||||||
@@ -452,6 +452,7 @@ export const Components = {
|
|||||||
QueryBuilder: {
|
QueryBuilder: {
|
||||||
queryPatterns: 'data-testid Query patterns',
|
queryPatterns: 'data-testid Query patterns',
|
||||||
labelSelect: 'data-testid Select label',
|
labelSelect: 'data-testid Select label',
|
||||||
|
inputSelect: 'data-testid Select label-input',
|
||||||
valueSelect: 'data-testid Select value',
|
valueSelect: 'data-testid Select value',
|
||||||
matchOperatorSelect: 'data-testid Select match operator',
|
matchOperatorSelect: 'data-testid Select match operator',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { components, InputProps } from 'react-select';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom input component for react-select to add data-testid attribute
|
||||||
|
*/
|
||||||
|
export const CustomInput = (props: InputProps) => {
|
||||||
|
let testId;
|
||||||
|
|
||||||
|
if ('data-testid' in props.selectProps && props.selectProps['data-testid']) {
|
||||||
|
testId = props.selectProps['data-testid'] + '-input';
|
||||||
|
}
|
||||||
|
|
||||||
|
return <components.Input {...props} data-testid={testId} />;
|
||||||
|
};
|
||||||
@@ -11,6 +11,7 @@ import { useTheme2 } from '../../themes';
|
|||||||
import { Icon } from '../Icon/Icon';
|
import { Icon } from '../Icon/Icon';
|
||||||
import { Spinner } from '../Spinner/Spinner';
|
import { Spinner } from '../Spinner/Spinner';
|
||||||
|
|
||||||
|
import { CustomInput } from './CustomInput';
|
||||||
import { DropdownIndicator } from './DropdownIndicator';
|
import { DropdownIndicator } from './DropdownIndicator';
|
||||||
import { IndicatorsContainer } from './IndicatorsContainer';
|
import { IndicatorsContainer } from './IndicatorsContainer';
|
||||||
import { InputControl } from './InputControl';
|
import { InputControl } from './InputControl';
|
||||||
@@ -330,6 +331,7 @@ export function SelectBase<T, Rest = {}>({
|
|||||||
SelectContainer,
|
SelectContainer,
|
||||||
MultiValueContainer: MultiValueContainer,
|
MultiValueContainer: MultiValueContainer,
|
||||||
MultiValueRemove: !disabled ? MultiValueRemove : () => null,
|
MultiValueRemove: !disabled ? MultiValueRemove : () => null,
|
||||||
|
Input: CustomInput,
|
||||||
...components,
|
...components,
|
||||||
}}
|
}}
|
||||||
styles={selectStyles}
|
styles={selectStyles}
|
||||||
|
|||||||
Reference in New Issue
Block a user