@grafana/plugin-ui 0.14.1-dsconfig.bccd84e → 0.14.1-dsconfig.ced809d

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 (217) hide show
  1. package/dist/cjs/index.cjs +1076 -318
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +439 -115
  4. package/dist/cjs/schemas.cjs +14853 -0
  5. package/dist/cjs/schemas.cjs.map +1 -0
  6. package/dist/cjs/schemas.d.cts +373 -0
  7. package/dist/cjs/test-utils.d.cts +23 -23
  8. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +2 -2
  9. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js +14 -9
  10. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js.map +1 -1
  11. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.js +27 -0
  12. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.js.map +1 -0
  13. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js +16 -5
  14. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js.map +1 -1
  15. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js.map +1 -1
  16. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js +9 -4
  17. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js.map +1 -1
  18. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js +61 -11
  19. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js.map +1 -1
  20. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/{useDatasourceConfigForm.js → hooks/useDatasourceConfigForm.js} +71 -29
  21. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useDatasourceConfigForm.js.map +1 -0
  22. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useHealthChecks.js +106 -0
  23. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useHealthChecks.js.map +1 -0
  24. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/{AuthorizationHeaderField.js → inputs/AuthorizationHeaderField.js} +6 -8
  25. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/AuthorizationHeaderField.js.map +1 -0
  26. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/{ComplexFieldNote.js → inputs/ComplexFieldNote.js} +6 -4
  27. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ComplexFieldNote.js.map +1 -0
  28. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/FileUploadField.js +106 -0
  29. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/FileUploadField.js.map +1 -0
  30. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/{IndexedPairEditor.js → inputs/IndexedPairEditor.js} +52 -52
  31. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/IndexedPairEditor.js.map +1 -0
  32. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ObjectArrayEditor.js +190 -0
  33. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ObjectArrayEditor.js.map +1 -0
  34. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/{PdcFieldNote.js → inputs/PdcFieldNote.js} +5 -8
  35. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/PdcFieldNote.js.map +1 -0
  36. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/{SecureFieldInput.js → inputs/SecureFieldInput.js} +8 -10
  37. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/SecureFieldInput.js.map +1 -0
  38. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/StringArrayInput.js +80 -0
  39. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/StringArrayInput.js.map +1 -0
  40. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js +76 -41
  41. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js.map +1 -1
  42. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/resolvePluginName.js +30 -0
  43. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/resolvePluginName.js.map +1 -0
  44. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/tabStyles.js +4 -4
  45. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/tabStyles.js.map +1 -1
  46. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/wizardStyles.js +3 -3
  47. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/wizardStyles.js.map +1 -1
  48. package/dist/esm/components/DataLinks/DataLink.js +2 -2
  49. package/dist/esm/components/DataLinks/DataLinks.js +2 -2
  50. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +7 -7
  51. package/dist/esm/components/DatePicker/styles.js +2 -2
  52. package/dist/esm/components/DatePickerWithInput/styles.js +2 -2
  53. package/dist/esm/components/QueryEditor/EditorField.js +2 -2
  54. package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
  55. package/dist/esm/components/QueryEditor/EditorRow.js +2 -2
  56. package/dist/esm/components/QueryEditor/EditorSwitch.js +2 -2
  57. package/dist/esm/components/QueryEditor/InputGroup.js +2 -2
  58. package/dist/esm/components/QueryEditor/Space.js +2 -2
  59. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +2 -2
  60. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +2 -2
  61. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
  62. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +2 -2
  63. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +2 -2
  64. package/dist/esm/datasource/SqlDatasource.js +10 -10
  65. package/dist/esm/datasource/schema/cel.js +42 -0
  66. package/dist/esm/datasource/schema/cel.js.map +1 -0
  67. package/dist/esm/datasource/schema/config.js +37 -14
  68. package/dist/esm/datasource/schema/config.js.map +1 -1
  69. package/dist/esm/datasource/schema/datasource.js +129 -3
  70. package/dist/esm/datasource/schema/datasource.js.map +1 -1
  71. package/dist/esm/datasource/schema/datasources/alertmanager.schema.json.js +77 -0
  72. package/dist/esm/datasource/schema/datasources/alertmanager.schema.json.js.map +1 -0
  73. package/dist/esm/datasource/schema/datasources/cloudwatch.schema.json.js +384 -0
  74. package/dist/esm/datasource/schema/datasources/cloudwatch.schema.json.js.map +1 -0
  75. package/dist/esm/datasource/schema/datasources/elasticsearch.schema.json.js +287 -0
  76. package/dist/esm/datasource/schema/datasources/elasticsearch.schema.json.js.map +1 -0
  77. package/dist/esm/datasource/schema/datasources/grafana-amazonprometheus-datasource.schema.json.js +166 -0
  78. package/dist/esm/datasource/schema/datasources/grafana-amazonprometheus-datasource.schema.json.js.map +1 -0
  79. package/dist/esm/datasource/schema/datasources/grafana-appdynamics-datasource.schema.json.js +145 -0
  80. package/dist/esm/datasource/schema/datasources/grafana-appdynamics-datasource.schema.json.js.map +1 -0
  81. package/dist/esm/datasource/schema/datasources/grafana-astradb-datasource.schema.json.js +123 -0
  82. package/dist/esm/datasource/schema/datasources/grafana-astradb-datasource.schema.json.js.map +1 -0
  83. package/dist/esm/datasource/schema/datasources/grafana-athena-datasource.schema.json.js +158 -0
  84. package/dist/esm/datasource/schema/datasources/grafana-athena-datasource.schema.json.js.map +1 -0
  85. package/dist/esm/datasource/schema/datasources/grafana-azure-data-explorer-datasource.schema.json.js +204 -0
  86. package/dist/esm/datasource/schema/datasources/grafana-azure-data-explorer-datasource.schema.json.js.map +1 -0
  87. package/dist/esm/datasource/schema/datasources/grafana-azure-monitor-datasource.schema.json.js +294 -0
  88. package/dist/esm/datasource/schema/datasources/grafana-azure-monitor-datasource.schema.json.js.map +1 -0
  89. package/dist/esm/datasource/schema/datasources/grafana-azuredevops-datasource.schema.json.js +101 -0
  90. package/dist/esm/datasource/schema/datasources/grafana-azuredevops-datasource.schema.json.js.map +1 -0
  91. package/dist/esm/datasource/schema/datasources/grafana-azureprometheus-datasource.schema.json.js +125 -0
  92. package/dist/esm/datasource/schema/datasources/grafana-azureprometheus-datasource.schema.json.js.map +1 -0
  93. package/dist/esm/datasource/schema/datasources/grafana-bigquery-datasource.schema.json.js +508 -0
  94. package/dist/esm/datasource/schema/datasources/grafana-bigquery-datasource.schema.json.js.map +1 -0
  95. package/dist/esm/datasource/schema/datasources/grafana-clickhouse-datasource.schema.json.js +1400 -0
  96. package/dist/esm/datasource/schema/datasources/grafana-clickhouse-datasource.schema.json.js.map +1 -0
  97. package/dist/esm/datasource/schema/datasources/grafana-cockroachdb-datasource.schema.json.js +302 -0
  98. package/dist/esm/datasource/schema/datasources/grafana-cockroachdb-datasource.schema.json.js.map +1 -0
  99. package/dist/esm/datasource/schema/datasources/grafana-databricks-datasource.schema.json.js +291 -0
  100. package/dist/esm/datasource/schema/datasources/grafana-databricks-datasource.schema.json.js.map +1 -0
  101. package/dist/esm/datasource/schema/datasources/grafana-datadog-datasource.schema.json.js +155 -0
  102. package/dist/esm/datasource/schema/datasources/grafana-datadog-datasource.schema.json.js.map +1 -0
  103. package/dist/esm/datasource/schema/datasources/grafana-dynatrace-datasource.schema.json.js +179 -0
  104. package/dist/esm/datasource/schema/datasources/grafana-dynatrace-datasource.schema.json.js.map +1 -0
  105. package/dist/esm/datasource/schema/datasources/grafana-falconlogscale-datasource.schema.json.js +134 -0
  106. package/dist/esm/datasource/schema/datasources/grafana-falconlogscale-datasource.schema.json.js.map +1 -0
  107. package/dist/esm/datasource/schema/datasources/grafana-github-datasource.schema.json.js +156 -0
  108. package/dist/esm/datasource/schema/datasources/grafana-github-datasource.schema.json.js.map +1 -0
  109. package/dist/esm/datasource/schema/datasources/grafana-gitlab-datasource.schema.json.js +84 -0
  110. package/dist/esm/datasource/schema/datasources/grafana-gitlab-datasource.schema.json.js.map +1 -0
  111. package/dist/esm/datasource/schema/datasources/grafana-googlesheets-datasource.schema.json.js +231 -0
  112. package/dist/esm/datasource/schema/datasources/grafana-googlesheets-datasource.schema.json.js.map +1 -0
  113. package/dist/esm/datasource/schema/datasources/grafana-honeycomb-datasource.schema.json.js +87 -0
  114. package/dist/esm/datasource/schema/datasources/grafana-honeycomb-datasource.schema.json.js.map +1 -0
  115. package/dist/esm/datasource/schema/datasources/grafana-iot-sitewise-datasource.schema.json.js +159 -0
  116. package/dist/esm/datasource/schema/datasources/grafana-iot-sitewise-datasource.schema.json.js.map +1 -0
  117. package/dist/esm/datasource/schema/datasources/grafana-jira-datasource.schema.json.js +188 -0
  118. package/dist/esm/datasource/schema/datasources/grafana-jira-datasource.schema.json.js.map +1 -0
  119. package/dist/esm/datasource/schema/datasources/grafana-looker-datasource.schema.json.js +82 -0
  120. package/dist/esm/datasource/schema/datasources/grafana-looker-datasource.schema.json.js.map +1 -0
  121. package/dist/esm/datasource/schema/datasources/grafana-mongodb-datasource.schema.json.js +278 -0
  122. package/dist/esm/datasource/schema/datasources/grafana-mongodb-datasource.schema.json.js.map +1 -0
  123. package/dist/esm/datasource/schema/datasources/grafana-mqtt-datasource.schema.json.js +168 -0
  124. package/dist/esm/datasource/schema/datasources/grafana-mqtt-datasource.schema.json.js.map +1 -0
  125. package/dist/esm/datasource/schema/datasources/grafana-newrelic-datasource.schema.json.js +129 -0
  126. package/dist/esm/datasource/schema/datasources/grafana-newrelic-datasource.schema.json.js.map +1 -0
  127. package/dist/esm/datasource/schema/datasources/grafana-odbc-datasource.schema.json.js +56 -0
  128. package/dist/esm/datasource/schema/datasources/grafana-odbc-datasource.schema.json.js.map +1 -0
  129. package/dist/esm/datasource/schema/datasources/grafana-opensearch-datasource.schema.json.js +212 -0
  130. package/dist/esm/datasource/schema/datasources/grafana-opensearch-datasource.schema.json.js.map +1 -0
  131. package/dist/esm/datasource/schema/datasources/grafana-oracle-datasource.schema.json.js +186 -0
  132. package/dist/esm/datasource/schema/datasources/grafana-oracle-datasource.schema.json.js.map +1 -0
  133. package/dist/esm/datasource/schema/datasources/grafana-pagerduty-datasource.schema.json.js +85 -0
  134. package/dist/esm/datasource/schema/datasources/grafana-pagerduty-datasource.schema.json.js.map +1 -0
  135. package/dist/esm/datasource/schema/datasources/grafana-postgresql-datasource.schema.json.js +411 -0
  136. package/dist/esm/datasource/schema/datasources/grafana-postgresql-datasource.schema.json.js.map +1 -0
  137. package/dist/esm/datasource/schema/datasources/grafana-pyroscope-datasource.schema.json.js +41 -0
  138. package/dist/esm/datasource/schema/datasources/grafana-pyroscope-datasource.schema.json.js.map +1 -0
  139. package/dist/esm/datasource/schema/datasources/grafana-redshift-datasource.schema.json.js +201 -0
  140. package/dist/esm/datasource/schema/datasources/grafana-redshift-datasource.schema.json.js.map +1 -0
  141. package/dist/esm/datasource/schema/datasources/grafana-salesforce-datasource.schema.json.js +201 -0
  142. package/dist/esm/datasource/schema/datasources/grafana-salesforce-datasource.schema.json.js.map +1 -0
  143. package/dist/esm/datasource/schema/datasources/grafana-saphana-datasource.schema.json.js +208 -0
  144. package/dist/esm/datasource/schema/datasources/grafana-saphana-datasource.schema.json.js.map +1 -0
  145. package/dist/esm/datasource/schema/datasources/grafana-sentry-datasource.schema.json.js +94 -0
  146. package/dist/esm/datasource/schema/datasources/grafana-sentry-datasource.schema.json.js.map +1 -0
  147. package/dist/esm/datasource/schema/datasources/grafana-servicenow-datasource.schema.json.js +179 -0
  148. package/dist/esm/datasource/schema/datasources/grafana-servicenow-datasource.schema.json.js.map +1 -0
  149. package/dist/esm/datasource/schema/datasources/grafana-snowflake-datasource.schema.json.js +304 -0
  150. package/dist/esm/datasource/schema/datasources/grafana-snowflake-datasource.schema.json.js.map +1 -0
  151. package/dist/esm/datasource/schema/datasources/grafana-splunk-datasource.schema.json.js +319 -0
  152. package/dist/esm/datasource/schema/datasources/grafana-splunk-datasource.schema.json.js.map +1 -0
  153. package/dist/esm/datasource/schema/datasources/grafana-splunkobservability-datasource.schema.json.js +90 -0
  154. package/dist/esm/datasource/schema/datasources/grafana-splunkobservability-datasource.schema.json.js.map +1 -0
  155. package/dist/esm/datasource/schema/datasources/grafana-strava-datasource.schema.json.js +74 -0
  156. package/dist/esm/datasource/schema/datasources/grafana-strava-datasource.schema.json.js.map +1 -0
  157. package/dist/esm/datasource/schema/datasources/grafana-sumologic-datasource.schema.json.js +102 -0
  158. package/dist/esm/datasource/schema/datasources/grafana-sumologic-datasource.schema.json.js.map +1 -0
  159. package/dist/esm/datasource/schema/datasources/grafana-surrealdb-datasource.schema.json.js +92 -0
  160. package/dist/esm/datasource/schema/datasources/grafana-surrealdb-datasource.schema.json.js.map +1 -0
  161. package/dist/esm/datasource/schema/datasources/grafana-timestream-datasource.schema.json.js +145 -0
  162. package/dist/esm/datasource/schema/datasources/grafana-timestream-datasource.schema.json.js.map +1 -0
  163. package/dist/esm/datasource/schema/datasources/grafana-wavefront-datasource.schema.json.js +80 -0
  164. package/dist/esm/datasource/schema/datasources/grafana-wavefront-datasource.schema.json.js.map +1 -0
  165. package/dist/esm/datasource/schema/datasources/grafana-x-ray-datasource.schema.json.js +112 -0
  166. package/dist/esm/datasource/schema/datasources/grafana-x-ray-datasource.schema.json.js.map +1 -0
  167. package/dist/esm/datasource/schema/datasources/grafana-yugabyte-datasource.schema.json.js +114 -0
  168. package/dist/esm/datasource/schema/datasources/grafana-yugabyte-datasource.schema.json.js.map +1 -0
  169. package/dist/esm/datasource/schema/datasources/graphite.schema.json.js +104 -0
  170. package/dist/esm/datasource/schema/datasources/graphite.schema.json.js.map +1 -0
  171. package/dist/esm/datasource/schema/datasources/influxdb.schema.json.js +717 -0
  172. package/dist/esm/datasource/schema/datasources/influxdb.schema.json.js.map +1 -0
  173. package/dist/esm/datasource/schema/datasources/jaeger.schema.json.js +59 -0
  174. package/dist/esm/datasource/schema/datasources/jaeger.schema.json.js.map +1 -0
  175. package/dist/esm/datasource/schema/datasources/loki.schema.json.js +545 -0
  176. package/dist/esm/datasource/schema/datasources/loki.schema.json.js.map +1 -0
  177. package/dist/esm/datasource/schema/datasources/marcusolsson-csv-datasource.schema.json.js +45 -0
  178. package/dist/esm/datasource/schema/datasources/marcusolsson-csv-datasource.schema.json.js.map +1 -0
  179. package/dist/esm/datasource/schema/datasources/marcusolsson-json-datasource.schema.json.js +36 -0
  180. package/dist/esm/datasource/schema/datasources/marcusolsson-json-datasource.schema.json.js.map +1 -0
  181. package/dist/esm/datasource/schema/datasources/mssql.schema.json.js +292 -0
  182. package/dist/esm/datasource/schema/datasources/mssql.schema.json.js.map +1 -0
  183. package/dist/esm/datasource/schema/datasources/mysql.schema.json.js +304 -0
  184. package/dist/esm/datasource/schema/datasources/mysql.schema.json.js.map +1 -0
  185. package/dist/esm/datasource/schema/datasources/opentsdb.schema.json.js +113 -0
  186. package/dist/esm/datasource/schema/datasources/opentsdb.schema.json.js.map +1 -0
  187. package/dist/esm/datasource/schema/datasources/prometheus.schema.json.js +783 -0
  188. package/dist/esm/datasource/schema/datasources/prometheus.schema.json.js.map +1 -0
  189. package/dist/esm/datasource/schema/datasources/stackdriver.schema.json.js +224 -0
  190. package/dist/esm/datasource/schema/datasources/stackdriver.schema.json.js.map +1 -0
  191. package/dist/esm/datasource/schema/datasources/tempo.schema.json.js +664 -0
  192. package/dist/esm/datasource/schema/datasources/tempo.schema.json.js.map +1 -0
  193. package/dist/esm/datasource/schema/datasources/yesoreyeram-infinity-datasource.schema.json.js +1073 -0
  194. package/dist/esm/datasource/schema/datasources/yesoreyeram-infinity-datasource.schema.json.js.map +1 -0
  195. package/dist/esm/datasource/schema/datasources/zipkin.schema.json.js +40 -0
  196. package/dist/esm/datasource/schema/datasources/zipkin.schema.json.js.map +1 -0
  197. package/dist/esm/datasource/schema/llmHints.js.map +1 -1
  198. package/dist/esm/datasource/schema/provisioningYaml.js +3 -1
  199. package/dist/esm/datasource/schema/provisioningYaml.js.map +1 -1
  200. package/dist/esm/datasource/schema/schemaRegistry.js +139 -0
  201. package/dist/esm/datasource/schema/schemaRegistry.js.map +1 -0
  202. package/dist/esm/index.d.ts +439 -115
  203. package/dist/esm/index.js +6 -2
  204. package/dist/esm/index.js.map +1 -1
  205. package/dist/esm/schemas.d.ts +373 -0
  206. package/dist/esm/schemas.js +2 -0
  207. package/dist/esm/schemas.js.map +1 -0
  208. package/dist/esm/test-utils.d.ts +23 -23
  209. package/package.json +23 -6
  210. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/AuthorizationHeaderField.js.map +0 -1
  211. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/ComplexFieldNote.js.map +0 -1
  212. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/IndexedPairEditor.js.map +0 -1
  213. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/PdcFieldNote.js.map +0 -1
  214. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SecureFieldInput.js.map +0 -1
  215. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/StringArrayInput.js +0 -84
  216. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/StringArrayInput.js.map +0 -1
  217. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/useDatasourceConfigForm.js.map +0 -1
@@ -1,84 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { css } from '@emotion/css';
3
- import { useStyles2, Icon, Input } from '@grafana/ui';
4
-
5
- function StringArrayInput({
6
- value,
7
- onChange,
8
- placeholder,
9
- disabled
10
- }) {
11
- const [draft, setDraft] = useState("");
12
- const styles = useStyles2(getStyles$e);
13
- const addTag = () => {
14
- const trimmed = draft.trim();
15
- if (trimmed && !value.includes(trimmed)) {
16
- onChange([...value, trimmed]);
17
- }
18
- setDraft("");
19
- };
20
- const removeTag = (tag) => {
21
- onChange(value.filter((v) => v !== tag));
22
- };
23
- return /* @__PURE__ */ React.createElement("div", { className: styles.container }, value.length > 0 && /* @__PURE__ */ React.createElement("div", { className: styles.tags }, value.map((tag) => /* @__PURE__ */ React.createElement("span", { key: tag, className: styles.tag }, tag, !disabled && /* @__PURE__ */ React.createElement(
24
- "button",
25
- {
26
- type: "button",
27
- className: styles.tagRemove,
28
- onClick: () => removeTag(tag),
29
- "aria-label": `Remove ${tag}`
30
- },
31
- /* @__PURE__ */ React.createElement(Icon, { name: "times", size: "xs" })
32
- )))), /* @__PURE__ */ React.createElement(
33
- Input,
34
- {
35
- value: draft,
36
- onChange: (e) => setDraft(e.currentTarget.value),
37
- onKeyDown: (e) => {
38
- if (e.key === "Enter") {
39
- e.preventDefault();
40
- addTag();
41
- }
42
- },
43
- onBlur: addTag,
44
- placeholder,
45
- disabled
46
- }
47
- ));
48
- }
49
- const getStyles$e = (theme) => ({
50
- container: css({
51
- display: "flex",
52
- flexDirection: "column",
53
- gap: theme.spacing(0.5)
54
- }),
55
- tags: css({
56
- display: "flex",
57
- flexWrap: "wrap",
58
- gap: theme.spacing(0.5)
59
- }),
60
- tag: css({
61
- display: "inline-flex",
62
- alignItems: "center",
63
- gap: theme.spacing(0.25),
64
- padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,
65
- borderRadius: theme.shape.radius.pill,
66
- backgroundColor: theme.colors.background.secondary,
67
- border: `1px solid ${theme.colors.border.weak}`,
68
- fontSize: theme.typography.bodySmall.fontSize,
69
- color: theme.colors.text.primary
70
- }),
71
- tagRemove: css({
72
- display: "inline-flex",
73
- alignItems: "center",
74
- padding: 0,
75
- border: "none",
76
- backgroundColor: "transparent",
77
- cursor: "pointer",
78
- color: theme.colors.text.secondary,
79
- "&:hover": { color: theme.colors.text.primary }
80
- })
81
- });
82
-
83
- export { StringArrayInput };
84
- //# sourceMappingURL=StringArrayInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StringArrayInput.js","sources":["../../../../../src/components/ConfigEditor/DatasourceConfigWizard/StringArrayInput.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { css } from '@emotion/css';\nimport type { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, Input, Icon } from '@grafana/ui';\n\nexport function StringArrayInput({\n value,\n onChange,\n placeholder,\n disabled,\n}: {\n value: string[];\n onChange: (v: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n}) {\n const [draft, setDraft] = useState('');\n const styles = useStyles2(getStyles);\n\n const addTag = () => {\n const trimmed = draft.trim();\n if (trimmed && !value.includes(trimmed)) {\n onChange([...value, trimmed]);\n }\n setDraft('');\n };\n\n const removeTag = (tag: string) => {\n onChange(value.filter((v) => v !== tag));\n };\n\n return (\n <div className={styles.container}>\n {value.length > 0 && (\n <div className={styles.tags}>\n {value.map((tag) => (\n <span key={tag} className={styles.tag}>\n {tag}\n {!disabled && (\n <button\n type=\"button\"\n className={styles.tagRemove}\n onClick={() => removeTag(tag)}\n aria-label={`Remove ${tag}`}\n >\n <Icon name=\"times\" size=\"xs\" />\n </button>\n )}\n </span>\n ))}\n </div>\n )}\n <Input\n value={draft}\n onChange={(e) => setDraft(e.currentTarget.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n addTag();\n }\n }}\n onBlur={addTag}\n placeholder={placeholder}\n disabled={disabled}\n />\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n }),\n tags: css({\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(0.5),\n }),\n tag: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.25),\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,\n borderRadius: theme.shape.radius.pill,\n backgroundColor: theme.colors.background.secondary,\n border: `1px solid ${theme.colors.border.weak}`,\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.primary,\n }),\n tagRemove: css({\n display: 'inline-flex',\n alignItems: 'center',\n padding: 0,\n border: 'none',\n backgroundColor: 'transparent',\n cursor: 'pointer',\n color: theme.colors.text.secondary,\n '&:hover': { color: theme.colors.text.primary },\n }),\n});\n"],"names":["getStyles"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDatasourceConfigForm.js","sources":["../../../../../src/components/ConfigEditor/DatasourceConfigWizard/useDatasourceConfigForm.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport {\n resolveGroups,\n resolveRequiredFieldsGroup,\n parseDependsOn,\n computeVirtualFieldValues,\n formKey,\n type ConfigField,\n type ConfigGroup,\n type DatasourceConfigSchema,\n} from '../../../datasource/schema/config';\nimport {\n SECURE_FIELD_CONFIGURED,\n fetchExistingValues,\n submitDatasourceConfig,\n} from '../../../datasource/schema/datasource';\nimport type { FormValues } from '../../../datasource/schema/types';\nimport { evaluateEffectCondition, isFieldRequired } from './fieldUtils';\n\nexport type DatasourceConfigFormOptions = {\n schema: DatasourceConfigSchema;\n dsUid: string;\n onSuccess: (status: string, message?: string) => void;\n onSaving?: (saving: boolean) => void;\n};\n\nexport type ResolvedGroup = { group: ConfigGroup; fields: ConfigField[] };\n\nexport function useDatasourceConfigForm({ schema, dsUid, onSuccess, onSaving }: DatasourceConfigFormOptions) {\n const [submitting, setSubmitting] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n const [initializing, setInitializing] = useState(true);\n const [fetchError, setFetchError] = useState<string | null>(null);\n const [detectedReadOnly, setDetectedReadOnly] = useState(false);\n const readOnly = detectedReadOnly;\n\n const resolvedGroups: ResolvedGroup[] = useMemo(() => {\n const groups = resolveGroups(schema);\n const requiredGroup = resolveRequiredFieldsGroup(schema);\n if (!requiredGroup) {\n return groups;\n }\n return [requiredGroup, ...groups];\n }, [schema]);\n\n const fieldById = useMemo(() => {\n const m = new Map<string, ConfigField>();\n for (const f of schema.fields) {\n m.set(f.id, f);\n }\n return m;\n }, [schema.fields]);\n\n const httpHeadersField = useMemo(\n () => schema.fields.find((f) => f.key === 'httpHeaders' && f.storage?.type === 'indexedPair') ?? null,\n [schema.fields]\n );\n\n const allStorageFields = useMemo(\n () => schema.fields.filter((f) => f.kind !== 'virtual' && !f.isItemField && f.target),\n [schema.fields]\n );\n\n const {\n control,\n handleSubmit,\n watch,\n reset,\n trigger,\n setValue,\n formState: { errors },\n } = useForm<FormValues>({ mode: 'onChange' });\n\n const fieldsWithEffects = useMemo(() => {\n const result: Array<{\n sourceKey: string;\n effects: Array<{ when: string; targets: Array<{ key: string; value: unknown }> }>;\n }> = [];\n for (const field of schema.fields) {\n if (!field.effects || field.effects.length === 0) {\n continue;\n }\n const mapped = field.effects.map((eff) => ({\n when: eff.when,\n targets: Object.entries(eff.set).map(([targetId, val]) => {\n const targetField = fieldById.get(targetId);\n return { key: targetField ? formKey(targetField) : targetId, value: val };\n }),\n }));\n result.push({ sourceKey: formKey(field), effects: mapped });\n }\n return result;\n }, [schema.fields, fieldById]);\n\n // Load existing values on mount\n useEffect(() => {\n let cancelled = false;\n fetchExistingValues(dsUid, allStorageFields).then((result) => {\n if (cancelled) {\n return;\n }\n if (result.error) {\n setFetchError(result.error);\n setInitializing(false);\n return;\n }\n if (result.readOnly) {\n setDetectedReadOnly(true);\n }\n const defaults: FormValues = {};\n for (const field of allStorageFields) {\n if (field.defaultValue !== undefined) {\n defaults[formKey(field)] = field.defaultValue;\n }\n }\n const merged = { ...defaults, ...result.values };\n const virtualValues = computeVirtualFieldValues(schema, merged);\n reset({ ...merged, ...virtualValues });\n setInitializing(false);\n });\n return () => {\n cancelled = true;\n };\n }, [dsUid, allStorageFields, schema, reset]);\n\n const watchedValues = watch();\n\n // Apply field effects\n const prevEffectValuesRef = useRef<Record<string, unknown>>({});\n useEffect(() => {\n if (initializing) {\n return;\n }\n for (const { sourceKey, effects } of fieldsWithEffects) {\n const currentVal = watchedValues[sourceKey];\n const prevVal = prevEffectValuesRef.current[sourceKey];\n if (currentVal === prevVal) {\n continue;\n }\n prevEffectValuesRef.current[sourceKey] = currentVal;\n for (const eff of effects) {\n if (evaluateEffectCondition(eff.when, currentVal)) {\n for (const { key, value } of eff.targets) {\n setValue(key, value);\n }\n break;\n }\n }\n }\n }, [watchedValues, fieldsWithEffects, initializing, setValue]);\n\n // Override defaults\n const fieldsWithOverrideDefaults = useMemo(() => {\n const result: Array<{\n targetKey: string;\n fieldDefault: unknown;\n overrides: Array<{ depKey: string; depValue: string; defaultValue: unknown }>;\n }> = [];\n for (const field of schema.fields) {\n if (!field.overrides || field.overrides.length === 0) {\n continue;\n }\n const ovs = field.overrides\n .filter((ov) => ov.defaultValue !== undefined)\n .map((ov) => {\n const parsed = parseDependsOn(ov.when);\n if (!parsed) {\n return null;\n }\n const depField = fieldById.get(parsed.field);\n return {\n depKey: depField ? formKey(depField) : parsed.field,\n depValue: parsed.value,\n defaultValue: ov.defaultValue,\n };\n })\n .filter(Boolean) as Array<{ depKey: string; depValue: string; defaultValue: unknown }>;\n if (ovs.length > 0) {\n result.push({ targetKey: formKey(field), fieldDefault: field.defaultValue, overrides: ovs });\n }\n }\n return result;\n }, [schema.fields, fieldById]);\n\n const prevOverrideDepRef = useRef<Record<string, string>>({});\n useEffect(() => {\n if (initializing) {\n return;\n }\n for (const { targetKey, fieldDefault, overrides } of fieldsWithOverrideDefaults) {\n for (const ov of overrides) {\n const currentDepVal = String(watchedValues[ov.depKey] ?? '');\n const trackKey = `${targetKey}::${ov.depKey}`;\n const prevDepVal = prevOverrideDepRef.current[trackKey];\n if (currentDepVal === prevDepVal) {\n continue;\n }\n prevOverrideDepRef.current[trackKey] = currentDepVal;\n if (currentDepVal === ov.depValue) {\n setValue(targetKey, ov.defaultValue);\n } else if (prevDepVal === ov.depValue && fieldDefault !== undefined) {\n setValue(targetKey, fieldDefault);\n }\n }\n }\n }, [watchedValues, fieldsWithOverrideDefaults, initializing, setValue]);\n\n const isFieldVisible = useCallback(\n (field: ConfigField): boolean => {\n if (field.kind === 'virtual' && !field.ui) {\n return false;\n }\n if (field.tags?.some((t) => t.startsWith('managed-by:'))) {\n return false;\n }\n if (!field.dependsOn) {\n return true;\n }\n const parsed = parseDependsOn(field.dependsOn);\n if (!parsed) {\n return true;\n }\n const depField = fieldById.get(parsed.field);\n const depKey = depField ? formKey(depField) : parsed.field;\n return String(watchedValues[depKey] ?? '') === parsed.value;\n },\n [watchedValues, fieldById]\n );\n\n const onSubmit = useCallback(\n async (data: FormValues) => {\n setSubmitting(true);\n setSubmitError(null);\n onSaving?.(true);\n const minDelay = new Promise((r) => setTimeout(r, 2000));\n\n try {\n await submitDatasourceConfig(dsUid, data, allStorageFields, isFieldVisible);\n const [refreshed] = await Promise.all([fetchExistingValues(dsUid, allStorageFields), minDelay]);\n const defaults: FormValues = {};\n for (const field of allStorageFields) {\n if (field.defaultValue !== undefined) {\n defaults[formKey(field)] = field.defaultValue;\n }\n }\n const merged = { ...defaults, ...refreshed.values };\n const virtualValues = computeVirtualFieldValues(schema, merged);\n reset({ ...merged, ...virtualValues });\n onSuccess('UPDATED', 'Configuration saved.');\n } catch (err: unknown) {\n await minDelay;\n setSubmitError(err instanceof Error ? err.message : 'Failed to update datasource');\n } finally {\n setSubmitting(false);\n onSaving?.(false);\n }\n },\n [dsUid, allStorageFields, isFieldVisible, schema, reset, onSuccess, onSaving]\n );\n\n /** Check if a group has any visible required fields that are empty. */\n const isGroupValid = useCallback(\n (group: ResolvedGroup): boolean => {\n for (const field of group.fields) {\n if (!isFieldVisible(field)) {\n continue;\n }\n if (errors[formKey(field)]) {\n return false;\n }\n if (isFieldRequired(field, watchedValues, fieldById)) {\n const val = watchedValues[formKey(field)];\n if (val === SECURE_FIELD_CONFIGURED) {\n continue;\n }\n if (val === undefined || val === null || val === '') {\n return false;\n }\n }\n }\n return true;\n },\n [errors, watchedValues, fieldById, isFieldVisible]\n );\n\n /** Check if a group has any fields with non-default/non-empty values. */\n const groupHasData = useCallback(\n (group: ResolvedGroup): boolean => {\n for (const field of group.fields) {\n const val = watchedValues[formKey(field)];\n if (val === undefined || val === null || val === '' || val === false) {\n continue;\n }\n if (val === field.defaultValue) {\n continue;\n }\n return true;\n }\n return false;\n },\n [watchedValues]\n );\n\n return {\n // Schema\n resolvedGroups,\n fieldById,\n httpHeadersField,\n // Form\n control,\n handleSubmit,\n trigger,\n errors,\n watchedValues,\n // State\n initializing,\n fetchError,\n submitting,\n submitError,\n readOnly,\n // Callbacks\n isFieldVisible,\n isGroupValid,\n groupHasData,\n onSubmit,\n };\n}\n"],"names":["_a"],"mappings":"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"}