Files
Ashley Harrison d1e52d4788 Chore: type fixes (#77618)
* type fixes

* couple more

* just a couple more

* small fixes to prometheus typings

* improve some more datasource types
2023-11-06 11:28:44 +00:00

34 lines
814 B
TypeScript

import { SelectableValue } from '@grafana/data';
export interface SelectionInfo<T> {
options: Array<SelectableValue<T>>;
current?: SelectableValue<T>;
}
/**
* The select component is really annoying -- if the current value is not in the list of options
* it won't show up. This is a wrapper to make that happen.
*/
export function getSelectionInfo<T>(v?: T, options?: Array<SelectableValue<T>>): SelectionInfo<T> {
if (v && !options) {
const current = { label: `${v}`, value: v };
return { options: [current], current };
}
if (!options) {
options = [];
}
let current = options.find((item) => item.value === v);
if (v && !current) {
current = {
label: `${v} (not found)`,
value: v,
};
options.push(current);
}
return {
options,
current,
};
}