mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* Component that can cache and extract variable dependencies * Component that can cache and extract variable dependencies * Updates * Refactoring * Lots of refactoring and iterations of supporting both re-rendering and query re-execution * Updated SceneCanvasText * Updated name of file * Updated * Refactoring a bit * Added back getName * Added comment * minor fix * Minor fix * Merge fixes * Scene variable interpolation progress * Merge fixes * Added all format registeries * Progress on multi value support * Progress on multi value support * Updates * Progress on scoped vars * Fixed circular dependency * Updates * Some review fixes * Updated comment * Added forceRender function * Add back fail on console log * Update public/app/features/scenes/variables/interpolation/sceneInterpolator.test.ts * Moving functions from SceneObjectBase * fixing tests * Fixed e2e Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { isArray } from 'lodash';
|
|
import React from 'react';
|
|
|
|
import { Select, MultiSelect } from '@grafana/ui';
|
|
|
|
import { SceneComponentProps } from '../../core/types';
|
|
import { MultiValueVariable } from '../variants/MultiValueVariable';
|
|
|
|
export function VariableValueSelect({ model }: SceneComponentProps<MultiValueVariable>) {
|
|
const { value, key, loading, isMulti, options } = model.useState();
|
|
|
|
if (isMulti) {
|
|
return (
|
|
<MultiSelect
|
|
id={key}
|
|
placeholder="Select value"
|
|
width="auto"
|
|
value={isArray(value) ? value : [value]}
|
|
allowCustomValue
|
|
isLoading={loading}
|
|
options={options}
|
|
closeMenuOnSelect={false}
|
|
onChange={(newValue) => {
|
|
model.changeValueTo(
|
|
newValue.map((v) => v.value!),
|
|
newValue.map((v) => v.label!)
|
|
);
|
|
}}
|
|
/>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<Select
|
|
id={key}
|
|
placeholder="Select value"
|
|
width="auto"
|
|
value={value}
|
|
allowCustomValue
|
|
isLoading={loading}
|
|
options={options}
|
|
onChange={(newValue) => {
|
|
model.changeValueTo(newValue.value!, newValue.label!);
|
|
}}
|
|
/>
|
|
);
|
|
}
|