@grafana/scenes 6.5.1--canary.1078.13965220580.0 → 6.5.1--canary.1077.13965250047.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 (275) hide show
  1. package/dist/esm/behaviors/ActWhenVariableChanged.js.map +1 -1
  2. package/dist/esm/behaviors/CursorSync.js +3 -21
  3. package/dist/esm/behaviors/CursorSync.js.map +1 -1
  4. package/dist/esm/behaviors/LiveNowTimer.js +3 -2
  5. package/dist/esm/behaviors/LiveNowTimer.js.map +1 -1
  6. package/dist/esm/behaviors/SceneQueryController.js +7 -37
  7. package/dist/esm/behaviors/SceneQueryController.js.map +1 -1
  8. package/dist/esm/behaviors/SceneRenderProfiler.js +10 -17
  9. package/dist/esm/behaviors/SceneRenderProfiler.js.map +1 -1
  10. package/dist/esm/components/EmbeddedScene.js +1 -12
  11. package/dist/esm/components/EmbeddedScene.js.map +1 -1
  12. package/dist/esm/components/NestedScene.js +23 -30
  13. package/dist/esm/components/NestedScene.js.map +1 -1
  14. package/dist/esm/components/SceneApp/SceneApp.js +1 -11
  15. package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
  16. package/dist/esm/components/SceneApp/SceneAppPage.js +28 -47
  17. package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
  18. package/dist/esm/components/SceneApp/SceneAppPageView.js +14 -20
  19. package/dist/esm/components/SceneApp/SceneAppPageView.js.map +1 -1
  20. package/dist/esm/components/SceneApp/utils.js +2 -18
  21. package/dist/esm/components/SceneApp/utils.js.map +1 -1
  22. package/dist/esm/components/SceneByFrameRepeater.js +1 -3
  23. package/dist/esm/components/SceneByFrameRepeater.js.map +1 -1
  24. package/dist/esm/components/SceneByVariableRepeater.js +1 -3
  25. package/dist/esm/components/SceneByVariableRepeater.js.map +1 -1
  26. package/dist/esm/components/SceneCanvasText.js +1 -4
  27. package/dist/esm/components/SceneCanvasText.js.map +1 -1
  28. package/dist/esm/components/SceneControlsSpacer.js +1 -3
  29. package/dist/esm/components/SceneControlsSpacer.js.map +1 -1
  30. package/dist/esm/components/SceneDebugger/DebugDetails.js +11 -24
  31. package/dist/esm/components/SceneDebugger/DebugDetails.js.map +1 -1
  32. package/dist/esm/components/SceneDebugger/DebugTreeNode.js +2 -14
  33. package/dist/esm/components/SceneDebugger/DebugTreeNode.js.map +1 -1
  34. package/dist/esm/components/SceneDebugger/SceneDebugger.js +1 -29
  35. package/dist/esm/components/SceneDebugger/SceneDebugger.js.map +1 -1
  36. package/dist/esm/components/SceneReactObject.js +1 -17
  37. package/dist/esm/components/SceneReactObject.js.map +1 -1
  38. package/dist/esm/components/SceneRefreshPicker.js +23 -38
  39. package/dist/esm/components/SceneRefreshPicker.js.map +1 -1
  40. package/dist/esm/components/SceneTimePicker.js +27 -29
  41. package/dist/esm/components/SceneTimePicker.js.map +1 -1
  42. package/dist/esm/components/SceneTimeRangeCompare.js +36 -50
  43. package/dist/esm/components/SceneTimeRangeCompare.js.map +1 -1
  44. package/dist/esm/components/SceneToolbarButton.js +10 -14
  45. package/dist/esm/components/SceneToolbarButton.js.map +1 -1
  46. package/dist/esm/components/VizPanel/VizPanel.js +20 -29
  47. package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
  48. package/dist/esm/components/VizPanel/VizPanelExploreButton.js +17 -13
  49. package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +1 -1
  50. package/dist/esm/components/VizPanel/VizPanelMenu.js +18 -20
  51. package/dist/esm/components/VizPanel/VizPanelMenu.js.map +1 -1
  52. package/dist/esm/components/VizPanel/VizPanelRenderer.js +92 -122
  53. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  54. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +7 -15
  55. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js.map +1 -1
  56. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +15 -29
  57. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js.map +1 -1
  58. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +3 -21
  59. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js.map +1 -1
  60. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +22 -34
  61. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js.map +1 -1
  62. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +8 -40
  63. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js.map +1 -1
  64. package/dist/esm/components/layout/LazyLoader.js +2 -35
  65. package/dist/esm/components/layout/LazyLoader.js.map +1 -1
  66. package/dist/esm/components/layout/SceneFlexLayout.js +3 -13
  67. package/dist/esm/components/layout/SceneFlexLayout.js.map +1 -1
  68. package/dist/esm/components/layout/grid/SceneGridItem.js +1 -3
  69. package/dist/esm/components/layout/grid/SceneGridItem.js.map +1 -1
  70. package/dist/esm/components/layout/grid/SceneGridLayout.js +26 -26
  71. package/dist/esm/components/layout/grid/SceneGridLayout.js.map +1 -1
  72. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +88 -104
  73. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -1
  74. package/dist/esm/components/layout/grid/SceneGridRow.js +15 -48
  75. package/dist/esm/components/layout/grid/SceneGridRow.js.map +1 -1
  76. package/dist/esm/components/layout/grid/constants.js.map +1 -1
  77. package/dist/esm/components/layout/grid/types.js.map +1 -1
  78. package/dist/esm/components/layout/grid/utils.js +3 -21
  79. package/dist/esm/components/layout/grid/utils.js.map +1 -1
  80. package/dist/esm/components/layout/split/SplitLayout.js.map +1 -1
  81. package/dist/esm/components/layout/split/SplitLayoutRenderer.js +11 -14
  82. package/dist/esm/components/layout/split/SplitLayoutRenderer.js.map +1 -1
  83. package/dist/esm/components/layout/split/Splitter.js +60 -58
  84. package/dist/esm/components/layout/split/Splitter.js.map +1 -1
  85. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js +46 -23
  86. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js.map +1 -1
  87. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js +8 -8
  88. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js.map +1 -1
  89. package/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js.map +1 -1
  90. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js +3 -0
  91. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js.map +1 -1
  92. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js +28 -28
  93. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js.map +1 -1
  94. package/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js.map +1 -1
  95. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js +39 -0
  96. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js.map +1 -1
  97. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js +32 -32
  98. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js.map +1 -1
  99. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js +82 -21
  100. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +1 -1
  101. package/dist/esm/core/PanelBuilders/index.js +32 -32
  102. package/dist/esm/core/PanelBuilders/index.js.map +1 -1
  103. package/dist/esm/core/SceneComponentWrapper.js +4 -38
  104. package/dist/esm/core/SceneComponentWrapper.js.map +1 -1
  105. package/dist/esm/core/SceneDataNode.js +4 -19
  106. package/dist/esm/core/SceneDataNode.js.map +1 -1
  107. package/dist/esm/core/SceneObjectBase.js +55 -17
  108. package/dist/esm/core/SceneObjectBase.js.map +1 -1
  109. package/dist/esm/core/SceneObjectRef.js +7 -18
  110. package/dist/esm/core/SceneObjectRef.js.map +1 -1
  111. package/dist/esm/core/SceneScopesBridge.js +15 -0
  112. package/dist/esm/core/SceneScopesBridge.js.map +1 -1
  113. package/dist/esm/core/SceneTimeRange.js +9 -17
  114. package/dist/esm/core/SceneTimeRange.js.map +1 -1
  115. package/dist/esm/core/SceneTimeRangeTransformerBase.js.map +1 -1
  116. package/dist/esm/core/SceneTimeZoneOverride.js +7 -23
  117. package/dist/esm/core/SceneTimeZoneOverride.js.map +1 -1
  118. package/dist/esm/core/events.js.map +1 -1
  119. package/dist/esm/core/sceneGraph/getQueryController.js.map +1 -1
  120. package/dist/esm/core/sceneGraph/getTimeRange.js.map +1 -1
  121. package/dist/esm/core/sceneGraph/index.js +1 -1
  122. package/dist/esm/core/sceneGraph/index.js.map +1 -1
  123. package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
  124. package/dist/esm/core/sceneGraph/utils.js +1 -17
  125. package/dist/esm/core/sceneGraph/utils.js.map +1 -1
  126. package/dist/esm/core/types.js.map +1 -1
  127. package/dist/esm/index.js +6 -5
  128. package/dist/esm/index.js.map +1 -1
  129. package/dist/esm/querying/DataLayersMerger.js.map +1 -1
  130. package/dist/esm/querying/DataProviderProxy.js.map +1 -1
  131. package/dist/esm/querying/ExtraQueryProvider.js.map +1 -1
  132. package/dist/esm/querying/RuntimeDataSource.js.map +1 -1
  133. package/dist/esm/querying/SceneDataLayerSet.js +9 -24
  134. package/dist/esm/querying/SceneDataLayerSet.js.map +1 -1
  135. package/dist/esm/querying/SceneDataTransformer.js +11 -24
  136. package/dist/esm/querying/SceneDataTransformer.js.map +1 -1
  137. package/dist/esm/querying/SceneQueryRunner.js +44 -33
  138. package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
  139. package/dist/esm/querying/extraQueryProcessingOperator.js +3 -21
  140. package/dist/esm/querying/extraQueryProcessingOperator.js.map +1 -1
  141. package/dist/esm/querying/getEnrichedDataRequest.js.map +1 -1
  142. package/dist/esm/querying/layers/SceneDataLayerBase.js +16 -19
  143. package/dist/esm/querying/layers/SceneDataLayerBase.js.map +1 -1
  144. package/dist/esm/querying/layers/SceneDataLayerControls.js +15 -21
  145. package/dist/esm/querying/layers/SceneDataLayerControls.js.map +1 -1
  146. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +12 -30
  147. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js.map +1 -1
  148. package/dist/esm/querying/layers/annotations/filterAnnotations.js +6 -23
  149. package/dist/esm/querying/layers/annotations/filterAnnotations.js.map +1 -1
  150. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +19 -29
  151. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +1 -1
  152. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +14 -34
  153. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js.map +1 -1
  154. package/dist/esm/querying/layers/annotations/utils.js +1 -17
  155. package/dist/esm/querying/layers/annotations/utils.js.map +1 -1
  156. package/dist/esm/querying/registerQueryWithController.js.map +1 -1
  157. package/dist/esm/services/SceneObjectUrlSyncConfig.js.map +1 -1
  158. package/dist/esm/services/UniqueUrlKeyMapper.js.map +1 -1
  159. package/dist/esm/services/UrlSyncContextProvider.js.map +1 -1
  160. package/dist/esm/services/UrlSyncManager.js +11 -19
  161. package/dist/esm/services/UrlSyncManager.js.map +1 -1
  162. package/dist/esm/services/useUrlSync.js.map +1 -1
  163. package/dist/esm/services/utils.js.map +1 -1
  164. package/dist/esm/utils/ControlsLabel.js +23 -47
  165. package/dist/esm/utils/ControlsLabel.js.map +1 -1
  166. package/dist/esm/utils/LoadingIndicator.js +11 -10
  167. package/dist/esm/utils/LoadingIndicator.js.map +1 -1
  168. package/dist/esm/utils/SafeSerializableSceneObject.js +7 -18
  169. package/dist/esm/utils/SafeSerializableSceneObject.js.map +1 -1
  170. package/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js.map +1 -1
  171. package/dist/esm/utils/date.js.map +1 -1
  172. package/dist/esm/utils/evaluateTimeRange.js.map +1 -1
  173. package/dist/esm/utils/explore.js.map +1 -1
  174. package/dist/esm/utils/getCompareSeriesRefId.js.map +1 -1
  175. package/dist/esm/utils/getDataSource.js.map +1 -1
  176. package/dist/esm/utils/getMessageFromError.js.map +1 -1
  177. package/dist/esm/utils/metricTree.js.map +1 -1
  178. package/dist/esm/utils/parseUrlParam.js.map +1 -1
  179. package/dist/esm/utils/utils.js.map +1 -1
  180. package/dist/esm/utils/wrapInSafeSerializableSceneObject.js.map +1 -1
  181. package/dist/esm/utils/writeSceneLog.js.map +1 -1
  182. package/dist/esm/variables/VariableDependencyConfig.js +9 -0
  183. package/dist/esm/variables/VariableDependencyConfig.js.map +1 -1
  184. package/dist/esm/variables/VariableValueRecorder.js.map +1 -1
  185. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js +13 -12
  186. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js.map +1 -1
  187. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js +129 -142
  188. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js.map +1 -1
  189. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +84 -91
  190. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
  191. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +1 -6
  192. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  193. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +195 -194
  194. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  195. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +34 -28
  196. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  197. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +28 -65
  198. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +1 -1
  199. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +29 -43
  200. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +1 -1
  201. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +2 -1
  202. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js.map +1 -1
  203. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  204. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +45 -63
  205. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  206. package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -1
  207. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js +1 -0
  208. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js.map +1 -1
  209. package/dist/esm/variables/adhoc/getAdhocOptionSearcher.js.map +1 -1
  210. package/dist/esm/variables/adhoc/patchGetAdhocFilters.js.map +1 -1
  211. package/dist/esm/variables/components/VariableValueControl.js +9 -6
  212. package/dist/esm/variables/components/VariableValueControl.js.map +1 -1
  213. package/dist/esm/variables/components/VariableValueInput.js +13 -10
  214. package/dist/esm/variables/components/VariableValueInput.js.map +1 -1
  215. package/dist/esm/variables/components/VariableValueSelect.js +90 -115
  216. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  217. package/dist/esm/variables/components/VariableValueSelectors.js +20 -37
  218. package/dist/esm/variables/components/VariableValueSelectors.js.map +1 -1
  219. package/dist/esm/variables/components/getOptionSearcher.js +1 -1
  220. package/dist/esm/variables/components/getOptionSearcher.js.map +1 -1
  221. package/dist/esm/variables/constants.js.map +1 -1
  222. package/dist/esm/variables/filter.js +6 -1
  223. package/dist/esm/variables/filter.js.map +1 -1
  224. package/dist/esm/variables/getEnrichedFiltersRequest.js.map +1 -1
  225. package/dist/esm/variables/groupby/GroupByVariable.js +106 -112
  226. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  227. package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js.map +1 -1
  228. package/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js.map +1 -1
  229. package/dist/esm/variables/interpolation/ScopedVarsVariable.js.map +1 -1
  230. package/dist/esm/variables/interpolation/defaults.js.map +1 -1
  231. package/dist/esm/variables/interpolation/fieldAccessorCache.js.map +1 -1
  232. package/dist/esm/variables/interpolation/formatRegistry.js.map +1 -1
  233. package/dist/esm/variables/interpolation/sceneInterpolator.js.map +1 -1
  234. package/dist/esm/variables/lookupVariable.js.map +1 -1
  235. package/dist/esm/variables/macros/AllVariablesMacro.js.map +1 -1
  236. package/dist/esm/variables/macros/contextMacros.js.map +1 -1
  237. package/dist/esm/variables/macros/dataMacros.js.map +1 -1
  238. package/dist/esm/variables/macros/index.js.map +1 -1
  239. package/dist/esm/variables/macros/templateProxies.js +4 -21
  240. package/dist/esm/variables/macros/templateProxies.js.map +1 -1
  241. package/dist/esm/variables/macros/timeMacros.js.map +1 -1
  242. package/dist/esm/variables/macros/types.js.map +1 -1
  243. package/dist/esm/variables/macros/urlMacros.js.map +1 -1
  244. package/dist/esm/variables/sets/SceneVariableSet.js +44 -0
  245. package/dist/esm/variables/sets/SceneVariableSet.js.map +1 -1
  246. package/dist/esm/variables/types.js.map +1 -1
  247. package/dist/esm/variables/utils.js.map +1 -1
  248. package/dist/esm/variables/variants/ConstantVariable.js +4 -23
  249. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  250. package/dist/esm/variables/variants/CustomVariable.js +4 -19
  251. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  252. package/dist/esm/variables/variants/DataSourceVariable.js +4 -19
  253. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  254. package/dist/esm/variables/variants/IntervalVariable.js +17 -29
  255. package/dist/esm/variables/variants/IntervalVariable.js.map +1 -1
  256. package/dist/esm/variables/variants/LocalValueVariable.js +8 -23
  257. package/dist/esm/variables/variants/LocalValueVariable.js.map +1 -1
  258. package/dist/esm/variables/variants/MultiValueVariable.js +16 -0
  259. package/dist/esm/variables/variants/MultiValueVariable.js.map +1 -1
  260. package/dist/esm/variables/variants/TestVariable.js +5 -19
  261. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  262. package/dist/esm/variables/variants/TextBoxVariable.js +5 -22
  263. package/dist/esm/variables/variants/TextBoxVariable.js.map +1 -1
  264. package/dist/esm/variables/variants/guards.js.map +1 -1
  265. package/dist/esm/variables/variants/query/QueryVariable.js +8 -20
  266. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  267. package/dist/esm/variables/variants/query/createQueryVariableRunner.js +6 -23
  268. package/dist/esm/variables/variants/query/createQueryVariableRunner.js.map +1 -1
  269. package/dist/esm/variables/variants/query/guards.js.map +1 -1
  270. package/dist/esm/variables/variants/query/toMetricFindValues.js.map +1 -1
  271. package/dist/esm/variables/variants/query/utils.js.map +1 -1
  272. package/dist/index.d.ts +36 -6
  273. package/dist/index.js +2037 -2799
  274. package/dist/index.js.map +1 -1
  275. package/package.json +8 -9
@@ -1,35 +1,16 @@
1
1
  import React, { forwardRef, useState, useRef, useId, useMemo, useCallback, useImperativeHandle, useEffect, useLayoutEffect } from 'react';
2
2
  import { FloatingPortal, FloatingFocusManager } from '@floating-ui/react';
3
3
  import { useStyles2, Spinner, Text } from '@grafana/ui';
4
- import { cx, css } from '@emotion/css';
4
+ import { css, cx } from '@emotion/css';
5
5
  import { isMultiValueOperator } from '../AdHocFiltersVariable.js';
6
6
  import { useVirtualizer } from '@tanstack/react-virtual';
7
7
  import { LoadingOptionsPlaceholder, OptionsErrorPlaceholder, NoOptionsPlaceholder, DropdownItem, MultiValueApplyButton } from './DropdownItem.js';
8
- import { flattenOptionGroups, setupDropdownAccessibility, VIRTUAL_LIST_ITEM_HEIGHT_WITH_DESCRIPTION, VIRTUAL_LIST_ITEM_HEIGHT, VIRTUAL_LIST_OVERSCAN, generateFilterUpdatePayload, populateInputValueOnInputTypeSwitch, switchToNextInputType, switchInputType, generatePlaceholder, ERROR_STATE_DROPDOWN_WIDTH } from './utils.js';
8
+ import { flattenOptionGroups, setupDropdownAccessibility, VIRTUAL_LIST_OVERSCAN, VIRTUAL_LIST_ITEM_HEIGHT_WITH_DESCRIPTION, VIRTUAL_LIST_ITEM_HEIGHT, generateFilterUpdatePayload, populateInputValueOnInputTypeSwitch, switchToNextInputType, switchInputType, generatePlaceholder, ERROR_STATE_DROPDOWN_WIDTH } from './utils.js';
9
9
  import { handleOptionGroups } from '../../utils.js';
10
10
  import { useFloatingInteractions, MAX_MENU_HEIGHT } from './useFloatingInteractions.js';
11
11
  import { MultiValuePill } from './MultiValuePill.js';
12
12
  import { getAdhocOptionSearcher } from '../getAdhocOptionSearcher.js';
13
13
 
14
- var __defProp = Object.defineProperty;
15
- var __defProps = Object.defineProperties;
16
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
17
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
18
- var __hasOwnProp = Object.prototype.hasOwnProperty;
19
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
20
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
21
- var __spreadValues = (a, b) => {
22
- for (var prop in b || (b = {}))
23
- if (__hasOwnProp.call(b, prop))
24
- __defNormalProp(a, prop, b[prop]);
25
- if (__getOwnPropSymbols)
26
- for (var prop of __getOwnPropSymbols(b)) {
27
- if (__propIsEnum.call(b, prop))
28
- __defNormalProp(a, prop, b[prop]);
29
- }
30
- return a;
31
- };
32
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
33
14
  const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwaysWip, handleChangeViewMode, focusOnWipInputRef, populateInputOnEdit }, parentRef) {
34
15
  var _a, _b, _c, _d;
35
16
  const [open, setOpen] = useState(false);
@@ -88,6 +69,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
88
69
  });
89
70
  }
90
71
  },
72
+ // eslint-disable-next-line react-hooks/exhaustive-deps
91
73
  []
92
74
  );
93
75
  const handleLocalMultiValueChange = useCallback((selectedItem) => {
@@ -315,6 +297,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
315
297
  setInputType,
316
298
  handleChangeViewMode,
317
299
  refs.domReference.current,
300
+ // preventing focus on filter pill only when last filter for better backspace experience
318
301
  isLastFilter ? false : void 0
319
302
  );
320
303
  setActiveIndex(null);
@@ -405,185 +388,202 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
405
388
  }
406
389
  }, [activeIndex, rowVirtualizer]);
407
390
  const keyLabel = (_b = filter == null ? void 0 : filter.keyLabel) != null ? _b : filter == null ? void 0 : filter.key;
408
- return /* @__PURE__ */ React.createElement("div", {
409
- className: styles.comboboxWrapper
410
- }, filter ? /* @__PURE__ */ React.createElement("div", {
411
- className: styles.pillWrapper
412
- }, (filter == null ? void 0 : filter.key) ? /* @__PURE__ */ React.createElement("div", {
413
- className: cx(styles.basePill, styles.keyPill)
414
- }, keyLabel) : null, (filter == null ? void 0 : filter.key) && (filter == null ? void 0 : filter.operator) && filterInputType !== "operator" ? /* @__PURE__ */ React.createElement("div", __spreadValues({
415
- id: operatorIdentifier,
416
- className: cx(
417
- styles.basePill,
418
- !filter.origin && styles.operatorPill,
419
- filter.origin && styles.keyPill,
420
- operatorIdentifier
421
- ),
422
- "aria-label": "Edit filter operator",
423
- tabIndex: filter.origin ? -1 : 0,
424
- onClick: (event) => {
425
- if (filter.origin) {
426
- handleChangeViewMode == null ? void 0 : handleChangeViewMode();
427
- return;
428
- }
429
- event.stopPropagation();
430
- setInputValue("");
431
- switchInputType("operator", setInputType, void 0, refs.domReference.current);
432
- },
433
- onKeyDown: (event) => {
434
- if (filter.origin) {
435
- return;
436
- }
437
- handleShiftTabInput(event, hasMultiValueOperator);
438
- if (event.key === "Enter") {
391
+ return /* @__PURE__ */ React.createElement("div", { className: styles.comboboxWrapper }, filter ? /* @__PURE__ */ React.createElement("div", { className: styles.pillWrapper }, (filter == null ? void 0 : filter.key) ? /* @__PURE__ */ React.createElement("div", { className: cx(styles.basePill, styles.keyPill) }, keyLabel) : null, (filter == null ? void 0 : filter.key) && (filter == null ? void 0 : filter.operator) && filterInputType !== "operator" ? /* @__PURE__ */ React.createElement(
392
+ "div",
393
+ {
394
+ id: operatorIdentifier,
395
+ className: cx(
396
+ styles.basePill,
397
+ !filter.origin && styles.operatorPill,
398
+ filter.origin && styles.keyPill,
399
+ operatorIdentifier
400
+ ),
401
+ "aria-label": "Edit filter operator",
402
+ tabIndex: filter.origin ? -1 : 0,
403
+ onClick: (event) => {
404
+ if (filter.origin) {
405
+ handleChangeViewMode == null ? void 0 : handleChangeViewMode();
406
+ return;
407
+ }
408
+ event.stopPropagation();
439
409
  setInputValue("");
440
410
  switchInputType("operator", setInputType, void 0, refs.domReference.current);
441
- }
411
+ },
412
+ onKeyDown: (event) => {
413
+ if (filter.origin) {
414
+ return;
415
+ }
416
+ handleShiftTabInput(event, hasMultiValueOperator);
417
+ if (event.key === "Enter") {
418
+ setInputValue("");
419
+ switchInputType("operator", setInputType, void 0, refs.domReference.current);
420
+ }
421
+ },
422
+ ...!filter.origin && { role: "button" }
423
+ },
424
+ filter.operator
425
+ ) : null, /* @__PURE__ */ React.createElement("div", { ref: multiValuePillWrapperRef }), isMultiValueEdit ? filterMultiValues.map((item, i) => /* @__PURE__ */ React.createElement(
426
+ MultiValuePill,
427
+ {
428
+ key: `${item.value}-${i}`,
429
+ item,
430
+ index: i,
431
+ handleRemoveMultiValue,
432
+ handleEditMultiValuePill
442
433
  }
443
- }, !filter.origin && { role: "button" }), filter.operator) : null, /* @__PURE__ */ React.createElement("div", {
444
- ref: multiValuePillWrapperRef
445
- }), isMultiValueEdit ? filterMultiValues.map((item, i) => /* @__PURE__ */ React.createElement(MultiValuePill, {
446
- key: `${item.value}-${i}`,
447
- item,
448
- index: i,
449
- handleRemoveMultiValue,
450
- handleEditMultiValuePill
451
- })) : null) : null, /* @__PURE__ */ React.createElement("input", __spreadProps(__spreadValues({}, getReferenceProps({
452
- ref: refs.setReference,
453
- onChange,
454
- value: inputValue,
455
- placeholder: generatePlaceholder(filter, filterInputType, isMultiValueEdit, isAlwaysWip),
456
- "aria-autocomplete": "list",
457
- onKeyDown(event) {
458
- if (!open) {
434
+ )) : null) : null, /* @__PURE__ */ React.createElement(
435
+ "input",
436
+ {
437
+ ...getReferenceProps({
438
+ ref: refs.setReference,
439
+ onChange,
440
+ value: inputValue,
441
+ // dynamic placeholder to display operator and/or value in filter edit mode
442
+ placeholder: generatePlaceholder(filter, filterInputType, isMultiValueEdit, isAlwaysWip),
443
+ "aria-autocomplete": "list",
444
+ onKeyDown(event) {
445
+ if (!open) {
446
+ setOpen(true);
447
+ return;
448
+ }
449
+ if (filterInputType === "operator") {
450
+ handleShiftTabInput(event);
451
+ }
452
+ handleBackspaceInput(event, isMultiValueEdit);
453
+ handleTabInput(event, isMultiValueEdit);
454
+ handleEnterInput(event, isMultiValueEdit);
455
+ }
456
+ }),
457
+ className: cx(styles.inputStyle, { [styles.loadingInputPadding]: !optionsLoading }),
458
+ onClick: (event) => {
459
+ event.stopPropagation();
460
+ setOpen(true);
461
+ },
462
+ onFocus: () => {
459
463
  setOpen(true);
460
- return;
461
- }
462
- if (filterInputType === "operator") {
463
- handleShiftTabInput(event);
464
464
  }
465
- handleBackspaceInput(event, isMultiValueEdit);
466
- handleTabInput(event, isMultiValueEdit);
467
- handleEnterInput(event, isMultiValueEdit);
468
465
  }
469
- })), {
470
- className: cx(styles.inputStyle, { [styles.loadingInputPadding]: !optionsLoading }),
471
- onClick: (event) => {
472
- event.stopPropagation();
473
- setOpen(true);
466
+ ), optionsLoading ? /* @__PURE__ */ React.createElement(Spinner, { className: styles.loadingIndicator, inline: true }) : null, /* @__PURE__ */ React.createElement(FloatingPortal, null, open && /* @__PURE__ */ React.createElement(FloatingFocusManager, { context, initialFocus: -1, visuallyHiddenDismiss: true, modal: false }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
467
+ "div",
468
+ {
469
+ style: {
470
+ ...floatingStyles,
471
+ width: `${optionsError ? ERROR_STATE_DROPDOWN_WIDTH : maxOptionWidth}px`,
472
+ transform: isMultiValueEdit ? `translate(${((_c = multiValuePillWrapperRef.current) == null ? void 0 : _c.getBoundingClientRect().left) || 0}px, ${(((_d = refs.domReference.current) == null ? void 0 : _d.getBoundingClientRect().bottom) || 0) + 10}px )` : floatingStyles.transform
473
+ },
474
+ ref: refs.setFloating,
475
+ className: styles.dropdownWrapper,
476
+ tabIndex: -1
474
477
  },
475
- onFocus: () => {
476
- setOpen(true);
477
- }
478
- })), optionsLoading ? /* @__PURE__ */ React.createElement(Spinner, {
479
- className: styles.loadingIndicator,
480
- inline: true
481
- }) : null, /* @__PURE__ */ React.createElement(FloatingPortal, null, open && /* @__PURE__ */ React.createElement(FloatingFocusManager, {
482
- context,
483
- initialFocus: -1,
484
- visuallyHiddenDismiss: true,
485
- modal: false
486
- }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
487
- style: __spreadProps(__spreadValues({}, floatingStyles), {
488
- width: `${optionsError ? ERROR_STATE_DROPDOWN_WIDTH : maxOptionWidth}px`,
489
- transform: isMultiValueEdit ? `translate(${((_c = multiValuePillWrapperRef.current) == null ? void 0 : _c.getBoundingClientRect().left) || 0}px, ${(((_d = refs.domReference.current) == null ? void 0 : _d.getBoundingClientRect().bottom) || 0) + 10}px )` : floatingStyles.transform
490
- }),
491
- ref: refs.setFloating,
492
- className: styles.dropdownWrapper,
493
- tabIndex: -1
494
- }, /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({
495
- style: {
496
- height: `${rowVirtualizer.getTotalSize() || VIRTUAL_LIST_ITEM_HEIGHT}px`
497
- }
498
- }, getFloatingProps()), {
499
- tabIndex: -1
500
- }), optionsLoading ? /* @__PURE__ */ React.createElement(LoadingOptionsPlaceholder, null) : optionsError ? /* @__PURE__ */ React.createElement(OptionsErrorPlaceholder, {
501
- handleFetchOptions: () => handleFetchOptions(filterInputType)
502
- }) : !filteredDropDownItems.length && (!allowCustomValue || filterInputType === "operator" || !inputValue) ? /* @__PURE__ */ React.createElement(NoOptionsPlaceholder, null) : rowVirtualizer.getVirtualItems().map((virtualItem) => {
503
- var _a2;
504
- const item = filteredDropDownItems[virtualItem.index];
505
- const index = virtualItem.index;
506
- if (item.options) {
507
- return /* @__PURE__ */ React.createElement("div", {
508
- key: `${item.label}+${index}`,
509
- className: cx(styles.optionGroupLabel, styles.groupTopBorder),
478
+ /* @__PURE__ */ React.createElement(
479
+ "div",
480
+ {
510
481
  style: {
511
- height: `${virtualItem.size}px`,
512
- transform: `translateY(${virtualItem.start}px)`
513
- }
514
- }, /* @__PURE__ */ React.createElement(Text, {
515
- weight: "bold",
516
- variant: "bodySmall",
517
- color: "secondary"
518
- }, item.label));
519
- }
520
- const nextItem = filteredDropDownItems[virtualItem.index + 1];
521
- const shouldAddBottomBorder = nextItem && !nextItem.group && !nextItem.options && item.group;
522
- return /* @__PURE__ */ React.createElement(DropdownItem, __spreadProps(__spreadValues({}, getItemProps({
523
- key: `${item.value}-${index}`,
524
- ref(node) {
525
- listRef.current[index] = node;
482
+ height: `${rowVirtualizer.getTotalSize() || VIRTUAL_LIST_ITEM_HEIGHT}px`
483
+ // fallback to 38px for loading/error/no options placeholders
484
+ },
485
+ ...getFloatingProps(),
486
+ tabIndex: -1
526
487
  },
527
- onClick(event) {
528
- var _a3;
529
- if (filterInputType !== "value") {
530
- event.stopPropagation();
531
- }
532
- if (isMultiValueEdit) {
533
- event.preventDefault();
534
- event.stopPropagation();
535
- handleLocalMultiValueChange(item);
536
- setInputValue("");
537
- (_a3 = refs.domReference.current) == null ? void 0 : _a3.focus();
538
- } else {
539
- model._updateFilter(
540
- filter,
541
- generateFilterUpdatePayload({
542
- filterInputType,
543
- item,
544
- filter,
545
- setFilterMultiValues,
546
- onAddCustomValue
547
- })
548
- );
549
- populateInputValueOnInputTypeSwitch({
550
- populateInputOnEdit,
551
- item,
552
- filterInputType,
553
- setInputValue,
554
- filter
555
- });
556
- switchToNextInputType(
557
- filterInputType,
558
- setInputType,
559
- handleChangeViewMode,
560
- refs.domReference.current,
561
- false
488
+ optionsLoading ? /* @__PURE__ */ React.createElement(LoadingOptionsPlaceholder, null) : optionsError ? /* @__PURE__ */ React.createElement(OptionsErrorPlaceholder, { handleFetchOptions: () => handleFetchOptions(filterInputType) }) : !filteredDropDownItems.length && (!allowCustomValue || filterInputType === "operator" || !inputValue) ? /* @__PURE__ */ React.createElement(NoOptionsPlaceholder, null) : rowVirtualizer.getVirtualItems().map((virtualItem) => {
489
+ var _a2;
490
+ const item = filteredDropDownItems[virtualItem.index];
491
+ const index = virtualItem.index;
492
+ if (item.options) {
493
+ return /* @__PURE__ */ React.createElement(
494
+ "div",
495
+ {
496
+ key: `${item.label}+${index}`,
497
+ className: cx(styles.optionGroupLabel, styles.groupTopBorder),
498
+ style: {
499
+ height: `${virtualItem.size}px`,
500
+ transform: `translateY(${virtualItem.start}px)`
501
+ }
502
+ },
503
+ /* @__PURE__ */ React.createElement(Text, { weight: "bold", variant: "bodySmall", color: "secondary" }, item.label)
562
504
  );
563
505
  }
564
- }
565
- })), {
566
- active: activeIndex === index,
567
- addGroupBottomBorder: shouldAddBottomBorder,
568
- style: {
569
- height: `${virtualItem.size}px`,
570
- transform: `translateY(${virtualItem.start}px)`
506
+ const nextItem = filteredDropDownItems[virtualItem.index + 1];
507
+ const shouldAddBottomBorder = nextItem && !nextItem.group && !nextItem.options && item.group;
508
+ return (
509
+ // key is included in getItemProps()
510
+ // eslint-disable-next-line react/jsx-key
511
+ /* @__PURE__ */ React.createElement(
512
+ DropdownItem,
513
+ {
514
+ ...getItemProps({
515
+ key: `${item.value}-${index}`,
516
+ ref(node) {
517
+ listRef.current[index] = node;
518
+ },
519
+ onClick(event) {
520
+ var _a3;
521
+ if (filterInputType !== "value") {
522
+ event.stopPropagation();
523
+ }
524
+ if (isMultiValueEdit) {
525
+ event.preventDefault();
526
+ event.stopPropagation();
527
+ handleLocalMultiValueChange(item);
528
+ setInputValue("");
529
+ (_a3 = refs.domReference.current) == null ? void 0 : _a3.focus();
530
+ } else {
531
+ model._updateFilter(
532
+ filter,
533
+ generateFilterUpdatePayload({
534
+ filterInputType,
535
+ item,
536
+ filter,
537
+ setFilterMultiValues,
538
+ onAddCustomValue
539
+ })
540
+ );
541
+ populateInputValueOnInputTypeSwitch({
542
+ populateInputOnEdit,
543
+ item,
544
+ filterInputType,
545
+ setInputValue,
546
+ filter
547
+ });
548
+ switchToNextInputType(
549
+ filterInputType,
550
+ setInputType,
551
+ handleChangeViewMode,
552
+ refs.domReference.current,
553
+ // explicitly preventing focus on filter pill due to a11y error
554
+ false
555
+ );
556
+ }
557
+ }
558
+ }),
559
+ active: activeIndex === index,
560
+ addGroupBottomBorder: shouldAddBottomBorder,
561
+ style: {
562
+ height: `${virtualItem.size}px`,
563
+ transform: `translateY(${virtualItem.start}px)`
564
+ },
565
+ "aria-setsize": filteredDropDownItems.length,
566
+ "aria-posinset": virtualItem.index + 1,
567
+ isMultiValueEdit,
568
+ checked: filterMultiValues.some((val) => val.value === item.value)
569
+ },
570
+ /* @__PURE__ */ React.createElement("span", null, item.isCustom ? "Use custom value: " : "", " ", (_a2 = item.label) != null ? _a2 : item.value),
571
+ item.description ? /* @__PURE__ */ React.createElement("div", { className: styles.descriptionText }, item.description) : null
572
+ )
573
+ );
574
+ })
575
+ )
576
+ ), isMultiValueEdit && !optionsLoading && !optionsError && filteredDropDownItems.length ? /* @__PURE__ */ React.createElement(
577
+ MultiValueApplyButton,
578
+ {
579
+ onApply: () => {
580
+ handleMultiValueFilterCommit(model, filter, filterMultiValues);
571
581
  },
572
- "aria-setsize": filteredDropDownItems.length,
573
- "aria-posinset": virtualItem.index + 1,
574
- isMultiValueEdit,
575
- checked: filterMultiValues.some((val) => val.value === item.value)
576
- }), /* @__PURE__ */ React.createElement("span", null, item.isCustom ? "Use custom value: " : "", " ", (_a2 = item.label) != null ? _a2 : item.value), item.description ? /* @__PURE__ */ React.createElement("div", {
577
- className: styles.descriptionText
578
- }, item.description) : null);
579
- }))), isMultiValueEdit && !optionsLoading && !optionsError && filteredDropDownItems.length ? /* @__PURE__ */ React.createElement(MultiValueApplyButton, {
580
- onApply: () => {
581
- handleMultiValueFilterCommit(model, filter, filterMultiValues);
582
- },
583
- floatingElement: refs.floating.current,
584
- maxOptionWidth,
585
- menuHeight: Math.min(rowVirtualizer.getTotalSize(), MAX_MENU_HEIGHT)
586
- }) : null))));
582
+ floatingElement: refs.floating.current,
583
+ maxOptionWidth,
584
+ menuHeight: Math.min(rowVirtualizer.getTotalSize(), MAX_MENU_HEIGHT)
585
+ }
586
+ ) : null))));
587
587
  });
588
588
  const getStyles = (theme) => ({
589
589
  comboboxWrapper: css({
@@ -595,7 +595,7 @@ const getStyles = (theme) => ({
595
595
  alignItems: "center",
596
596
  flexWrap: "wrap"
597
597
  }),
598
- basePill: css(__spreadProps(__spreadValues({
598
+ basePill: css({
599
599
  display: "flex",
600
600
  alignItems: "center",
601
601
  background: theme.colors.action.disabledBackground,
@@ -604,10 +604,10 @@ const getStyles = (theme) => ({
604
604
  color: theme.colors.text.primary,
605
605
  overflow: "hidden",
606
606
  whiteSpace: "nowrap",
607
- minHeight: theme.spacing(2.75)
608
- }, theme.typography.bodySmall), {
607
+ minHeight: theme.spacing(2.75),
608
+ ...theme.typography.bodySmall,
609
609
  cursor: "pointer"
610
- })),
610
+ }),
611
611
  keyPill: css({
612
612
  fontWeight: theme.typography.fontWeightBold,
613
613
  cursor: "default"
@@ -649,10 +649,11 @@ const getStyles = (theme) => ({
649
649
  borderTop: `1px solid ${theme.colors.border.weak}`
650
650
  }
651
651
  }),
652
- descriptionText: css(__spreadProps(__spreadValues({}, theme.typography.bodySmall), {
652
+ descriptionText: css({
653
+ ...theme.typography.bodySmall,
653
654
  color: theme.colors.text.secondary,
654
655
  paddingTop: theme.spacing(0.5)
655
- }))
656
+ })
656
657
  });
657
658
 
658
659
  export { AdHocCombobox };