Skip to content

Commit 054b801

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 65967cd + 81f4dc9 commit 054b801

File tree

8 files changed

+95
-14
lines changed

8 files changed

+95
-14
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
2+
3+
[Home](./index.md) &gt; [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) &gt; [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) &gt; [disableLanguageSwitcher](./kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md)
4+
5+
## QueryStringInputProps.disableLanguageSwitcher property
6+
7+
<b>Signature:</b>
8+
9+
```typescript
10+
disableLanguageSwitcher?: boolean;
11+
```
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
2+
3+
[Home](./index.md) &gt; [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) &gt; [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) &gt; [iconType](./kibana-plugin-plugins-data-public.querystringinputprops.icontype.md)
4+
5+
## QueryStringInputProps.iconType property
6+
7+
<b>Signature:</b>
8+
9+
```typescript
10+
iconType?: string;
11+
```

docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export interface QueryStringInputProps
1818
| [className](./kibana-plugin-plugins-data-public.querystringinputprops.classname.md) | <code>string</code> | |
1919
| [dataTestSubj](./kibana-plugin-plugins-data-public.querystringinputprops.datatestsubj.md) | <code>string</code> | |
2020
| [disableAutoFocus](./kibana-plugin-plugins-data-public.querystringinputprops.disableautofocus.md) | <code>boolean</code> | |
21+
| [disableLanguageSwitcher](./kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md) | <code>boolean</code> | |
22+
| [iconType](./kibana-plugin-plugins-data-public.querystringinputprops.icontype.md) | <code>string</code> | |
2123
| [indexPatterns](./kibana-plugin-plugins-data-public.querystringinputprops.indexpatterns.md) | <code>Array&lt;IIndexPattern &#124; string&gt;</code> | |
2224
| [isInvalid](./kibana-plugin-plugins-data-public.querystringinputprops.isinvalid.md) | <code>boolean</code> | |
2325
| [languageSwitcherPopoverAnchorPosition](./kibana-plugin-plugins-data-public.querystringinputprops.languageswitcherpopoveranchorposition.md) | <code>PopoverAnchorPosition</code> | |

src/plugins/data/public/public.api.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1798,6 +1798,10 @@ export interface QueryStringInputProps {
17981798
// (undocumented)
17991799
disableAutoFocus?: boolean;
18001800
// (undocumented)
1801+
disableLanguageSwitcher?: boolean;
1802+
// (undocumented)
1803+
iconType?: string;
1804+
// (undocumented)
18011805
indexPatterns: Array<IIndexPattern | string>;
18021806
// (undocumented)
18031807
isInvalid?: boolean;

src/plugins/data/public/ui/query_string_input/_query_bar.scss

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@
1919
z-index: $euiZContentMenu;
2020
resize: none !important; // When in the group, it will autosize
2121
height: $euiFormControlHeight;
22-
// Unlike most inputs within layout control groups, the text area still needs a border.
23-
// These adjusts help it sit above the control groups shadow to line up correctly.
22+
// Unlike most inputs within layout control groups, the text area still needs a border
23+
// for multi-line content. These adjusts help it sit above the control groups
24+
// shadow to line up correctly.
2425
padding: $euiSizeS;
2526
padding-top: $euiSizeS + 3px;
26-
transform: translateY(-1px) translateX(-1px);
27+
box-shadow: 0 0 0 1px $euiFormBorderColor;
2728

2829
&:not(:focus):not(:invalid) {
2930
@include euiYScrollWithShadows;
@@ -40,6 +41,17 @@
4041
overflow-x: auto;
4142
overflow-y: auto;
4243
white-space: normal;
44+
box-shadow: 0 0 0 1px $euiFormBorderColor;
45+
}
46+
47+
@include euiFormControlWithIcon($isIconOptional: true);
48+
~ .euiFormControlLayoutIcons {
49+
// By default form control layout icon is vertically centered, but our textarea
50+
// can expand to be multi-line, so we position it with padding that matches
51+
// the parent textarea padding
52+
z-index: $euiZContentMenu + 1;
53+
top: $euiSizeS + 3px;
54+
bottom: unset;
4355
}
4456
}
4557

src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { mount } from 'enzyme';
2929
import { waitFor } from '@testing-library/dom';
3030
import { render } from '@testing-library/react';
3131

32-
import { EuiTextArea } from '@elastic/eui';
32+
import { EuiTextArea, EuiIcon } from '@elastic/eui';
3333

3434
import { QueryLanguageSwitcher } from './language_switcher';
3535
import { QueryStringInput } from './';
@@ -172,6 +172,30 @@ describe('QueryStringInput', () => {
172172
expect(mockCallback).toHaveBeenCalledWith({ query: '', language: 'lucene' });
173173
});
174174

175+
it('Should not show the language switcher when disabled', () => {
176+
const component = mount(
177+
wrapQueryStringInputInContext({
178+
query: luceneQuery,
179+
onSubmit: noop,
180+
indexPatterns: [stubIndexPatternWithFields],
181+
disableLanguageSwitcher: true,
182+
})
183+
);
184+
expect(component.find(QueryLanguageSwitcher).exists()).toBeFalsy();
185+
});
186+
187+
it('Should show an icon when an iconType is specified', () => {
188+
const component = mount(
189+
wrapQueryStringInputInContext({
190+
query: luceneQuery,
191+
onSubmit: noop,
192+
indexPatterns: [stubIndexPatternWithFields],
193+
iconType: 'search',
194+
})
195+
);
196+
expect(component.find(EuiIcon).exists()).toBeTruthy();
197+
});
198+
175199
it('Should call onSubmit when the user hits enter inside the query bar', () => {
176200
const mockCallback = jest.fn();
177201

src/plugins/data/public/ui/query_string_input/query_string_input.tsx

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
EuiLink,
3232
htmlIdGenerator,
3333
EuiPortal,
34+
EuiIcon,
3435
} from '@elastic/eui';
3536

3637
import { FormattedMessage } from '@kbn/i18n/react';
@@ -55,6 +56,7 @@ export interface QueryStringInputProps {
5556
persistedLog?: PersistedLog;
5657
bubbleSubmitEvent?: boolean;
5758
placeholder?: string;
59+
disableLanguageSwitcher?: boolean;
5860
languageSwitcherPopoverAnchorPosition?: PopoverAnchorPosition;
5961
onBlur?: () => void;
6062
onChange?: (query: Query) => void;
@@ -64,6 +66,7 @@ export interface QueryStringInputProps {
6466
size?: SuggestionsListSize;
6567
className?: string;
6668
isInvalid?: boolean;
69+
iconType?: string;
6770
}
6871

6972
interface Props extends QueryStringInputProps {
@@ -608,13 +611,17 @@ export default class QueryStringInputUI extends Component<Props, State> {
608611
'aria-owns': 'kbnTypeahead__items',
609612
};
610613
const ariaCombobox = { ...isSuggestionsVisible, role: 'combobox' };
611-
const className = classNames(
614+
const containerClassName = classNames(
612615
'euiFormControlLayout euiFormControlLayout--group kbnQueryBar__wrap',
613616
this.props.className
614617
);
618+
const inputClassName = classNames(
619+
'kbnQueryBar__textarea',
620+
this.props.iconType ? 'kbnQueryBar__textarea--withIcon' : null
621+
);
615622

616623
return (
617-
<div className={className}>
624+
<div className={containerClassName}>
618625
{this.props.prepend}
619626
<EuiOutsideClickDetector onOutsideClick={this.onOutsideClick}>
620627
<div
@@ -647,7 +654,7 @@ export default class QueryStringInputUI extends Component<Props, State> {
647654
onClick={this.onClickInput}
648655
onBlur={this.onInputBlur}
649656
onFocus={this.handleOnFocus}
650-
className="kbnQueryBar__textarea"
657+
className={inputClassName}
651658
fullWidth
652659
rows={1}
653660
id={this.textareaId}
@@ -678,6 +685,15 @@ export default class QueryStringInputUI extends Component<Props, State> {
678685
>
679686
{this.getQueryString()}
680687
</EuiTextArea>
688+
{this.props.iconType ? (
689+
<div className="euiFormControlLayoutIcons">
690+
<EuiIcon
691+
className="euiFormControlLayoutCustomIcon__icon"
692+
aria-hidden="true"
693+
type="search"
694+
/>
695+
</div>
696+
) : null}
681697
</div>
682698
<EuiPortal>
683699
<SuggestionsComponent
@@ -693,12 +709,13 @@ export default class QueryStringInputUI extends Component<Props, State> {
693709
</EuiPortal>
694710
</div>
695711
</EuiOutsideClickDetector>
696-
697-
<QueryLanguageSwitcher
698-
language={this.props.query.language}
699-
anchorPosition={this.props.languageSwitcherPopoverAnchorPosition}
700-
onSelectLanguage={this.onSelectLanguage}
701-
/>
712+
{this.props.disableLanguageSwitcher ? null : (
713+
<QueryLanguageSwitcher
714+
language={this.props.query.language}
715+
anchorPosition={this.props.languageSwitcherPopoverAnchorPosition}
716+
onSelectLanguage={this.onSelectLanguage}
717+
/>
718+
)}
702719
</div>
703720
);
704721
}

src/plugins/data/public/ui/typeahead/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ export const SUGGESTIONS_LIST_REQUIRED_BOTTOM_SPACE = 250;
3333
* A distance in px to display suggestions list right under the query input without a gap
3434
* @public
3535
*/
36-
export const SUGGESTIONS_LIST_REQUIRED_TOP_OFFSET = 1;
36+
export const SUGGESTIONS_LIST_REQUIRED_TOP_OFFSET = 0;

0 commit comments

Comments
 (0)