Field Selector: Show scroll and add "suggested" section for fields (#113178)

* Show scrollbar

* ActiveFields: move suggested fields to another section

* Translations

* Update tests
This commit is contained in:
Matias Chomicki
2025-10-31 12:18:10 +01:00
committed by GitHub
parent 452fc04d1d
commit 52d758dc93
3 changed files with 27 additions and 9 deletions
@@ -44,12 +44,16 @@ export const ActiveFields = ({ activeFields, clear, fields, reorder, suggestedFi
(name) => fields.find((field) => field.name === name) ?? suggestedFields.find((field) => field.name === name) (name) => fields.find((field) => field.name === name) ?? suggestedFields.find((field) => field.name === name)
) )
.filter((field) => field !== undefined), .filter((field) => field !== undefined),
...suggestedFields.filter((suggestedField) => !activeFields.includes(suggestedField.name)),
], ],
[activeFields, fields, suggestedFields] [activeFields, fields, suggestedFields]
); );
if (active.length) { const suggested = useMemo(
() => suggestedFields.filter((suggestedField) => !activeFields.includes(suggestedField.name)),
[activeFields, suggestedFields]
);
if (active.length || suggested.length) {
return ( return (
<> <>
<div className={styles.columnHeader}> <div className={styles.columnHeader}>
@@ -96,6 +100,20 @@ export const ActiveFields = ({ activeFields, clear, fields, reorder, suggestedFi
)} )}
</Droppable> </Droppable>
</DragDropContext> </DragDropContext>
{suggested.length > 0 && (
<>
<div className={styles.columnSubHeader}>
<Trans i18nKey="explore.logs-table-multi-select.suggested-fields">Suggested</Trans>
</div>
<div className={styles.columnWrapper}>
{suggested.map((field) => (
<div className={styles.wrap} key={field.name}>
<Field field={field} toggle={toggle} />
</div>
))}
</div>
</>
)}
</> </>
); );
} }
@@ -129,6 +147,10 @@ export function getLogsFieldsStyles(theme: GrafanaTheme2) {
zIndex: 3, zIndex: 3,
marginBottom: theme.spacing(2), marginBottom: theme.spacing(2),
}), }),
columnSubHeader: css({
padding: theme.spacing(0, 0, 0.75, 0.5),
color: theme.colors.text.secondary,
}),
columnHeaderButton: css({ columnHeaderButton: css({
appearance: 'none', appearance: 'none',
background: 'none', background: 'none',
@@ -48,12 +48,7 @@ function getStyles(theme: GrafanaTheme2) {
sidebarWrap: css({ sidebarWrap: css({
overflowY: 'scroll', overflowY: 'scroll',
flex: 1, flex: 1,
/* Hide scrollbar for Chrome, Safari, and Opera */ scrollbarWidth: 'thin',
'&::-webkit-scrollbar': {
display: 'none',
},
/* Hide scrollbar for Firefox */
scrollbarWidth: 'none',
}), }),
columnHeader: css({ columnHeader: css({
display: 'flex', display: 'flex',
+2 -1
View File
@@ -7189,7 +7189,8 @@
"logs-table-multi-select": { "logs-table-multi-select": {
"fields": "Fields", "fields": "Fields",
"reset": "Reset", "reset": "Reset",
"selected-fields": "Selected fields" "selected-fields": "Selected fields",
"suggested-fields": "Suggested"
}, },
"logs-table-wrap": { "logs-table-wrap": {
"aria-label-select-query-by-name": "Select query by name", "aria-label-select-query-by-name": "Select query by name",