@grafana/scenes 6.50.0--canary.1312.20242044820.0 → 6.50.0--canary.1316.20252812955.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/esm/packages/scenes/src/index.js +1 -1
  2. package/dist/esm/packages/scenes/src/index.js.map +1 -1
  3. package/dist/esm/packages/scenes/src/locales/en-US/grafana-scenes.json.js +6 -7
  4. package/dist/esm/packages/scenes/src/locales/en-US/grafana-scenes.json.js.map +1 -1
  5. package/dist/esm/packages/scenes/src/variables/DrilldownDependenciesManager.js.map +1 -1
  6. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +2 -2
  7. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  8. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +3 -1
  9. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  10. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +110 -23
  11. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  12. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/utils.js +3 -0
  13. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  14. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariable.js +16 -28
  15. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  16. package/dist/esm/packages/scenes/src/variables/adhoc/controller/AdHocFiltersVariableController.js +4 -5
  17. package/dist/esm/packages/scenes/src/variables/adhoc/controller/AdHocFiltersVariableController.js.map +1 -1
  18. package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariable.js +8 -61
  19. package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariable.js.map +1 -1
  20. package/dist/{grafana-scenes-C9F_2hih.js → grafana-scenes-CwGWCTcQ.js} +7 -8
  21. package/dist/{grafana-scenes-C9F_2hih.js.map → grafana-scenes-CwGWCTcQ.js.map} +1 -1
  22. package/dist/index.d.ts +18 -127
  23. package/dist/index.js +4740 -5139
  24. package/dist/index.js.map +1 -1
  25. package/package.json +2 -2
  26. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersRecommendations.js +0 -174
  27. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersRecommendations.js.map +0 -1
  28. package/dist/esm/packages/scenes/src/variables/components/DrilldownRecommendations.js +0 -102
  29. package/dist/esm/packages/scenes/src/variables/components/DrilldownRecommendations.js.map +0 -1
  30. package/dist/esm/packages/scenes/src/variables/groupby/GroupByRecommendations.js +0 -192
  31. package/dist/esm/packages/scenes/src/variables/groupby/GroupByRecommendations.js.map +0 -1
@@ -4,11 +4,11 @@ import { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid.js'
4
4
  import { sceneGraph } from '../../core/sceneGraph/index.js';
5
5
  import { SceneVariableValueChangedEvent } from '../types.js';
6
6
  import { MultiValueVariable } from '../variants/MultiValueVariable.js';
7
- import { map, of, from, mergeMap, tap, take, lastValueFrom } from 'rxjs';
7
+ import { lastValueFrom, map, of, from, mergeMap, tap, take } from 'rxjs';
8
8
  import { getDataSource } from '../../utils/getDataSource.js';
9
- import { useStyles2, MultiSelect, Select } from '@grafana/ui';
9
+ import { MultiSelect, Select } from '@grafana/ui';
10
10
  import { isArray, isEqual } from 'lodash';
11
- import { dataFromResponse, getQueriesForVariables, responseHasError, handleOptionGroups } from '../utils.js';
11
+ import { handleOptionGroups, dataFromResponse, getQueriesForVariables, responseHasError } from '../utils.js';
12
12
  import { OptionWithCheckbox } from '../components/VariableValueSelect.js';
13
13
  import { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler.js';
14
14
  import { getOptionSearcher } from '../components/getOptionSearcher.js';
@@ -18,11 +18,8 @@ import { DefaultGroupByCustomIndicatorContainer } from './DefaultGroupByCustomIn
18
18
  import { GroupByValueContainer } from './GroupByValueContainer.js';
19
19
  import { getInteractionTracker } from '../../core/sceneGraph/getInteractionTracker.js';
20
20
  import { GROUPBY_DIMENSIONS_INTERACTION } from '../../performance/interactionConstants.js';
21
- import { css, cx } from '@emotion/css';
22
- import { GroupByRecommendations } from './GroupByRecommendations.js';
23
21
  import { c as components } from '../../../../../node_modules/react-select/dist/index-641ee5b8.esm.js';
24
22
 
25
- const getRecentGroupingKey = (datasourceUid) => `grafana.grouping.recent.${datasourceUid != null ? datasourceUid : "default"}`;
26
23
  class GroupByVariable extends MultiValueVariable {
27
24
  constructor(initialState) {
28
25
  super({
@@ -48,11 +45,6 @@ class GroupByVariable extends MultiValueVariable {
48
45
  this.setState({ restorable: true });
49
46
  }
50
47
  }
51
- if (this.state.drilldownRecommendationsEnabled && !this.state._valueRecommendations) {
52
- const valueRecommendations = new GroupByRecommendations(this);
53
- this.setState({ _valueRecommendations: valueRecommendations });
54
- valueRecommendations.activate();
55
- }
56
48
  return () => {
57
49
  if (this.state.defaultValue) {
58
50
  this.restoreDefaultValues();
@@ -168,7 +160,7 @@ class GroupByVariable extends MultiValueVariable {
168
160
  }
169
161
  getApplicableKeys() {
170
162
  const { value, keysApplicability } = this.state;
171
- const valueArray = isArray(value) ? value.map(String) : value ? [String(value)] : [];
163
+ const valueArray = isArray(value) ? value : value ? [value] : [];
172
164
  if (!keysApplicability || keysApplicability.length === 0) {
173
165
  return valueArray;
174
166
  }
@@ -227,17 +219,6 @@ class GroupByVariable extends MultiValueVariable {
227
219
  }
228
220
  this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, true);
229
221
  }
230
- async _verifyApplicabilityAndStoreRecentGrouping() {
231
- await this._verifyApplicability();
232
- if (!this.state.drilldownRecommendationsEnabled || !this.state._valueRecommendations) {
233
- return;
234
- }
235
- const applicableValues = this.getApplicableKeys();
236
- if (applicableValues.length === 0) {
237
- return;
238
- }
239
- this.state._valueRecommendations.storeRecentGrouping(applicableValues);
240
- }
241
222
  /**
242
223
  * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable
243
224
  */
@@ -258,11 +239,8 @@ function GroupByVariableRenderer({ model }) {
258
239
  includeAll,
259
240
  allowCustomValue = true,
260
241
  defaultValue,
261
- keysApplicability,
262
- _valueRecommendations,
263
- drilldownRecommendationsEnabled
242
+ keysApplicability
264
243
  } = model.useState();
265
- const styles = useStyles2(getStyles);
266
244
  const values = useMemo(() => {
267
245
  const arrayValue = isArray(value) ? value : [value];
268
246
  const arrayText = isArray(text) ? text : [text];
@@ -301,7 +279,7 @@ function GroupByVariableRenderer({ model }) {
301
279
  () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),
302
280
  [optionSearcher, inputValue]
303
281
  );
304
- const select = isMulti ? /* @__PURE__ */ React.createElement(
282
+ return isMulti ? /* @__PURE__ */ React.createElement(
305
283
  MultiSelect,
306
284
  {
307
285
  "aria-label": t(
@@ -315,7 +293,6 @@ function GroupByVariableRenderer({ model }) {
315
293
  "Group by label"
316
294
  ),
317
295
  width: "auto",
318
- className: cx(drilldownRecommendationsEnabled && styles.selectStylesInWrapper),
319
296
  allowCustomValue,
320
297
  inputValue,
321
298
  value: uncommittedValue,
@@ -349,7 +326,7 @@ function GroupByVariableRenderer({ model }) {
349
326
  if (restorable !== model.state.restorable) {
350
327
  model.setState({ restorable });
351
328
  }
352
- model._verifyApplicabilityAndStoreRecentGrouping();
329
+ model._verifyApplicability();
353
330
  },
354
331
  onChange: (newValue, action) => {
355
332
  if (action.action === "clear" && noValueOnClear) {
@@ -385,7 +362,6 @@ function GroupByVariableRenderer({ model }) {
385
362
  "Group by label"
386
363
  ),
387
364
  width: "auto",
388
- className: cx(drilldownRecommendationsEnabled && styles.selectStylesInWrapper),
389
365
  inputValue,
390
366
  value: uncommittedValue && uncommittedValue.length > 0 ? uncommittedValue : null,
391
367
  allowCustomValue,
@@ -430,10 +406,6 @@ function GroupByVariableRenderer({ model }) {
430
406
  }
431
407
  }
432
408
  );
433
- if (!drilldownRecommendationsEnabled || !_valueRecommendations) {
434
- return select;
435
- }
436
- return /* @__PURE__ */ React.createElement("div", { className: styles.wrapper }, /* @__PURE__ */ React.createElement("div", { className: styles.recommendations }, /* @__PURE__ */ React.createElement(_valueRecommendations.Component, { model: _valueRecommendations })), select);
437
409
  }
438
410
  const filterNoOp = () => true;
439
411
  function WideMenu(props) {
@@ -450,31 +422,6 @@ function toSelectableValue(input) {
450
422
  }
451
423
  return result;
452
424
  }
453
- const getStyles = (theme) => ({
454
- wrapper: css({
455
- display: "flex"
456
- }),
457
- selectStylesInWrapper: css({
458
- borderTopLeftRadius: 0,
459
- borderBottomLeftRadius: 0,
460
- border: `1px solid ${theme.colors.border.strong}`,
461
- borderLeft: "none"
462
- }),
463
- recommendations: css({
464
- display: "flex",
465
- alignItems: "center",
466
- paddingInline: theme.spacing(0.5),
467
- borderTop: `1px solid ${theme.colors.border.strong}`,
468
- borderBottom: `1px solid ${theme.colors.border.strong}`,
469
- backgroundColor: theme.components.input.background,
470
- "& button": {
471
- borderRadius: 0,
472
- height: "100%",
473
- margin: 0,
474
- paddingInline: theme.spacing(0.5)
475
- }
476
- })
477
- });
478
425
 
479
- export { GroupByVariable, GroupByVariableRenderer, getRecentGroupingKey };
426
+ export { GroupByVariable, GroupByVariableRenderer };
480
427
  //# sourceMappingURL=GroupByVariable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupByVariable.js","sources":["../../../../../../../src/variables/groupby/GroupByVariable.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n AdHocVariableFilter,\n DataSourceApi,\n // @ts-expect-error (temporary till we update grafana/data)\n DrilldownsApplicability,\n GetTagResponse,\n GrafanaTheme2,\n MetricFindValue,\n SelectableValue,\n} from '@grafana/data';\nimport { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid';\nimport { DataSourceRef, VariableType } from '@grafana/schema';\nimport { SceneComponentProps, ControlsLayout, SceneObjectUrlSyncHandler, SceneDataQuery } from '../../core/types';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport {\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n VariableValueOption,\n VariableValueSingle,\n} from '../types';\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from '../variants/MultiValueVariable';\nimport { from, lastValueFrom, map, mergeMap, Observable, of, take, tap } from 'rxjs';\nimport { getDataSource } from '../../utils/getDataSource';\nimport { InputActionMeta, MultiSelect, Select, useStyles2 } from '@grafana/ui';\nimport { components, GroupBase, MenuProps } from 'react-select';\nimport { isArray, isEqual } from 'lodash';\nimport { dataFromResponse, getQueriesForVariables, handleOptionGroups, responseHasError } from '../utils';\nimport { OptionWithCheckbox } from '../components/VariableValueSelect';\nimport { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler';\nimport { getOptionSearcher } from '../components/getOptionSearcher';\nimport { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject';\nimport { DefaultGroupByCustomIndicatorContainer } from './DefaultGroupByCustomIndicatorContainer';\nimport { GroupByValueContainer, GroupByContainerProps } from './GroupByValueContainer';\nimport { getInteractionTracker } from '../../core/sceneGraph/getInteractionTracker';\nimport { GROUPBY_DIMENSIONS_INTERACTION } from '../../performance/interactionConstants';\nimport { css, cx } from '@emotion/css';\nimport { GroupByRecommendations } from './GroupByRecommendations';\n\nexport const getRecentGroupingKey = (datasourceUid: string | undefined) =>\n `grafana.grouping.recent.${datasourceUid ?? 'default'}`;\n\nexport interface GroupByVariableState extends MultiValueVariableState {\n /** Defaults to \"Group\" */\n name: string;\n /** The visible keys to group on */\n // TODO review this type and name (naming is hard)\n defaultOptions?: MetricFindValue[];\n /** Base filters to always apply when looking up keys */\n baseFilters?: AdHocVariableFilter[];\n /** Datasource to use for getTagKeys and also controls which scene queries the group by should apply to */\n datasource: DataSourceRef | null;\n /** Default value set for this groupBy. When this field is set, changing value will allow the user to restore back to this default value */\n defaultValue?: { text: VariableValue; value: VariableValue };\n /** Needed for url sync when passing flag to another dashboard */\n restorable?: boolean;\n /** Controls if the group by can be changed */\n readOnly?: boolean;\n /**\n * @experimental\n * Controls the layout and design of the label.\n * Vertical layout does not yet support operator selector.\n */\n layout?: ControlsLayout;\n /**\n * Defaults to same-datasource which means group by will automatically be applied to all queries with the same data source as this GroupBySet.\n * In manual mode no queries are re-run on changes, and you have to manually apply the filter to whatever queries you want.\n */\n applyMode?: 'auto' | 'manual';\n /**\n * Filter out the keys that do not match the regex.\n */\n tagKeyRegexFilter?: RegExp;\n /**\n * Extension hook for customizing the key lookup.\n * Return replace: true if you want to override the default lookup\n * Return replace: false if you want to combine the results with the default lookup\n */\n getTagKeysProvider?: getTagKeysProvider;\n /**\n * Holds the applicability for each of the selected keys\n */\n keysApplicability?: DrilldownsApplicability[];\n /**\n * state for checking whether drilldown applicability is enabled\n */\n applicabilityEnabled?: boolean;\n\n /**\n * Value recommendations scene object - manages recent and recommended groupings\n * @internal\n */\n _valueRecommendations?: GroupByRecommendations;\n\n /**\n * enables drilldown recommendations\n */\n drilldownRecommendationsEnabled?: boolean;\n}\n\nexport type getTagKeysProvider = (\n set: GroupByVariable,\n currentKey: string | null\n) => Promise<{ replace?: boolean; values: MetricFindValue[] | GetTagResponse }>;\n\nexport class GroupByVariable extends MultiValueVariable<GroupByVariableState> {\n static Component = GroupByVariableRenderer;\n isLazy = true;\n\n protected _urlSync: SceneObjectUrlSyncHandler = new GroupByVariableUrlSyncHandler(this);\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n return this.getValueOptions({}).pipe(\n map((options) => {\n this._updateValueGivenNewOptions(options);\n return {};\n })\n );\n }\n\n private _updateValueGivenNewOptions(options: VariableValueOption[]) {\n const { value: currentValue, text: currentText } = this.state;\n\n const stateUpdate: Partial<MultiValueVariableState> = {\n options,\n loading: false,\n value: currentValue ?? [],\n text: currentText ?? [],\n };\n\n this.setState(stateUpdate);\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n // When default dimensions are provided, return the static list\n if (this.state.defaultOptions) {\n return of(\n this.state.defaultOptions.map((o) => ({\n label: o.text,\n value: String(o.value),\n group: o.group,\n }))\n );\n }\n\n this.setState({ loading: true, error: null });\n\n return from(\n getDataSource(this.state.datasource, {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n })\n ).pipe(\n mergeMap((ds) => {\n return from(this._getKeys(ds)).pipe(\n tap((response) => {\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n }),\n map((response) => dataFromResponse(response)),\n take(1),\n mergeMap((data) => {\n const a: VariableValueOption[] = data.map((i) => {\n return {\n label: i.text,\n value: i.value ? String(i.value) : i.text,\n group: i.group,\n };\n });\n return of(a);\n })\n );\n })\n );\n }\n\n public constructor(initialState: Partial<GroupByVariableState>) {\n super({\n isMulti: true,\n name: '',\n value: [],\n text: [],\n options: [],\n datasource: null,\n baseFilters: [],\n applyMode: 'auto',\n layout: 'horizontal',\n type: 'groupby' as VariableType,\n ...initialState,\n noValueOnClear: true,\n });\n\n if (this.state.defaultValue) {\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, false);\n }\n\n if (this.state.applyMode === 'auto') {\n this.addActivationHandler(() => {\n allActiveGroupByVariables.add(this);\n\n return () => allActiveGroupByVariables.delete(this);\n });\n }\n\n this.addActivationHandler(this._activationHandler);\n }\n\n private _activationHandler = () => {\n this._verifyApplicability();\n\n if (this.state.defaultValue) {\n if (this.checkIfRestorable(this.state.value)) {\n this.setState({ restorable: true });\n }\n }\n\n if (this.state.drilldownRecommendationsEnabled && !this.state._valueRecommendations) {\n const valueRecommendations = new GroupByRecommendations(this);\n this.setState({ _valueRecommendations: valueRecommendations });\n valueRecommendations.activate();\n }\n\n return () => {\n if (this.state.defaultValue) {\n this.restoreDefaultValues();\n }\n\n this.setState({ applicabilityEnabled: false });\n };\n };\n\n public getApplicableKeys(): string[] {\n const { value, keysApplicability } = this.state;\n\n const valueArray = isArray(value) ? value.map(String) : value ? [String(value)] : [];\n\n if (!keysApplicability || keysApplicability.length === 0) {\n return valueArray;\n }\n\n const applicableValues = valueArray.filter((val) => {\n const applicability = keysApplicability.find((item) => item.key === val);\n return !applicability || applicability.applicable !== false;\n });\n\n return applicableValues;\n }\n\n public async getGroupByApplicabilityForQueries(\n value: VariableValue,\n queries: SceneDataQuery[]\n ): Promise<DrilldownsApplicability[] | undefined> {\n const ds = await getDataSource(this.state.datasource, {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n });\n\n // @ts-expect-error (temporary till we update grafana/data)\n if (!ds.getDrilldownsApplicability) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n // @ts-expect-error (temporary till we update grafana/data)\n return await ds.getDrilldownsApplicability({\n groupByKeys: Array.isArray(value) ? value.map((v) => String(v)) : value ? [String(value)] : [],\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n }\n\n public async _verifyApplicability() {\n const queries = getQueriesForVariables(this);\n const value = this.state.value;\n\n const response = await this.getGroupByApplicabilityForQueries(value, queries);\n\n if (!response) {\n return;\n }\n\n if (!isEqual(response, this.state.keysApplicability)) {\n this.setState({ keysApplicability: response ?? undefined, applicabilityEnabled: true });\n\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n } else {\n this.setState({ applicabilityEnabled: true });\n }\n }\n\n // This method is related to the defaultValue property. We check if the current value\n // is different from the default value. If it is, the groupBy will show a button\n // allowing the user to restore the default values.\n public checkIfRestorable(values: VariableValue) {\n const originalValues = isArray(this.state.defaultValue?.value)\n ? this.state.defaultValue?.value\n : this.state.defaultValue?.value\n ? [this.state.defaultValue?.value]\n : [];\n const vals = isArray(values) ? values : [values];\n\n if (vals.length !== originalValues.length) {\n return true;\n }\n\n return !isEqual(vals, originalValues);\n }\n\n public restoreDefaultValues() {\n this.setState({ restorable: false });\n\n if (!this.state.defaultValue) {\n return;\n }\n\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, true);\n }\n\n /**\n * Get possible keys given current filters. Do not call from plugins directly\n */\n public _getKeys = async (ds: DataSourceApi) => {\n // TODO: provide current dimensions?\n const override = await this.state.getTagKeysProvider?.(this, null);\n\n if (override && override.replace) {\n return override.values;\n }\n\n if (this.state.defaultOptions) {\n return this.state.defaultOptions.concat(dataFromResponse(override?.values ?? []));\n }\n\n if (!ds.getTagKeys) {\n return [];\n }\n\n const queries = getQueriesForVariables(this);\n\n const otherFilters = this.state.baseFilters || [];\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const response = await ds.getTagKeys({\n filters: otherFilters,\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n\n let keys = dataFromResponse(response);\n if (override) {\n keys = keys.concat(dataFromResponse(override.values));\n }\n\n const tagKeyRegexFilter = this.state.tagKeyRegexFilter;\n if (tagKeyRegexFilter) {\n keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));\n }\n\n return keys;\n };\n\n public async _verifyApplicabilityAndStoreRecentGrouping() {\n await this._verifyApplicability();\n\n if (!this.state.drilldownRecommendationsEnabled || !this.state._valueRecommendations) {\n return;\n }\n\n const applicableValues = this.getApplicableKeys();\n if (applicableValues.length === 0) {\n return;\n }\n\n this.state._valueRecommendations.storeRecentGrouping(applicableValues);\n }\n\n /**\n * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable\n */\n public getDefaultMultiState(options: VariableValueOption[]) {\n return { value: [], text: [] };\n }\n}\n\nexport function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>) {\n const {\n value,\n text,\n key,\n isMulti = true,\n maxVisibleValues,\n noValueOnClear,\n options,\n includeAll,\n allowCustomValue = true,\n defaultValue,\n keysApplicability,\n _valueRecommendations,\n drilldownRecommendationsEnabled,\n } = model.useState();\n\n const styles = useStyles2(getStyles);\n\n const values = useMemo<Array<SelectableValue<VariableValueSingle>>>(() => {\n const arrayValue = isArray(value) ? value : [value];\n const arrayText = isArray(text) ? text : [text];\n\n return arrayValue.map((value, idx) => ({\n value,\n label: String(arrayText[idx] ?? value),\n }));\n }, [value, text]);\n\n const [isFetchingOptions, setIsFetchingOptions] = useState(false);\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n // To not trigger queries on every selection we store this state locally here and only update the variable onBlur\n const [uncommittedValue, setUncommittedValue] = useState(values);\n\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n const hasDefaultValue = defaultValue !== undefined;\n\n // Detect value changes outside\n useEffect(() => {\n setUncommittedValue(values);\n }, [values]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n if (action === 'input-blur') {\n setInputValue('');\n return '';\n }\n\n return inputValue;\n };\n\n const filteredOptions = useMemo(\n () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),\n [optionSearcher, inputValue]\n );\n\n const select = isMulti ? (\n <MultiSelect<VariableValueSingle>\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n className={cx(drilldownRecommendationsEnabled && styles.selectStylesInWrapper)}\n allowCustomValue={allowCustomValue}\n inputValue={inputValue}\n value={uncommittedValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={false}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n isLoading={isFetchingOptions}\n components={{\n Option: OptionWithCheckbox,\n Menu: WideMenu,\n ...(hasDefaultValue\n ? {\n IndicatorsContainer: () => <DefaultGroupByCustomIndicatorContainer model={model} />,\n }\n : {}),\n MultiValueContainer: ({ innerProps, children }: React.PropsWithChildren<GroupByContainerProps>) => (\n <GroupByValueContainer innerProps={innerProps} keysApplicability={keysApplicability}>\n {children}\n </GroupByValueContainer>\n ),\n }}\n onInputChange={onInputChange}\n onBlur={() => {\n model.changeValueTo(\n uncommittedValue.map((x) => x.value!),\n uncommittedValue.map((x) => x.label!),\n true\n );\n\n const restorable = model.checkIfRestorable(uncommittedValue.map((v) => v.value!));\n\n if (restorable !== model.state.restorable) {\n model.setState({ restorable: restorable });\n }\n\n model._verifyApplicabilityAndStoreRecentGrouping();\n }}\n onChange={(newValue, action) => {\n if (action.action === 'clear' && noValueOnClear) {\n model.changeValueTo([], undefined, true);\n }\n\n setUncommittedValue(newValue);\n setInputValue('');\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n ) : (\n <Select\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n className={cx(drilldownRecommendationsEnabled && styles.selectStylesInWrapper)}\n inputValue={inputValue}\n value={uncommittedValue && uncommittedValue.length > 0 ? uncommittedValue : null}\n allowCustomValue={allowCustomValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={true}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n noValueOnClear={true}\n isLoading={isFetchingOptions}\n components={{ Menu: WideMenu }}\n onInputChange={onInputChange}\n onChange={(newValue, action) => {\n if (action.action === 'clear') {\n setUncommittedValue([]);\n if (noValueOnClear) {\n model.changeValueTo([]);\n }\n return;\n }\n if (newValue?.value) {\n setUncommittedValue([newValue]);\n model.changeValueTo([newValue.value], newValue.label ? [newValue.label] : undefined);\n }\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n );\n\n if (!drilldownRecommendationsEnabled || !_valueRecommendations) {\n return select;\n }\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.recommendations}>\n <_valueRecommendations.Component model={_valueRecommendations} />\n </div>\n\n {select}\n </div>\n );\n}\n\nconst filterNoOp = () => true;\n\n// custom minWidth menu component to fit custom value message\nfunction WideMenu<Option, IsMulti extends boolean, Group extends GroupBase<Option>>(\n props: MenuProps<Option, IsMulti, Group>\n) {\n return (\n <components.Menu {...props}>\n <div style={{ minWidth: '220px' }}>{props.children}</div>\n </components.Menu>\n );\n}\n\nfunction toSelectableValue(input: VariableValueOption): SelectableValue<VariableValueSingle> {\n const { label, value, group } = input;\n const result: SelectableValue<VariableValueSingle> = {\n label,\n value,\n };\n\n if (group) {\n result.group = group;\n }\n\n return result;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n wrapper: css({\n display: 'flex',\n }),\n selectStylesInWrapper: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n border: `1px solid ${theme.colors.border.strong}`,\n borderLeft: 'none',\n }),\n recommendations: css({\n display: 'flex',\n alignItems: 'center',\n paddingInline: theme.spacing(0.5),\n borderTop: `1px solid ${theme.colors.border.strong}`,\n borderBottom: `1px solid ${theme.colors.border.strong}`,\n backgroundColor: theme.components.input.background,\n '& button': {\n borderRadius: 0,\n height: '100%',\n margin: 0,\n paddingInline: theme.spacing(0.5),\n },\n }),\n});\n"],"names":["value"],"mappings":"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"}
1
+ {"version":3,"file":"GroupByVariable.js","sources":["../../../../../../../src/variables/groupby/GroupByVariable.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n AdHocVariableFilter,\n DataSourceApi,\n // @ts-expect-error (temporary till we update grafana/data)\n DrilldownsApplicability,\n GetTagResponse,\n MetricFindValue,\n SelectableValue,\n} from '@grafana/data';\nimport { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid';\nimport { DataSourceRef, VariableType } from '@grafana/schema';\nimport { SceneComponentProps, ControlsLayout, SceneObjectUrlSyncHandler, SceneDataQuery } from '../../core/types';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport {\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n VariableValueOption,\n VariableValueSingle,\n} from '../types';\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from '../variants/MultiValueVariable';\nimport { from, lastValueFrom, map, mergeMap, Observable, of, take, tap } from 'rxjs';\nimport { getDataSource } from '../../utils/getDataSource';\nimport { InputActionMeta, MultiSelect, Select } from '@grafana/ui';\nimport { components, GroupBase, MenuProps } from 'react-select';\nimport { isArray, isEqual } from 'lodash';\nimport { dataFromResponse, getQueriesForVariables, handleOptionGroups, responseHasError } from '../utils';\nimport { OptionWithCheckbox } from '../components/VariableValueSelect';\nimport { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler';\nimport { getOptionSearcher } from '../components/getOptionSearcher';\nimport { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject';\nimport { DefaultGroupByCustomIndicatorContainer } from './DefaultGroupByCustomIndicatorContainer';\nimport { GroupByValueContainer, GroupByContainerProps } from './GroupByValueContainer';\nimport { getInteractionTracker } from '../../core/sceneGraph/getInteractionTracker';\nimport { GROUPBY_DIMENSIONS_INTERACTION } from '../../performance/interactionConstants';\n\nexport interface GroupByVariableState extends MultiValueVariableState {\n /** Defaults to \"Group\" */\n name: string;\n /** The visible keys to group on */\n // TODO review this type and name (naming is hard)\n defaultOptions?: MetricFindValue[];\n /** Base filters to always apply when looking up keys */\n baseFilters?: AdHocVariableFilter[];\n /** Datasource to use for getTagKeys and also controls which scene queries the group by should apply to */\n datasource: DataSourceRef | null;\n /** Default value set for this groupBy. When this field is set, changing value will allow the user to restore back to this default value */\n defaultValue?: { text: VariableValue; value: VariableValue };\n /** Needed for url sync when passing flag to another dashboard */\n restorable?: boolean;\n /** Controls if the group by can be changed */\n readOnly?: boolean;\n /**\n * @experimental\n * Controls the layout and design of the label.\n * Vertical layout does not yet support operator selector.\n */\n layout?: ControlsLayout;\n /**\n * Defaults to same-datasource which means group by will automatically be applied to all queries with the same data source as this GroupBySet.\n * In manual mode no queries are re-run on changes, and you have to manually apply the filter to whatever queries you want.\n */\n applyMode?: 'auto' | 'manual';\n /**\n * Filter out the keys that do not match the regex.\n */\n tagKeyRegexFilter?: RegExp;\n /**\n * Extension hook for customizing the key lookup.\n * Return replace: true if you want to override the default lookup\n * Return replace: false if you want to combine the results with the default lookup\n */\n getTagKeysProvider?: getTagKeysProvider;\n /**\n * Holds the applicability for each of the selected keys\n */\n keysApplicability?: DrilldownsApplicability[];\n /**\n * state for checking whether drilldown applicability is enabled\n */\n applicabilityEnabled?: boolean;\n}\n\nexport type getTagKeysProvider = (\n set: GroupByVariable,\n currentKey: string | null\n) => Promise<{ replace?: boolean; values: MetricFindValue[] | GetTagResponse }>;\n\nexport class GroupByVariable extends MultiValueVariable<GroupByVariableState> {\n static Component = GroupByVariableRenderer;\n isLazy = true;\n\n protected _urlSync: SceneObjectUrlSyncHandler = new GroupByVariableUrlSyncHandler(this);\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n return this.getValueOptions({}).pipe(\n map((options) => {\n this._updateValueGivenNewOptions(options);\n return {};\n })\n );\n }\n\n private _updateValueGivenNewOptions(options: VariableValueOption[]) {\n const { value: currentValue, text: currentText } = this.state;\n\n const stateUpdate: Partial<MultiValueVariableState> = {\n options,\n loading: false,\n value: currentValue ?? [],\n text: currentText ?? [],\n };\n\n this.setState(stateUpdate);\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n // When default dimensions are provided, return the static list\n if (this.state.defaultOptions) {\n return of(\n this.state.defaultOptions.map((o) => ({\n label: o.text,\n value: String(o.value),\n group: o.group,\n }))\n );\n }\n\n this.setState({ loading: true, error: null });\n\n return from(\n getDataSource(this.state.datasource, {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n })\n ).pipe(\n mergeMap((ds) => {\n return from(this._getKeys(ds)).pipe(\n tap((response) => {\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n }),\n map((response) => dataFromResponse(response)),\n take(1),\n mergeMap((data) => {\n const a: VariableValueOption[] = data.map((i) => {\n return {\n label: i.text,\n value: i.value ? String(i.value) : i.text,\n group: i.group,\n };\n });\n return of(a);\n })\n );\n })\n );\n }\n\n public constructor(initialState: Partial<GroupByVariableState>) {\n super({\n isMulti: true,\n name: '',\n value: [],\n text: [],\n options: [],\n datasource: null,\n baseFilters: [],\n applyMode: 'auto',\n layout: 'horizontal',\n type: 'groupby' as VariableType,\n ...initialState,\n noValueOnClear: true,\n });\n\n if (this.state.defaultValue) {\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, false);\n }\n\n if (this.state.applyMode === 'auto') {\n this.addActivationHandler(() => {\n allActiveGroupByVariables.add(this);\n\n return () => allActiveGroupByVariables.delete(this);\n });\n }\n\n this.addActivationHandler(this._activationHandler);\n }\n\n private _activationHandler = () => {\n this._verifyApplicability();\n\n if (this.state.defaultValue) {\n if (this.checkIfRestorable(this.state.value)) {\n this.setState({ restorable: true });\n }\n }\n\n return () => {\n if (this.state.defaultValue) {\n this.restoreDefaultValues();\n }\n\n this.setState({ applicabilityEnabled: false });\n };\n };\n\n public getApplicableKeys(): VariableValue {\n const { value, keysApplicability } = this.state;\n\n const valueArray = isArray(value) ? value : value ? [value] : [];\n\n if (!keysApplicability || keysApplicability.length === 0) {\n return valueArray;\n }\n\n const applicableValues = valueArray.filter((val) => {\n const applicability = keysApplicability.find((item) => item.key === val);\n return !applicability || applicability.applicable !== false;\n });\n\n return applicableValues;\n }\n\n public async getGroupByApplicabilityForQueries(\n value: VariableValue,\n queries: SceneDataQuery[]\n ): Promise<DrilldownsApplicability[] | undefined> {\n const ds = await getDataSource(this.state.datasource, {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n });\n\n // @ts-expect-error (temporary till we update grafana/data)\n if (!ds.getDrilldownsApplicability) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n // @ts-expect-error (temporary till we update grafana/data)\n return await ds.getDrilldownsApplicability({\n groupByKeys: Array.isArray(value) ? value.map((v) => String(v)) : value ? [String(value)] : [],\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n }\n\n public async _verifyApplicability() {\n const queries = getQueriesForVariables(this);\n const value = this.state.value;\n\n const response = await this.getGroupByApplicabilityForQueries(value, queries);\n\n if (!response) {\n return;\n }\n\n if (!isEqual(response, this.state.keysApplicability)) {\n this.setState({ keysApplicability: response ?? undefined, applicabilityEnabled: true });\n\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n } else {\n this.setState({ applicabilityEnabled: true });\n }\n }\n\n // This method is related to the defaultValue property. We check if the current value\n // is different from the default value. If it is, the groupBy will show a button\n // allowing the user to restore the default values.\n public checkIfRestorable(values: VariableValue) {\n const originalValues = isArray(this.state.defaultValue?.value)\n ? this.state.defaultValue?.value\n : this.state.defaultValue?.value\n ? [this.state.defaultValue?.value]\n : [];\n const vals = isArray(values) ? values : [values];\n\n if (vals.length !== originalValues.length) {\n return true;\n }\n\n return !isEqual(vals, originalValues);\n }\n\n public restoreDefaultValues() {\n this.setState({ restorable: false });\n\n if (!this.state.defaultValue) {\n return;\n }\n\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, true);\n }\n\n /**\n * Get possible keys given current filters. Do not call from plugins directly\n */\n public _getKeys = async (ds: DataSourceApi) => {\n // TODO: provide current dimensions?\n const override = await this.state.getTagKeysProvider?.(this, null);\n\n if (override && override.replace) {\n return override.values;\n }\n\n if (this.state.defaultOptions) {\n return this.state.defaultOptions.concat(dataFromResponse(override?.values ?? []));\n }\n\n if (!ds.getTagKeys) {\n return [];\n }\n\n const queries = getQueriesForVariables(this);\n\n const otherFilters = this.state.baseFilters || [];\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const response = await ds.getTagKeys({\n filters: otherFilters,\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n\n let keys = dataFromResponse(response);\n if (override) {\n keys = keys.concat(dataFromResponse(override.values));\n }\n\n const tagKeyRegexFilter = this.state.tagKeyRegexFilter;\n if (tagKeyRegexFilter) {\n keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));\n }\n\n return keys;\n };\n\n /**\n * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable\n */\n public getDefaultMultiState(options: VariableValueOption[]) {\n return { value: [], text: [] };\n }\n}\n\nexport function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>) {\n const {\n value,\n text,\n key,\n isMulti = true,\n maxVisibleValues,\n noValueOnClear,\n options,\n includeAll,\n allowCustomValue = true,\n defaultValue,\n keysApplicability,\n } = model.useState();\n\n const values = useMemo<Array<SelectableValue<VariableValueSingle>>>(() => {\n const arrayValue = isArray(value) ? value : [value];\n const arrayText = isArray(text) ? text : [text];\n\n return arrayValue.map((value, idx) => ({\n value,\n label: String(arrayText[idx] ?? value),\n }));\n }, [value, text]);\n\n const [isFetchingOptions, setIsFetchingOptions] = useState(false);\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n // To not trigger queries on every selection we store this state locally here and only update the variable onBlur\n const [uncommittedValue, setUncommittedValue] = useState(values);\n\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n const hasDefaultValue = defaultValue !== undefined;\n\n // Detect value changes outside\n useEffect(() => {\n setUncommittedValue(values);\n }, [values]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n if (action === 'input-blur') {\n setInputValue('');\n return '';\n }\n\n return inputValue;\n };\n\n const filteredOptions = useMemo(\n () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),\n [optionSearcher, inputValue]\n );\n\n return isMulti ? (\n <MultiSelect<VariableValueSingle>\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n allowCustomValue={allowCustomValue}\n inputValue={inputValue}\n value={uncommittedValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={false}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n isLoading={isFetchingOptions}\n components={{\n Option: OptionWithCheckbox,\n Menu: WideMenu,\n ...(hasDefaultValue\n ? {\n IndicatorsContainer: () => <DefaultGroupByCustomIndicatorContainer model={model} />,\n }\n : {}),\n MultiValueContainer: ({ innerProps, children }: React.PropsWithChildren<GroupByContainerProps>) => (\n <GroupByValueContainer innerProps={innerProps} keysApplicability={keysApplicability}>\n {children}\n </GroupByValueContainer>\n ),\n }}\n onInputChange={onInputChange}\n onBlur={() => {\n model.changeValueTo(\n uncommittedValue.map((x) => x.value!),\n uncommittedValue.map((x) => x.label!),\n true\n );\n\n const restorable = model.checkIfRestorable(uncommittedValue.map((v) => v.value!));\n\n if (restorable !== model.state.restorable) {\n model.setState({ restorable: restorable });\n }\n\n model._verifyApplicability();\n }}\n onChange={(newValue, action) => {\n if (action.action === 'clear' && noValueOnClear) {\n model.changeValueTo([], undefined, true);\n }\n\n setUncommittedValue(newValue);\n setInputValue('');\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n ) : (\n <Select\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n inputValue={inputValue}\n value={uncommittedValue && uncommittedValue.length > 0 ? uncommittedValue : null}\n allowCustomValue={allowCustomValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={true}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n noValueOnClear={true}\n isLoading={isFetchingOptions}\n components={{ Menu: WideMenu }}\n onInputChange={onInputChange}\n onChange={(newValue, action) => {\n if (action.action === 'clear') {\n setUncommittedValue([]);\n if (noValueOnClear) {\n model.changeValueTo([]);\n }\n return;\n }\n if (newValue?.value) {\n setUncommittedValue([newValue]);\n model.changeValueTo([newValue.value], newValue.label ? [newValue.label] : undefined);\n }\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n );\n}\n\nconst filterNoOp = () => true;\n\n// custom minWidth menu component to fit custom value message\nfunction WideMenu<Option, IsMulti extends boolean, Group extends GroupBase<Option>>(\n props: MenuProps<Option, IsMulti, Group>\n) {\n return (\n <components.Menu {...props}>\n <div style={{ minWidth: '220px' }}>{props.children}</div>\n </components.Menu>\n );\n}\n\nfunction toSelectableValue(input: VariableValueOption): SelectableValue<VariableValueSingle> {\n const { label, value, group } = input;\n const result: SelectableValue<VariableValueSingle> = {\n label,\n value,\n };\n\n if (group) {\n result.group = group;\n }\n\n return result;\n}\n"],"names":["value"],"mappings":"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"}
@@ -13,13 +13,6 @@ var grafanaScenes = {
13
13
  "remove-filter-value": "Remove filter value - {{itemLabel}}",
14
14
  "use-custom-value": "Use custom value: {{itemLabel}}"
15
15
  },
16
- "drilldown-recommendations": {
17
- recent: "Recent",
18
- "recent-empty": "No recent values",
19
- recommended: "Recommended",
20
- "recommended-empty": "No recommended values",
21
- tooltip: "Show recommendations"
22
- },
23
16
  "fallback-page": {
24
17
  content: "If you found your way here using a link then there might be a bug in this application.",
25
18
  subTitle: "The url did not match any page",
@@ -102,6 +95,12 @@ var grafanaScenes = {
102
95
  "placeholder-select-value": "Select value"
103
96
  }
104
97
  },
98
+ "adhoc-filters-combobox-renderer": {
99
+ collapse: "Collapse",
100
+ "collapse-filters": "Collapse filters",
101
+ "more-filters_one": "+{{count}} more",
102
+ "more-filters_other": "+{{count}} more"
103
+ },
105
104
  "data-source-variable": {
106
105
  label: {
107
106
  "default": "default"
@@ -171,4 +170,4 @@ var grafanaScenes = {
171
170
  };
172
171
 
173
172
  exports.default = grafanaScenes;
174
- //# sourceMappingURL=grafana-scenes-C9F_2hih.js.map
173
+ //# sourceMappingURL=grafana-scenes-CwGWCTcQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grafana-scenes-C9F_2hih.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"grafana-scenes-CwGWCTcQ.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -993,12 +993,6 @@ declare function registerVariableMacro(name: string, macro: MacroVariableConstru
993
993
  declare function renderPrometheusLabelFilters(filters: AdHocVariableFilter[]): string;
994
994
  declare function escapeLabelValueInExactSelector(labelValue: string): string;
995
995
  declare function escapeLabelValueInRegexSelector(labelValue: string): string;
996
- /**
997
- * Get all queries in the scene that have the same datasource as provided source object
998
- */
999
- declare function getQueriesForVariables(sourceObject: SceneObject<SceneObjectState & {
1000
- datasource: DataSourceRef | null;
1001
- }>): SceneDataQuery[];
1002
996
  declare function escapeUrlPipeDelimiters(value: string | undefined): string;
1003
997
  declare function escapeURLDelimiters(value: string | undefined): string;
1004
998
 
@@ -1011,47 +1005,6 @@ declare class AdHocFiltersVariableUrlSyncHandler implements SceneObjectUrlSyncHa
1011
1005
  updateFromUrl(values: SceneObjectUrlValues): void;
1012
1006
  }
1013
1007
 
1014
- interface AdHocFiltersRecommendationsState extends SceneObjectState {
1015
- /** Recent filters */
1016
- recentFilters?: AdHocFilterWithLabels[];
1017
- /** Recommended filters */
1018
- recommendedFilters?: AdHocFilterWithLabels[];
1019
- }
1020
- /**
1021
- * Scene object component that manages recommendations for AdHocFiltersVariable.
1022
- * It handles fetching recommended drilldowns, verifying applicability of recent filters,
1023
- * and storing/displaying recent filters.
1024
- */
1025
- declare class AdHocFiltersRecommendations extends SceneObjectBase<AdHocFiltersRecommendationsState> {
1026
- static Component: typeof AdHocFiltersRecommendationsRenderer;
1027
- private _scopedVars;
1028
- private _parentVariable;
1029
- constructor(parent: AdHocFiltersVariable);
1030
- /**
1031
- * Get the parent variable
1032
- */
1033
- get parent(): AdHocFiltersVariable;
1034
- private _activationHandler;
1035
- private _getStorageKey;
1036
- private _fetchRecommendedDrilldowns;
1037
- private _verifyRecentFiltersApplicability;
1038
- private _getFiltersApplicabilityForQueries;
1039
- /**
1040
- * Stores a recent filter in localStorage and updates state.
1041
- * Should be called by the parent variable when a filter is added/updated.
1042
- */
1043
- storeRecentFilter(filter: AdHocFilterWithLabels): void;
1044
- /**
1045
- * Get the current filters from the parent variable
1046
- */
1047
- getParentFilters(): AdHocFilterWithLabels[];
1048
- /**
1049
- * Add a filter to the parent variable
1050
- */
1051
- addFilterToParent(filter: AdHocFilterWithLabels): void;
1052
- }
1053
- declare function AdHocFiltersRecommendationsRenderer({ model }: SceneComponentProps<AdHocFiltersRecommendations>): React__default.JSX.Element;
1054
-
1055
1008
  interface AdHocFilterWithLabels<M extends Record<string, any> = {}> extends AdHocVariableFilter {
1056
1009
  keyLabel?: string;
1057
1010
  valueLabels?: string[];
@@ -1148,14 +1101,10 @@ interface AdHocFiltersVariableState extends SceneVariableState {
1148
1101
  */
1149
1102
  applicabilityEnabled?: boolean;
1150
1103
  /**
1151
- * Value recommendations - manages recent and recommended filters
1152
- * @internal
1153
- */
1154
- _valueRecommendations?: AdHocFiltersRecommendations;
1155
- /**
1156
- * enables drilldown recommendations
1104
+ * When true, enables a collapse button that appears when filters wrap to multiple lines.
1105
+ * Allows users to collapse the filter UI to save vertical space.
1157
1106
  */
1158
- drilldownRecommendationsEnabled?: boolean;
1107
+ collapsible?: boolean;
1159
1108
  }
1160
1109
  type AdHocVariableExpressionBuilderFn = (filters: AdHocFilterWithLabels[]) => string;
1161
1110
  type OnAddCustomValueFn = (item: SelectableValue<string> & {
@@ -1191,7 +1140,6 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
1191
1140
  constructor(state: Partial<AdHocFiltersVariableState>);
1192
1141
  private _activationHandler;
1193
1142
  private _updateScopesFilters;
1194
- private verifyApplicabilityAndStoreRecentFilter;
1195
1143
  setState(update: Partial<AdHocFiltersVariableState>): void;
1196
1144
  /**
1197
1145
  * Updates the variable's `filters` and `filterExpression` state.
@@ -1203,6 +1151,10 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
1203
1151
  forcePublish?: boolean;
1204
1152
  }): void;
1205
1153
  restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
1154
+ /**
1155
+ * Clear all user-added filters and restore origin filters to their original values.
1156
+ */
1157
+ clearAll(): void;
1206
1158
  getValue(fieldPath?: string): VariableValue | undefined;
1207
1159
  _updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
1208
1160
  updateToMatchAll(filter: AdHocFilterWithLabels): void;
@@ -1412,50 +1364,6 @@ declare class QueryVariable extends MultiValueVariable<QueryVariableState> {
1412
1364
  static Component: ({ model }: SceneComponentProps<MultiValueVariable>) => React__default.JSX.Element;
1413
1365
  }
1414
1366
 
1415
- interface GroupByRecommendationsState extends SceneObjectState {
1416
- /** Recent groupings */
1417
- recentGrouping?: Array<SelectableValue<VariableValueSingle>>;
1418
- /** Recommended groupings */
1419
- recommendedGrouping?: Array<SelectableValue<VariableValueSingle>>;
1420
- }
1421
- /**
1422
- * Scene object component that manages recommendations for GroupByVariable.
1423
- * It handles fetching recommended drilldowns, verifying applicability of recent groupings,
1424
- * and storing/displaying recent groupings.
1425
- */
1426
- declare class GroupByRecommendations extends SceneObjectBase<GroupByRecommendationsState> {
1427
- static Component: typeof GroupByRecommendationsRenderer;
1428
- private _scopedVars;
1429
- private _parentVariable;
1430
- constructor(parent: GroupByVariable);
1431
- /**
1432
- * Get the parent variable
1433
- */
1434
- get parent(): GroupByVariable;
1435
- private _activationHandler;
1436
- private _getStorageKey;
1437
- private _fetchRecommendedDrilldowns;
1438
- private _verifyRecentGroupingsApplicability;
1439
- private _getGroupByApplicabilityForQueries;
1440
- /**
1441
- * Stores recent groupings in localStorage and updates state.
1442
- * Should be called by the parent variable when a grouping is added/updated.
1443
- */
1444
- storeRecentGrouping(applicableValues: string[]): void;
1445
- /**
1446
- * Get the current values from the parent variable
1447
- */
1448
- getParentValues(): {
1449
- value: VariableValueSingle[];
1450
- text: string[];
1451
- };
1452
- /**
1453
- * Add a grouping value to the parent variable
1454
- */
1455
- addValueToParent(newValue: VariableValueSingle, newText?: string): void;
1456
- }
1457
- declare function GroupByRecommendationsRenderer({ model }: SceneComponentProps<GroupByRecommendations>): React__default.JSX.Element;
1458
-
1459
1367
  interface GroupByVariableState extends MultiValueVariableState {
1460
1368
  /** Defaults to "Group" */
1461
1369
  name: string;
@@ -1503,15 +1411,6 @@ interface GroupByVariableState extends MultiValueVariableState {
1503
1411
  * state for checking whether drilldown applicability is enabled
1504
1412
  */
1505
1413
  applicabilityEnabled?: boolean;
1506
- /**
1507
- * Value recommendations scene object - manages recent and recommended groupings
1508
- * @internal
1509
- */
1510
- _valueRecommendations?: GroupByRecommendations;
1511
- /**
1512
- * enables drilldown recommendations
1513
- */
1514
- drilldownRecommendationsEnabled?: boolean;
1515
1414
  }
1516
1415
  type getTagKeysProvider = (set: GroupByVariable, currentKey: string | null) => Promise<{
1517
1416
  replace?: boolean;
@@ -1526,7 +1425,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
1526
1425
  getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]>;
1527
1426
  constructor(initialState: Partial<GroupByVariableState>);
1528
1427
  private _activationHandler;
1529
- getApplicableKeys(): string[];
1428
+ getApplicableKeys(): VariableValue;
1530
1429
  getGroupByApplicabilityForQueries(value: VariableValue, queries: SceneDataQuery[]): Promise<DrilldownsApplicability[] | undefined>;
1531
1430
  _verifyApplicability(): Promise<void>;
1532
1431
  checkIfRestorable(values: VariableValue): boolean;
@@ -1535,7 +1434,6 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
1535
1434
  * Get possible keys given current filters. Do not call from plugins directly
1536
1435
  */
1537
1436
  _getKeys: (ds: DataSourceApi) => Promise<GetTagResponse | MetricFindValue[]>;
1538
- _verifyApplicabilityAndStoreRecentGrouping(): Promise<void>;
1539
1437
  /**
1540
1438
  * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable
1541
1439
  */
@@ -2597,9 +2495,10 @@ interface AdHocFiltersControllerState {
2597
2495
  onAddCustomValue?: OnAddCustomValueFn;
2598
2496
  wip?: AdHocFilterWithLabels;
2599
2497
  inputPlaceholder?: string;
2600
- /** Value recommendations component - manages recent and recommended filters */
2601
- valueRecommendations?: AdHocFiltersRecommendations;
2602
- drilldownRecommendationsEnabled?: boolean;
2498
+ /**
2499
+ * When true, enables a collapse button that appears when filters wrap to multiple lines.
2500
+ */
2501
+ collapsible?: boolean;
2603
2502
  }
2604
2503
  /**
2605
2504
  * Controller interface for adhoc filters combobox UI.
@@ -2631,15 +2530,6 @@ interface AdHocFiltersController {
2631
2530
  * @param update - Partial filter properties to update
2632
2531
  */
2633
2532
  updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
2634
- /**
2635
- * Update filters list
2636
- * @param filters
2637
- * @param options
2638
- */
2639
- updateFilters?(filters: AdHocFilterWithLabels[], options?: {
2640
- skipPublish?: boolean;
2641
- forcePublish?: boolean;
2642
- }): void;
2643
2533
  /**
2644
2534
  * Update a filter to match all values (=~ .*)
2645
2535
  * @param filter - The filter to update
@@ -2668,6 +2558,10 @@ interface AdHocFiltersController {
2668
2558
  * @param filter - The filter to restore
2669
2559
  */
2670
2560
  restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
2561
+ /**
2562
+ * Clear all user-added filters and restore origin filters to original values.
2563
+ */
2564
+ clearAll(): void;
2671
2565
  /**
2672
2566
  * Optional: Start profiling an interaction (for performance tracking).
2673
2567
  * @param name - The interaction name
@@ -2696,16 +2590,13 @@ declare class AdHocFiltersVariableController implements AdHocFiltersController {
2696
2590
  getValuesFor(filter: AdHocFilterWithLabels): Promise<Array<SelectableValue<string>>>;
2697
2591
  getOperators(): Array<SelectableValue<string>>;
2698
2592
  updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
2699
- updateFilters(filters: AdHocFilterWithLabels[], options?: {
2700
- skipPublish?: boolean;
2701
- forcePublish?: boolean;
2702
- }): void;
2703
2593
  updateToMatchAll(filter: AdHocFilterWithLabels): void;
2704
2594
  removeFilter(filter: AdHocFilterWithLabels): void;
2705
2595
  removeLastFilter(): void;
2706
2596
  handleComboboxBackspace(filter: AdHocFilterWithLabels): void;
2707
2597
  addWip(): void;
2708
2598
  restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
2599
+ clearAll(): void;
2709
2600
  startProfile(name: string): void;
2710
2601
  startInteraction(name: string): void;
2711
2602
  stopInteraction(): void;
@@ -3735,5 +3626,5 @@ declare const sceneUtils: {
3735
3626
  buildPathIdFor: typeof buildPathIdFor;
3736
3627
  };
3737
3628
 
3738
- export { AdHocFiltersComboboxRenderer, AdHocFiltersVariable, AdHocFiltersVariableController, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PATH_ID_SEPARATOR, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, SwitchVariable, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$2 as behaviors, index as dataLayers, escapeUrlPipeDelimiters, formatRegistry, getExploreURL, getQueriesForVariables, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, loadResources, index$1 as performanceUtils, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync, writePerformanceLog };
3629
+ export { AdHocFiltersComboboxRenderer, AdHocFiltersVariable, AdHocFiltersVariableController, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PATH_ID_SEPARATOR, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, SwitchVariable, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$2 as behaviors, index as dataLayers, escapeUrlPipeDelimiters, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, loadResources, index$1 as performanceUtils, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync, writePerformanceLog };
3739
3630
  export type { AdHocFilterWithLabels, AdHocFiltersController, AdHocFiltersControllerState, CancelActivationHandler, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariableValue, DataLayerFilter, DataRequestEnricher, DeepPartial, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FiltersRequestEnricher, FormatVariable, InterpolationFormatParameter, MacroVariableConstructor, MultiValueVariableState, QueryRunnerState, SceneActivationHandler, SceneAppDrilldownView, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneComponent, SceneComponentProps, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformerState, SceneDeactivationHandler, SceneFlexItemLike, SceneFlexItemState, SceneGridItemLike, SceneGridItemStateLike, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectState, SceneObjectStateChangedPayload, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimeRangeLike, SceneTimeRangeState, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSetState, SceneVariableState, SceneVariables, UrlSyncManagerLike, UseStateHookOptions, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableGetOptionsArgs, VariableValue, VariableValueOption, VariableValueOptionProperties, VariableValueSingle, VizConfig, VizPanelState };