@grafana/scenes 6.27.3 → 6.28.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 (87) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/esm/locales/cs-CZ/grafana-scenes.json.js +151 -0
  3. package/dist/esm/locales/cs-CZ/grafana-scenes.json.js.map +1 -0
  4. package/dist/esm/locales/de-DE/grafana-scenes.json.js +151 -0
  5. package/dist/esm/locales/de-DE/grafana-scenes.json.js.map +1 -0
  6. package/dist/esm/locales/en-US/grafana-scenes.json.js +1 -0
  7. package/dist/esm/locales/en-US/grafana-scenes.json.js.map +1 -1
  8. package/dist/esm/locales/es-ES/grafana-scenes.json.js +151 -0
  9. package/dist/esm/locales/es-ES/grafana-scenes.json.js.map +1 -0
  10. package/dist/esm/locales/fr-FR/grafana-scenes.json.js +151 -0
  11. package/dist/esm/locales/fr-FR/grafana-scenes.json.js.map +1 -0
  12. package/dist/esm/locales/hu-HU/grafana-scenes.json.js +151 -0
  13. package/dist/esm/locales/hu-HU/grafana-scenes.json.js.map +1 -0
  14. package/dist/esm/locales/id-ID/grafana-scenes.json.js +151 -0
  15. package/dist/esm/locales/id-ID/grafana-scenes.json.js.map +1 -0
  16. package/dist/esm/locales/it-IT/grafana-scenes.json.js +151 -0
  17. package/dist/esm/locales/it-IT/grafana-scenes.json.js.map +1 -0
  18. package/dist/esm/locales/ja-JP/grafana-scenes.json.js +151 -0
  19. package/dist/esm/locales/ja-JP/grafana-scenes.json.js.map +1 -0
  20. package/dist/esm/locales/ko-KR/grafana-scenes.json.js +151 -0
  21. package/dist/esm/locales/ko-KR/grafana-scenes.json.js.map +1 -0
  22. package/dist/esm/locales/nl-NL/grafana-scenes.json.js +151 -0
  23. package/dist/esm/locales/nl-NL/grafana-scenes.json.js.map +1 -0
  24. package/dist/esm/locales/pl-PL/grafana-scenes.json.js +151 -0
  25. package/dist/esm/locales/pl-PL/grafana-scenes.json.js.map +1 -0
  26. package/dist/esm/locales/pt-BR/grafana-scenes.json.js +151 -0
  27. package/dist/esm/locales/pt-BR/grafana-scenes.json.js.map +1 -0
  28. package/dist/esm/locales/pt-PT/grafana-scenes.json.js +151 -0
  29. package/dist/esm/locales/pt-PT/grafana-scenes.json.js.map +1 -0
  30. package/dist/esm/locales/ru-RU/grafana-scenes.json.js +151 -0
  31. package/dist/esm/locales/ru-RU/grafana-scenes.json.js.map +1 -0
  32. package/dist/esm/locales/sv-SE/grafana-scenes.json.js +151 -0
  33. package/dist/esm/locales/sv-SE/grafana-scenes.json.js.map +1 -0
  34. package/dist/esm/locales/tr-TR/grafana-scenes.json.js +151 -0
  35. package/dist/esm/locales/tr-TR/grafana-scenes.json.js.map +1 -0
  36. package/dist/esm/locales/zh-Hans/grafana-scenes.json.js +151 -0
  37. package/dist/esm/locales/zh-Hans/grafana-scenes.json.js.map +1 -0
  38. package/dist/esm/locales/zh-Hant/grafana-scenes.json.js +151 -0
  39. package/dist/esm/locales/zh-Hant/grafana-scenes.json.js.map +1 -0
  40. package/dist/esm/utils/loadResources.js +18 -0
  41. package/dist/esm/utils/loadResources.js.map +1 -1
  42. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +11 -2
  43. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
  44. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +42 -24
  45. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  46. package/dist/grafana-scenes-B0JDDOYY.js +153 -0
  47. package/dist/{grafana-scenes-DCHONTnD.js.map → grafana-scenes-B0JDDOYY.js.map} +1 -1
  48. package/dist/grafana-scenes-B3ypGD5T.js +153 -0
  49. package/dist/grafana-scenes-B3ypGD5T.js.map +1 -0
  50. package/dist/grafana-scenes-BGCbMCFm.js +153 -0
  51. package/dist/grafana-scenes-BGCbMCFm.js.map +1 -0
  52. package/dist/grafana-scenes-Br6NPcwR.js +153 -0
  53. package/dist/grafana-scenes-Br6NPcwR.js.map +1 -0
  54. package/dist/grafana-scenes-CBRfJ-2H.js +153 -0
  55. package/dist/grafana-scenes-CBRfJ-2H.js.map +1 -0
  56. package/dist/grafana-scenes-COr0P0oM.js +153 -0
  57. package/dist/grafana-scenes-COr0P0oM.js.map +1 -0
  58. package/dist/grafana-scenes-CY85TD5F.js +153 -0
  59. package/dist/grafana-scenes-CY85TD5F.js.map +1 -0
  60. package/dist/grafana-scenes-CeVkPanY.js +153 -0
  61. package/dist/grafana-scenes-CeVkPanY.js.map +1 -0
  62. package/dist/grafana-scenes-CgIzGE5F.js +153 -0
  63. package/dist/grafana-scenes-CgIzGE5F.js.map +1 -0
  64. package/dist/grafana-scenes-CqRf9pRc.js +153 -0
  65. package/dist/grafana-scenes-CqRf9pRc.js.map +1 -0
  66. package/dist/grafana-scenes-Cub9Gl0n.js +153 -0
  67. package/dist/grafana-scenes-Cub9Gl0n.js.map +1 -0
  68. package/dist/grafana-scenes-D5qs_fc9.js +153 -0
  69. package/dist/grafana-scenes-D5qs_fc9.js.map +1 -0
  70. package/dist/grafana-scenes-DObtL2WT.js +153 -0
  71. package/dist/grafana-scenes-DObtL2WT.js.map +1 -0
  72. package/dist/grafana-scenes-DXM1LI4B.js +153 -0
  73. package/dist/grafana-scenes-DXM1LI4B.js.map +1 -0
  74. package/dist/grafana-scenes-DlUSL8jI.js +153 -0
  75. package/dist/grafana-scenes-DlUSL8jI.js.map +1 -0
  76. package/dist/grafana-scenes-Dy2CLUY9.js +153 -0
  77. package/dist/grafana-scenes-Dy2CLUY9.js.map +1 -0
  78. package/dist/grafana-scenes-YMli37Xh.js +153 -0
  79. package/dist/grafana-scenes-YMli37Xh.js.map +1 -0
  80. package/dist/grafana-scenes-n10eQkNF.js +153 -0
  81. package/dist/grafana-scenes-n10eQkNF.js.map +1 -0
  82. package/dist/{grafana-scenes-DCHONTnD.js → grafana-scenes-uBsCv-Bu.js} +2 -1
  83. package/dist/grafana-scenes-uBsCv-Bu.js.map +1 -0
  84. package/dist/index.d.ts +2 -1
  85. package/dist/index.js +72 -27
  86. package/dist/index.js.map +1 -1
  87. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -5233,7 +5233,7 @@ const getStyles$c = (theme) => ({
5233
5233
 
5234
5234
  const LABEL_MAX_VISIBLE_LENGTH = 20;
5235
5235
  function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
5236
- var _a, _b, _c;
5236
+ var _a, _b, _c, _d;
5237
5237
  const styles = ui.useStyles2(getStyles$b);
5238
5238
  const [viewMode, setViewMode] = React.useState(true);
5239
5239
  const [shouldFocusOnPillWrapper, setShouldFocusOnPillWrapper] = React.useState(false);
@@ -5288,6 +5288,7 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
5288
5288
  };
5289
5289
  }
5290
5290
  };
5291
+ const cleanFilter = !filter.restorable && !filter.readOnly && !filter.nonApplicable;
5291
5292
  if (viewMode) {
5292
5293
  const pillTextContent = `${keyLabel} ${filter.operator} ${valueLabel}`;
5293
5294
  const pillText = /* @__PURE__ */ React__default.default.createElement("span", { className: css.cx(styles.pillText, filter.nonApplicable && styles.strikethrough) }, pillTextContent);
@@ -5369,7 +5370,7 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
5369
5370
  },
5370
5371
  /* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "lock", size: "md", className: styles.readOnlyPillIcon })
5371
5372
  ),
5372
- filter.origin && !filter.restorable && !filter.readOnly && /* @__PURE__ */ React__default.default.createElement(ui.Tooltip, { content: getOriginFilterTooltips(filter.origin).info, placement: "bottom" }, /* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "info-circle", size: "md", className: styles.infoPillIcon })),
5373
+ filter.origin && cleanFilter && /* @__PURE__ */ React__default.default.createElement(ui.Tooltip, { content: getOriginFilterTooltips(filter.origin).info, placement: "bottom" }, /* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "info-circle", size: "md", className: styles.infoPillIcon })),
5373
5374
  filter.origin && filter.restorable && !filter.readOnly && /* @__PURE__ */ React__default.default.createElement(
5374
5375
  ui.IconButton,
5375
5376
  {
@@ -5389,6 +5390,14 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
5389
5390
  className: isMatchAllFilter(filter) ? styles.matchAllPillIcon : styles.pillIcon,
5390
5391
  tooltip: getOriginFilterTooltips(filter.origin).restore
5391
5392
  }
5393
+ ),
5394
+ filter.nonApplicable && /* @__PURE__ */ React__default.default.createElement(
5395
+ ui.Tooltip,
5396
+ {
5397
+ content: (_d = filter.nonApplicableReason) != null ? _d : i18n.t("grafana-scenes.components.adhoc-filter-pill.non-applicable", "Filter is not applicable"),
5398
+ placement: "bottom"
5399
+ },
5400
+ /* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "info-circle", size: "md", className: styles.infoPillIcon })
5392
5401
  )
5393
5402
  );
5394
5403
  }
@@ -5699,7 +5708,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
5699
5708
  });
5700
5709
  this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
5701
5710
  this._activationHandler = () => {
5702
- this._verifyNonApplicableFilters();
5711
+ this._setStateWithFiltersApplicabilityCheck({
5712
+ filters: this.state.filters,
5713
+ originFilters: this.state.originFilters
5714
+ });
5703
5715
  return () => {
5704
5716
  var _a;
5705
5717
  (_a = this.state.originFilters) == null ? void 0 : _a.forEach((filter) => {
@@ -5763,7 +5775,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
5763
5775
  ...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
5764
5776
  ...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
5765
5777
  ];
5766
- this.setState({ originFilters: [...finalFilters, ...remainingFilters] });
5778
+ this._setStateWithFiltersApplicabilityCheck({
5779
+ filters: this.state.filters,
5780
+ originFilters: [...finalFilters, ...remainingFilters]
5781
+ });
5767
5782
  this._prevScopes = scopes;
5768
5783
  }
5769
5784
  setState(update) {
@@ -5844,7 +5859,11 @@ class AdHocFiltersVariable extends SceneObjectBase {
5844
5859
  }
5845
5860
  if (filter === _wip) {
5846
5861
  if ("value" in update && update["value"] !== "") {
5847
- this.setState({ filters: [...filters, { ..._wip, ...update }], _wip: void 0 });
5862
+ this._setStateWithFiltersApplicabilityCheck({
5863
+ filters: [...filters, { ..._wip, ...update }],
5864
+ originFilters: this.state.originFilters,
5865
+ _wip: void 0
5866
+ });
5848
5867
  } else {
5849
5868
  this.setState({ _wip: { ...filter, ...update } });
5850
5869
  }
@@ -5871,7 +5890,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
5871
5890
  this.setState({ _wip: void 0 });
5872
5891
  return;
5873
5892
  }
5874
- this.setState({ filters: this.state.filters.filter((f) => f !== filter) });
5893
+ this._setStateWithFiltersApplicabilityCheck({
5894
+ filters: this.state.filters.filter((f) => f !== filter),
5895
+ originFilters: this.state.originFilters
5896
+ });
5875
5897
  }
5876
5898
  _removeLastFilter() {
5877
5899
  const filterToRemove = this.state.filters.at(-1);
@@ -5927,46 +5949,51 @@ class AdHocFiltersVariable extends SceneObjectBase {
5927
5949
  });
5928
5950
  }
5929
5951
  }
5930
- async _verifyNonApplicableFilters() {
5931
- var _a, _b, _c;
5932
- const filters = [...this.state.filters, ...(_a = this.state.originFilters) != null ? _a : []];
5952
+ async _setStateWithFiltersApplicabilityCheck(update) {
5953
+ var _a, _b;
5933
5954
  const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
5934
- if (!ds || !ds.getApplicableFilters) {
5935
- return [];
5955
+ if (!ds || !ds.getFiltersApplicability) {
5956
+ this.setState(update);
5957
+ return;
5958
+ }
5959
+ if (!update.filters) {
5960
+ return;
5936
5961
  }
5937
5962
  const timeRange = sceneGraph.getTimeRange(this).state.value;
5938
5963
  const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
5939
- const response = await ds.getApplicableFilters({
5940
- filters,
5964
+ const response = await ds.getFiltersApplicability({
5965
+ filters: [...update.filters, ...(_a = update.originFilters) != null ? _a : []],
5941
5966
  queries,
5942
5967
  timeRange,
5943
5968
  scopes: sceneGraph.getScopes(this),
5944
5969
  ...getEnrichedFiltersRequest(this)
5945
5970
  });
5946
- const update = {
5947
- filters: [...this.state.filters],
5948
- originFilters: [...(_b = this.state.originFilters) != null ? _b : []]
5949
- };
5971
+ const responseMap = /* @__PURE__ */ new Map();
5972
+ response.forEach((filter) => {
5973
+ responseMap.set(`${filter.key}${filter.origin ? `-${filter.origin}` : ""}`, filter);
5974
+ });
5950
5975
  update.filters.forEach((f) => {
5951
- const isApplicable = response.includes(f.key);
5952
- if (!isApplicable) {
5953
- f.nonApplicable = true;
5976
+ const filter = responseMap.get(f.key);
5977
+ if (filter) {
5978
+ f.nonApplicable = !filter.applicable;
5979
+ f.nonApplicableReason = filter.reason;
5954
5980
  }
5955
5981
  });
5956
- (_c = update.originFilters) == null ? void 0 : _c.forEach((f) => {
5957
- const isApplicable = response.includes(f.key);
5958
- if (!isApplicable) {
5982
+ (_b = update.originFilters) == null ? void 0 : _b.forEach((f) => {
5983
+ const filter = responseMap.get(`${f.key}-${f.origin}`);
5984
+ if (filter) {
5959
5985
  if (!f.matchAllFilter) {
5960
- f.nonApplicable = true;
5986
+ f.nonApplicable = !filter.applicable;
5987
+ f.nonApplicableReason = filter.reason;
5961
5988
  }
5962
5989
  const originalValue = this._originalValues.get(`${f.key}-${f.origin}`);
5963
5990
  if (originalValue) {
5964
- originalValue.nonApplicable = true;
5991
+ originalValue.nonApplicable = !filter.applicable;
5992
+ originalValue.nonApplicableReason = filter == null ? void 0 : filter.reason;
5965
5993
  }
5966
5994
  }
5967
5995
  });
5968
5996
  this.setState(update);
5969
- return;
5970
5997
  }
5971
5998
  /**
5972
5999
  * Get possible keys given current filters. Do not call from plugins directly
@@ -14419,7 +14446,25 @@ const VizConfigBuilders = {
14419
14446
 
14420
14447
  function __variableDynamicImportRuntime0__(path) {
14421
14448
  switch (path) {
14422
- case '../locales/en-US/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-DCHONTnD.js'); });
14449
+ case '../locales/cs-CZ/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CY85TD5F.js'); });
14450
+ case '../locales/de-DE/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-n10eQkNF.js'); });
14451
+ case '../locales/en-US/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-uBsCv-Bu.js'); });
14452
+ case '../locales/es-ES/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-YMli37Xh.js'); });
14453
+ case '../locales/fr-FR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-DXM1LI4B.js'); });
14454
+ case '../locales/hu-HU/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-DlUSL8jI.js'); });
14455
+ case '../locales/id-ID/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-D5qs_fc9.js'); });
14456
+ case '../locales/it-IT/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-Dy2CLUY9.js'); });
14457
+ case '../locales/ja-JP/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CBRfJ-2H.js'); });
14458
+ case '../locales/ko-KR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CgIzGE5F.js'); });
14459
+ case '../locales/nl-NL/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-Br6NPcwR.js'); });
14460
+ case '../locales/pl-PL/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-B3ypGD5T.js'); });
14461
+ case '../locales/pt-BR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-COr0P0oM.js'); });
14462
+ case '../locales/pt-PT/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-Cub9Gl0n.js'); });
14463
+ case '../locales/ru-RU/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-BGCbMCFm.js'); });
14464
+ case '../locales/sv-SE/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CqRf9pRc.js'); });
14465
+ case '../locales/tr-TR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CeVkPanY.js'); });
14466
+ case '../locales/zh-Hans/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-DObtL2WT.js'); });
14467
+ case '../locales/zh-Hant/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-B0JDDOYY.js'); });
14423
14468
  default: return new Promise(function(resolve, reject) {
14424
14469
  (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(
14425
14470
  reject.bind(null, new Error("Unknown variable dynamic import: " + path))