Skip to content

Commit a74c098

Browse files
committed
refactor: use EuiFormControlButton in discover change_dataview to ensure aligned form styling
1 parent 042574d commit a74c098

2 files changed

Lines changed: 42 additions & 59 deletions

File tree

src/platform/plugins/shared/unified_search/public/dataview_picker/change_dataview.styles.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@ export const changeDataViewStyles = ({
2727
return {
2828
trigger: {
2929
maxWidth: fullWidth ? undefined : DEFAULT_WIDTH,
30-
backgroundColor: theme.colors.backgroundBasePlain,
31-
border: `${theme.border.width.thin} solid ${theme.colors.borderBasePlain}`,
32-
borderTopLeftRadius: 0,
33-
borderBottomLeftRadius: 0,
3430
},
3531
popoverContent: {
3632
width: calculateWidthFromEntries(dataViewsList, ['name', 'id'], {

src/platform/plugins/shared/unified_search/public/dataview_picker/change_dataview.tsx

Lines changed: 42 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import {
1717
EuiContextMenuPanel,
1818
EuiFlexGroup,
1919
EuiFlexItem,
20+
EuiFormControlButton,
21+
EuiFormControlLayout,
2022
EuiHorizontalRule,
2123
EuiIcon,
2224
EuiPopover,
@@ -120,31 +122,30 @@ export function ChangeDataView({
120122
const createTrigger = function () {
121123
const { label, title, 'data-test-subj': dataTestSubj, fullWidth, ...rest } = trigger;
122124
return (
123-
<EuiButtonEmpty
125+
<EuiFormControlButton
126+
compressed
124127
css={styles.trigger}
128+
isInvalid={isMissingCurrent}
129+
title={trigger.label}
130+
disabled={isDisabled}
125131
data-test-subj={dataTestSubj}
126132
onClick={() => {
127133
setPopoverIsOpen(!isPopoverOpen);
128134
}}
129-
color={isMissingCurrent ? 'danger' : 'text'}
130-
iconSide="right"
131-
iconType="arrowDown"
132-
title={trigger.label}
133-
disabled={isDisabled}
134-
textProps={{ className: 'eui-textTruncate' }}
135-
size="s"
136135
{...rest}
137136
>
138-
<EuiFlexGroup alignItems="center" gutterSize="s" responsive={false}>
137+
<EuiFlexGroup
138+
component="span"
139+
alignItems="center"
140+
gutterSize="s"
141+
responsive={false}
142+
css={{ maxWidth: '100%' }}
143+
>
139144
{/* we don't want to display the adHoc icon on text based mode */}
140-
{isAdHocSelected && (
141-
<EuiFlexItem grow={false}>
142-
<EuiIcon type={adhoc} color="primary" size="s" />
143-
</EuiFlexItem>
144-
)}
145-
<EuiFlexItem grow={false}>{trigger.label}</EuiFlexItem>
145+
{isAdHocSelected && <EuiIcon type={adhoc} color="primary" size="s" />}
146+
<span className="eui-textTruncate">{trigger.label}</span>
146147
</EuiFlexGroup>
147-
</EuiButtonEmpty>
148+
</EuiFormControlButton>
148149
);
149150
};
150151
const onDuplicate = useCallback(async () => {
@@ -321,46 +322,32 @@ export function ChangeDataView({
321322
<EuiFlexGroup alignItems="center" gutterSize="s" responsive={false}>
322323
<>
323324
<EuiFlexItem grow={true} css={shrinkableContainerCss}>
324-
<EuiFlexGroup alignItems="center" gutterSize="none" responsive={false}>
325-
<EuiFlexItem
326-
grow={false}
327-
css={css`
328-
padding: 0 ${euiTheme.size.s};
329-
height: 100%;
330-
border-radius: ${euiTheme.border.radius.small} 0 0 ${euiTheme.border.radius.small};
331-
background-color: ${euiTheme.colors.lightestShade};
332-
border: ${euiTheme.border.width.thin} solid ${euiTheme.colors.borderBasePlain};
333-
border-right: 0;
334-
justify-content: center;
335-
`}
325+
<EuiFormControlLayout
326+
compressed
327+
isDropdown
328+
prepend={i18n.translate('unifiedSearch.query.queryBar.esqlMenu.switcherLabelTitle', {
329+
defaultMessage: 'Data view',
330+
})}
331+
>
332+
<EuiPopover
333+
panelClassName="changeDataViewPopover"
334+
button={createTrigger()}
335+
panelProps={{
336+
['data-test-subj']: 'changeDataViewPopover',
337+
}}
338+
isOpen={isPopoverOpen}
339+
closePopover={() => setPopoverIsOpen(false)}
340+
panelPaddingSize="none"
341+
initialFocus={`[id="${searchListInputId}"]`}
342+
display="block"
343+
buffer={8}
344+
css={{ inlineSize: '100%' }}
336345
>
337-
<EuiText size="s">
338-
{i18n.translate('unifiedSearch.query.queryBar.esqlMenu.switcherLabelTitle', {
339-
defaultMessage: 'Data view',
340-
})}
341-
</EuiText>
342-
</EuiFlexItem>
343-
<EuiFlexItem grow={true} css={shrinkableContainerCss}>
344-
<EuiPopover
345-
panelClassName="changeDataViewPopover"
346-
button={createTrigger()}
347-
panelProps={{
348-
['data-test-subj']: 'changeDataViewPopover',
349-
}}
350-
isOpen={isPopoverOpen}
351-
closePopover={() => setPopoverIsOpen(false)}
352-
panelPaddingSize="none"
353-
initialFocus={`[id="${searchListInputId}"]`}
354-
display="block"
355-
buffer={8}
356-
css={{ inlineSize: '100%' }}
357-
>
358-
<div css={styles.popoverContent}>
359-
<EuiContextMenuPanel size="s" items={items} />
360-
</div>
361-
</EuiPopover>
362-
</EuiFlexItem>
363-
</EuiFlexGroup>
346+
<div css={styles.popoverContent}>
347+
<EuiContextMenuPanel size="s" items={items} />
348+
</div>
349+
</EuiPopover>
350+
</EuiFormControlLayout>
364351
</EuiFlexItem>
365352
</>
366353
</EuiFlexGroup>

0 commit comments

Comments
 (0)