@grafana/plugin-ui 0.10.9 → 0.11.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 (183) hide show
  1. package/dist/cjs/index.cjs +1799 -1325
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +94 -46
  4. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +42 -38
  5. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
  6. package/dist/esm/components/ConfigEditor/Auth/Auth.js +19 -14
  7. package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
  8. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +19 -15
  9. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  10. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js +52 -49
  11. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
  12. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +59 -55
  13. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
  14. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +20 -17
  15. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  16. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +28 -28
  17. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
  18. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +2 -2
  19. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
  20. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +84 -82
  21. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
  22. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js +10 -7
  23. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
  24. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +8 -2
  25. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
  26. package/dist/esm/components/ConfigEditor/Auth/utils.js +2 -1
  27. package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
  28. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +14 -11
  29. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
  30. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js +2 -2
  31. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
  32. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js +2 -2
  33. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
  34. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js +19 -11
  35. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  36. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +24 -19
  37. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
  38. package/dist/esm/components/ConfigEditor/DataSourceDescription.js +12 -2
  39. package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
  40. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js +24 -20
  41. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
  42. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +69 -60
  43. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  44. package/dist/esm/components/DataLinks/DataLink.js +104 -89
  45. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  46. package/dist/esm/components/DataLinks/DataLinks.js +48 -41
  47. package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
  48. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +9 -4
  49. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  50. package/dist/esm/components/DatePicker/DatePicker.js +6 -5
  51. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  52. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js +19 -15
  53. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  54. package/dist/esm/components/DebounceInput/DebounceInput.js +6 -5
  55. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  56. package/dist/esm/components/Plugins/PluginSignatureBadge.js +3 -2
  57. package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
  58. package/dist/esm/components/QueryEditor/AccessoryButton.js +2 -2
  59. package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
  60. package/dist/esm/components/QueryEditor/CatalogSelector.js +54 -0
  61. package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -0
  62. package/dist/esm/components/QueryEditor/ConfirmModal.js +18 -8
  63. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  64. package/dist/esm/components/QueryEditor/DatasetSelector.js +3 -2
  65. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  66. package/dist/esm/components/QueryEditor/EditorField.js +11 -3
  67. package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
  68. package/dist/esm/components/QueryEditor/EditorFieldGroup.js +2 -2
  69. package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
  70. package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
  71. package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
  72. package/dist/esm/components/QueryEditor/EditorList.js +11 -7
  73. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  74. package/dist/esm/components/QueryEditor/EditorRow.js +2 -2
  75. package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
  76. package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
  77. package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
  78. package/dist/esm/components/QueryEditor/EditorStack.js +2 -2
  79. package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
  80. package/dist/esm/components/QueryEditor/EditorSwitch.js +3 -2
  81. package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
  82. package/dist/esm/components/QueryEditor/FlexItem.js +2 -2
  83. package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
  84. package/dist/esm/components/QueryEditor/InlineSelect.js +12 -4
  85. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  86. package/dist/esm/components/QueryEditor/InputGroup.js +3 -2
  87. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  88. package/dist/esm/components/QueryEditor/QueryEditor.js +44 -37
  89. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  90. package/dist/esm/components/QueryEditor/QueryHeader.js +172 -95
  91. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  92. package/dist/esm/components/QueryEditor/RunQueryButton.js +13 -9
  93. package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
  94. package/dist/esm/components/QueryEditor/SchemaSelector.js +56 -0
  95. package/dist/esm/components/QueryEditor/SchemaSelector.js.map +1 -0
  96. package/dist/esm/components/QueryEditor/Space.js +2 -2
  97. package/dist/esm/components/QueryEditor/Space.js.map +1 -1
  98. package/dist/esm/components/QueryEditor/TableSelector.js +21 -7
  99. package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
  100. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +6 -5
  101. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  102. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +26 -18
  103. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  104. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +19 -2
  105. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  106. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +42 -38
  107. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  108. package/dist/esm/components/QueryEditor/types.js +1 -0
  109. package/dist/esm/components/QueryEditor/types.js.map +1 -1
  110. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +8 -8
  111. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
  112. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +11 -3
  113. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
  114. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
  115. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
  116. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js +2 -2
  117. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
  118. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +16 -12
  119. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  120. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +29 -20
  121. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  122. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +7 -4
  123. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
  124. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +2 -2
  125. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
  126. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -2
  127. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
  128. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +2 -2
  129. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
  130. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +4 -4
  131. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
  132. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +52 -44
  133. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  134. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +11 -2
  135. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
  136. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js +4 -3
  137. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  138. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js +6 -2
  139. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
  140. package/dist/esm/components/SQLEditor/components/SQLEditor.js +40 -34
  141. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  142. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +16 -0
  143. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -0
  144. package/dist/esm/components/SQLEditor/standardSql/definition.js +1 -0
  145. package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
  146. package/dist/esm/components/Segment/Segment.js +4 -3
  147. package/dist/esm/components/Segment/Segment.js.map +1 -1
  148. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +105 -99
  149. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  150. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +28 -27
  151. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  152. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +31 -26
  153. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
  154. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +70 -55
  155. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  156. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +11 -2
  157. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
  158. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +75 -62
  159. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  160. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +39 -28
  161. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  162. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +38 -31
  163. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  164. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +15 -14
  165. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
  166. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +35 -31
  167. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
  168. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +3 -2
  169. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
  170. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +12 -9
  171. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  172. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +2 -2
  173. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
  174. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +6 -2
  175. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  176. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +20 -12
  177. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
  178. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
  179. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
  180. package/dist/esm/index.d.ts +94 -46
  181. package/dist/esm/index.js +4 -0
  182. package/dist/esm/index.js.map +1 -1
  183. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import React__default, { useState, useMemo } from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState, useMemo } from 'react';
2
3
  import { css } from '@emotion/css';
3
4
  import { useTheme2, Field, Select } from '@grafana/ui';
4
5
  import '@grafana/data';
@@ -95,7 +96,7 @@ const AuthMethodSettings = ({
95
96
  }
96
97
  let AuthFieldsComponent = null;
97
98
  if (selected === AuthMethod.BasicAuth && basicAuth) {
98
- AuthFieldsComponent = /* @__PURE__ */ React__default.createElement(BasicAuth, { ...basicAuth, readOnly });
99
+ AuthFieldsComponent = /* @__PURE__ */ jsx(BasicAuth, { ...basicAuth, readOnly });
99
100
  } else if (selected.startsWith("custom-")) {
100
101
  AuthFieldsComponent = (_b = (_a = customMethods == null ? undefined : customMethods.find((m) => m.id === selected)) == null ? undefined : _a.component) != null ? _b : null;
101
102
  }
@@ -113,19 +114,22 @@ const AuthMethodSettings = ({
113
114
  marginTop: spacing(1.5)
114
115
  })
115
116
  };
116
- return /* @__PURE__ */ React__default.createElement(ConfigSubSection, { title, description }, /* @__PURE__ */ React__default.createElement("div", { className: styles.authMethods }, hasSelect && /* @__PURE__ */ React__default.createElement(Field, { label: "Authentication method" }, /* @__PURE__ */ React__default.createElement(
117
- Select,
118
- {
119
- inputId: "auth-method-select",
120
- options: preparedOptions,
121
- value: selected,
122
- onChange: (option) => {
123
- setAuthMethodChanged(true);
124
- onAuthMethodSelect(option.value);
125
- },
126
- disabled: readOnly
127
- }
128
- )), AuthFieldsComponent && /* @__PURE__ */ React__default.createElement("div", { className: styles.selectedMethodFields }, AuthFieldsComponent)));
117
+ return /* @__PURE__ */ jsx(ConfigSubSection, { title, description, children: /* @__PURE__ */ jsxs("div", { className: styles.authMethods, children: [
118
+ hasSelect && /* @__PURE__ */ jsx(Field, { label: "Authentication method", children: /* @__PURE__ */ jsx(
119
+ Select,
120
+ {
121
+ inputId: "auth-method-select",
122
+ options: preparedOptions,
123
+ value: selected,
124
+ onChange: (option) => {
125
+ setAuthMethodChanged(true);
126
+ onAuthMethodSelect(option.value);
127
+ },
128
+ disabled: readOnly
129
+ }
130
+ ) }),
131
+ AuthFieldsComponent && /* @__PURE__ */ jsx("div", { className: styles.selectedMethodFields, children: AuthFieldsComponent })
132
+ ] }) });
129
133
  };
130
134
 
131
135
  export { AuthMethodSettings };
@@ -1 +1 @@
1
- {"version":3,"file":"AuthMethodSettings.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx"],"sourcesContent":["import React, { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\n [AuthMethod.BasicAuth]: {\n label: 'Basic authentication',\n value: AuthMethod.BasicAuth,\n description: 'Authenticate with your data source username and password',\n },\n [AuthMethod.CrossSiteCredentials]: {\n label: 'Enable cross-site access control requests',\n value: AuthMethod.CrossSiteCredentials,\n description:\n 'Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.',\n },\n [AuthMethod.OAuthForward]: {\n label: 'Forward OAuth Identity',\n value: AuthMethod.OAuthForward,\n description:\n 'Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source',\n },\n [AuthMethod.NoAuth]: {\n label: 'No Authentication',\n value: AuthMethod.NoAuth,\n description: 'Data source is available without authentication',\n },\n};\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly,\n}: Props) => {\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n () =>\n visibleMethodsFromProps ?? [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(customMethods?.map((m) => m.id) ?? []),\n ],\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n\n const preparedOptions = useMemo(() => {\n const customOptions =\n customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description,\n };\n return acc;\n }, {}) ?? {};\n\n const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n let k: keyof typeof AuthMethod;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides?.[k],\n };\n }\n\n const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n ...customOptions,\n ...preparedDefaultOptions,\n };\n\n return visibleMethods\n .filter((method) => Boolean(allOptions[method]))\n .map((method) => {\n const option = allOptions[method];\n if (method === mostCommonMethod && hasSelect) {\n return {\n ...option,\n label: `${option.label} (most common)`,\n };\n }\n return option;\n });\n }, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);\n\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n\n let AuthFieldsComponent: ReactElement | null = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n } else if (selected.startsWith('custom-')) {\n AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n }\n\n const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n const description = hasSelect\n ? 'Choose an authentication method to access the data source'\n : (preparedOptions[0].description ?? '');\n\n const styles = {\n authMethods: css({\n marginTop: spacing(2.5),\n ...(hasSelect && {\n padding: spacing(2),\n border: `1px solid ${colors.border.weak}`,\n }),\n }),\n selectedMethodFields: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <ConfigSubSection title={title} description={description}>\n <div className={styles.authMethods}>\n {hasSelect && (\n <Field label=\"Authentication method\">\n <Select\n inputId=\"auth-method-select\"\n options={preparedOptions}\n value={selected}\n onChange={(option) => {\n setAuthMethodChanged(true);\n onAuthMethodSelect(option.value!);\n }}\n disabled={readOnly}\n />\n </Field>\n )}\n {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n </div>\n </ConfigSubSection>\n );\n};\n"],"names":["_a","React"],"mappings":"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"}
1
+ {"version":3,"file":"AuthMethodSettings.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx"],"sourcesContent":["import { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\n [AuthMethod.BasicAuth]: {\n label: 'Basic authentication',\n value: AuthMethod.BasicAuth,\n description: 'Authenticate with your data source username and password',\n },\n [AuthMethod.CrossSiteCredentials]: {\n label: 'Enable cross-site access control requests',\n value: AuthMethod.CrossSiteCredentials,\n description:\n 'Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.',\n },\n [AuthMethod.OAuthForward]: {\n label: 'Forward OAuth Identity',\n value: AuthMethod.OAuthForward,\n description:\n 'Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source',\n },\n [AuthMethod.NoAuth]: {\n label: 'No Authentication',\n value: AuthMethod.NoAuth,\n description: 'Data source is available without authentication',\n },\n};\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly,\n}: Props) => {\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n () =>\n visibleMethodsFromProps ?? [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(customMethods?.map((m) => m.id) ?? []),\n ],\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n\n const preparedOptions = useMemo(() => {\n const customOptions =\n customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description,\n };\n return acc;\n }, {}) ?? {};\n\n const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n let k: keyof typeof AuthMethod;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides?.[k],\n };\n }\n\n const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n ...customOptions,\n ...preparedDefaultOptions,\n };\n\n return visibleMethods\n .filter((method) => Boolean(allOptions[method]))\n .map((method) => {\n const option = allOptions[method];\n if (method === mostCommonMethod && hasSelect) {\n return {\n ...option,\n label: `${option.label} (most common)`,\n };\n }\n return option;\n });\n }, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);\n\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n\n let AuthFieldsComponent: ReactElement | null = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n } else if (selected.startsWith('custom-')) {\n AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n }\n\n const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n const description = hasSelect\n ? 'Choose an authentication method to access the data source'\n : (preparedOptions[0].description ?? '');\n\n const styles = {\n authMethods: css({\n marginTop: spacing(2.5),\n ...(hasSelect && {\n padding: spacing(2),\n border: `1px solid ${colors.border.weak}`,\n }),\n }),\n selectedMethodFields: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <ConfigSubSection title={title} description={description}>\n <div className={styles.authMethods}>\n {hasSelect && (\n <Field label=\"Authentication method\">\n <Select\n inputId=\"auth-method-select\"\n options={preparedOptions}\n value={selected}\n onChange={(option) => {\n setAuthMethodChanged(true);\n onAuthMethodSelect(option.value!);\n }}\n disabled={readOnly}\n />\n </Field>\n )}\n {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n </div>\n </ConfigSubSection>\n );\n};\n"],"names":["_a"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import { InlineField, Input, SecretInput } from '@grafana/ui';
4
4
  import { useCommonStyles } from '../styles.js';
@@ -23,59 +23,62 @@ const BasicAuth = ({
23
23
  marginBottom: 0
24
24
  })
25
25
  };
26
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
27
- InlineField,
28
- {
29
- className: commonStyles.inlineFieldNoMarginRight,
30
- label: userLabel,
31
- labelWidth: 24,
32
- tooltip: userTooltip,
33
- required: true,
34
- htmlFor: "basic-auth-user-input",
35
- interactive: true,
36
- grow: true,
37
- disabled: readOnly
38
- },
39
- /* @__PURE__ */ React__default.createElement(
40
- Input,
26
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
27
+ /* @__PURE__ */ jsx(
28
+ InlineField,
41
29
  {
42
- id: "basic-auth-user-input",
43
- placeholder: userPlaceholder,
44
- value: user,
45
- onChange: (e) => onUserChange(e.currentTarget.value),
46
- required: true
30
+ className: commonStyles.inlineFieldNoMarginRight,
31
+ label: userLabel,
32
+ labelWidth: 24,
33
+ tooltip: userTooltip,
34
+ required: true,
35
+ htmlFor: "basic-auth-user-input",
36
+ interactive: true,
37
+ grow: true,
38
+ disabled: readOnly,
39
+ children: /* @__PURE__ */ jsx(
40
+ Input,
41
+ {
42
+ id: "basic-auth-user-input",
43
+ placeholder: userPlaceholder,
44
+ value: user,
45
+ onChange: (e) => onUserChange(e.currentTarget.value),
46
+ required: true
47
+ }
48
+ )
47
49
  }
48
- )
49
- ), /* @__PURE__ */ React__default.createElement(
50
- InlineField,
51
- {
52
- className: cx(
53
- commonStyles.inlineFieldNoMarginRight,
54
- commonStyles.inlineFieldWithSecret,
55
- styles.lastInlineField
56
- ),
57
- label: passwordLabel,
58
- labelWidth: 24,
59
- tooltip: passwordTooltip,
60
- required: true,
61
- htmlFor: "basic-auth-password-input",
62
- interactive: true,
63
- grow: true,
64
- disabled: readOnly
65
- },
66
- /* @__PURE__ */ React__default.createElement(
67
- SecretInput,
50
+ ),
51
+ /* @__PURE__ */ jsx(
52
+ InlineField,
68
53
  {
69
- id: "basic-auth-password-input",
70
- isConfigured: passwordConfigured,
71
- onReset: readOnly ? () => {
72
- } : onPasswordReset,
73
- placeholder: passwordPlaceholder,
74
- onChange: (e) => onPasswordChange(e.currentTarget.value),
75
- required: true
54
+ className: cx(
55
+ commonStyles.inlineFieldNoMarginRight,
56
+ commonStyles.inlineFieldWithSecret,
57
+ styles.lastInlineField
58
+ ),
59
+ label: passwordLabel,
60
+ labelWidth: 24,
61
+ tooltip: passwordTooltip,
62
+ required: true,
63
+ htmlFor: "basic-auth-password-input",
64
+ interactive: true,
65
+ grow: true,
66
+ disabled: readOnly,
67
+ children: /* @__PURE__ */ jsx(
68
+ SecretInput,
69
+ {
70
+ id: "basic-auth-password-input",
71
+ isConfigured: passwordConfigured,
72
+ onReset: readOnly ? () => {
73
+ } : onPasswordReset,
74
+ placeholder: passwordPlaceholder,
75
+ onChange: (e) => onPasswordChange(e.currentTarget.value),
76
+ required: true
77
+ }
78
+ )
76
79
  }
77
80
  )
78
- ));
81
+ ] });
79
82
  };
80
83
 
81
84
  export { BasicAuth };
@@ -1 +1 @@
1
- {"version":3,"file":"BasicAuth.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/BasicAuth.tsx"],"sourcesContent":["import React from 'react';\nimport { cx, css } from '@emotion/css';\nimport { InlineField, Input, type PopoverContent, SecretInput } from '@grafana/ui';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n user?: string;\n passwordConfigured: boolean;\n userLabel?: string;\n userTooltip?: PopoverContent;\n userPlaceholder?: string;\n passwordLabel?: string;\n passwordTooltip?: PopoverContent;\n passwordPlaceholder?: string;\n onUserChange: (user: string) => void;\n onPasswordChange: (password: string) => void;\n onPasswordReset: () => void;\n readOnly: boolean;\n};\n\nexport const BasicAuth = ({\n user,\n passwordConfigured,\n userLabel = 'User',\n userTooltip = 'The username of the data source account',\n userPlaceholder = 'User',\n passwordLabel = 'Password',\n passwordTooltip = 'The password of the data source account',\n passwordPlaceholder = 'Password',\n onUserChange,\n onPasswordChange,\n onPasswordReset,\n readOnly,\n}: Props) => {\n const commonStyles = useCommonStyles();\n const styles = {\n lastInlineField: css({\n marginBottom: 0,\n }),\n };\n return (\n <>\n <InlineField\n className={commonStyles.inlineFieldNoMarginRight}\n label={userLabel}\n labelWidth={24}\n tooltip={userTooltip}\n required\n htmlFor=\"basic-auth-user-input\"\n interactive\n grow\n disabled={readOnly}\n >\n <Input\n id=\"basic-auth-user-input\"\n placeholder={userPlaceholder}\n value={user}\n onChange={(e) => onUserChange(e.currentTarget.value)}\n required\n />\n </InlineField>\n <InlineField\n className={cx(\n commonStyles.inlineFieldNoMarginRight,\n commonStyles.inlineFieldWithSecret,\n styles.lastInlineField\n )}\n label={passwordLabel}\n labelWidth={24}\n tooltip={passwordTooltip}\n required\n htmlFor=\"basic-auth-password-input\"\n interactive\n grow\n disabled={readOnly}\n >\n <SecretInput\n id=\"basic-auth-password-input\"\n isConfigured={passwordConfigured}\n onReset={readOnly ? () => {} : onPasswordReset}\n placeholder={passwordPlaceholder}\n onChange={(e) => onPasswordChange(e.currentTarget.value)}\n required\n />\n </InlineField>\n </>\n );\n};\n"],"names":["React"],"mappings":";;;;;AAoBO,MAAM,YAAY,CAAC;AAAA,EACxB,IAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAY,GAAA,MAAA;AAAA,EACZ,WAAc,GAAA,yCAAA;AAAA,EACd,eAAkB,GAAA,MAAA;AAAA,EAClB,aAAgB,GAAA,UAAA;AAAA,EAChB,eAAkB,GAAA,yCAAA;AAAA,EAClB,mBAAsB,GAAA,UAAA;AAAA,EACtB,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAa,KAAA;AACX,EAAA,MAAM,eAAe,eAAgB,EAAA;AACrC,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,iBAAiB,GAAI,CAAA;AAAA,MACnB,YAAc,EAAA;AAAA,KACf;AAAA,GACH;AACA,EAAA,uBAEIA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,WAAW,YAAa,CAAA,wBAAA;AAAA,MACxB,KAAO,EAAA,SAAA;AAAA,MACP,UAAY,EAAA,EAAA;AAAA,MACZ,OAAS,EAAA,WAAA;AAAA,MACT,QAAQ,EAAA,IAAA;AAAA,MACR,OAAQ,EAAA,uBAAA;AAAA,MACR,WAAW,EAAA,IAAA;AAAA,MACX,IAAI,EAAA,IAAA;AAAA,MACJ,QAAU,EAAA;AAAA,KAAA;AAAA,oBAEVA,cAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,uBAAA;AAAA,QACH,WAAa,EAAA,eAAA;AAAA,QACb,KAAO,EAAA,IAAA;AAAA,QACP,UAAU,CAAC,CAAA,KAAM,YAAa,CAAA,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,QACnD,QAAQ,EAAA;AAAA;AAAA;AACV,GAEF,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,EAAA;AAAA,QACT,YAAa,CAAA,wBAAA;AAAA,QACb,YAAa,CAAA,qBAAA;AAAA,QACb,MAAO,CAAA;AAAA,OACT;AAAA,MACA,KAAO,EAAA,aAAA;AAAA,MACP,UAAY,EAAA,EAAA;AAAA,MACZ,OAAS,EAAA,eAAA;AAAA,MACT,QAAQ,EAAA,IAAA;AAAA,MACR,OAAQ,EAAA,2BAAA;AAAA,MACR,WAAW,EAAA,IAAA;AAAA,MACX,IAAI,EAAA,IAAA;AAAA,MACJ,QAAU,EAAA;AAAA,KAAA;AAAA,oBAEVA,cAAA,CAAA,aAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,2BAAA;AAAA,QACH,YAAc,EAAA,kBAAA;AAAA,QACd,OAAA,EAAS,WAAW,MAAM;AAAA,SAAK,GAAA,eAAA;AAAA,QAC/B,WAAa,EAAA,mBAAA;AAAA,QACb,UAAU,CAAC,CAAA,KAAM,gBAAiB,CAAA,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,QACvD,QAAQ,EAAA;AAAA;AAAA;AACV,GAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"BasicAuth.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/BasicAuth.tsx"],"sourcesContent":["import { cx, css } from '@emotion/css';\nimport { InlineField, Input, type PopoverContent, SecretInput } from '@grafana/ui';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n user?: string;\n passwordConfigured: boolean;\n userLabel?: string;\n userTooltip?: PopoverContent;\n userPlaceholder?: string;\n passwordLabel?: string;\n passwordTooltip?: PopoverContent;\n passwordPlaceholder?: string;\n onUserChange: (user: string) => void;\n onPasswordChange: (password: string) => void;\n onPasswordReset: () => void;\n readOnly: boolean;\n};\n\nexport const BasicAuth = ({\n user,\n passwordConfigured,\n userLabel = 'User',\n userTooltip = 'The username of the data source account',\n userPlaceholder = 'User',\n passwordLabel = 'Password',\n passwordTooltip = 'The password of the data source account',\n passwordPlaceholder = 'Password',\n onUserChange,\n onPasswordChange,\n onPasswordReset,\n readOnly,\n}: Props) => {\n const commonStyles = useCommonStyles();\n const styles = {\n lastInlineField: css({\n marginBottom: 0,\n }),\n };\n return (\n <>\n <InlineField\n className={commonStyles.inlineFieldNoMarginRight}\n label={userLabel}\n labelWidth={24}\n tooltip={userTooltip}\n required\n htmlFor=\"basic-auth-user-input\"\n interactive\n grow\n disabled={readOnly}\n >\n <Input\n id=\"basic-auth-user-input\"\n placeholder={userPlaceholder}\n value={user}\n onChange={(e) => onUserChange(e.currentTarget.value)}\n required\n />\n </InlineField>\n <InlineField\n className={cx(\n commonStyles.inlineFieldNoMarginRight,\n commonStyles.inlineFieldWithSecret,\n styles.lastInlineField\n )}\n label={passwordLabel}\n labelWidth={24}\n tooltip={passwordTooltip}\n required\n htmlFor=\"basic-auth-password-input\"\n interactive\n grow\n disabled={readOnly}\n >\n <SecretInput\n id=\"basic-auth-password-input\"\n isConfigured={passwordConfigured}\n onReset={readOnly ? () => {} : onPasswordReset}\n placeholder={passwordPlaceholder}\n onChange={(e) => onPasswordChange(e.currentTarget.value)}\n required\n />\n </InlineField>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAmBO,MAAM,YAAY,CAAC;AAAA,EACxB,IAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAY,GAAA,MAAA;AAAA,EACZ,WAAc,GAAA,yCAAA;AAAA,EACd,eAAkB,GAAA,MAAA;AAAA,EAClB,aAAgB,GAAA,UAAA;AAAA,EAChB,eAAkB,GAAA,yCAAA;AAAA,EAClB,mBAAsB,GAAA,UAAA;AAAA,EACtB,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAa,KAAA;AACX,EAAA,MAAM,eAAe,eAAgB,EAAA;AACrC,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,iBAAiB,GAAI,CAAA;AAAA,MACnB,YAAc,EAAA;AAAA,KACf;AAAA,GACH;AACA,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,WAAW,YAAa,CAAA,wBAAA;AAAA,QACxB,KAAO,EAAA,SAAA;AAAA,QACP,UAAY,EAAA,EAAA;AAAA,QACZ,OAAS,EAAA,WAAA;AAAA,QACT,QAAQ,EAAA,IAAA;AAAA,QACR,OAAQ,EAAA,uBAAA;AAAA,QACR,WAAW,EAAA,IAAA;AAAA,QACX,IAAI,EAAA,IAAA;AAAA,QACJ,QAAU,EAAA,QAAA;AAAA,QAEV,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,EAAG,EAAA,uBAAA;AAAA,YACH,WAAa,EAAA,eAAA;AAAA,YACb,KAAO,EAAA,IAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,YAAa,CAAA,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,YACnD,QAAQ,EAAA;AAAA;AAAA;AACV;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,EAAA;AAAA,UACT,YAAa,CAAA,wBAAA;AAAA,UACb,YAAa,CAAA,qBAAA;AAAA,UACb,MAAO,CAAA;AAAA,SACT;AAAA,QACA,KAAO,EAAA,aAAA;AAAA,QACP,UAAY,EAAA,EAAA;AAAA,QACZ,OAAS,EAAA,eAAA;AAAA,QACT,QAAQ,EAAA,IAAA;AAAA,QACR,OAAQ,EAAA,2BAAA;AAAA,QACR,WAAW,EAAA,IAAA;AAAA,QACX,IAAI,EAAA,IAAA;AAAA,QACJ,QAAU,EAAA,QAAA;AAAA,QAEV,QAAA,kBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,EAAG,EAAA,2BAAA;AAAA,YACH,YAAc,EAAA,kBAAA;AAAA,YACd,OAAA,EAAS,WAAW,MAAM;AAAA,aAAK,GAAA,eAAA;AAAA,YAC/B,WAAa,EAAA,mBAAA;AAAA,YACb,UAAU,CAAC,CAAA,KAAM,gBAAiB,CAAA,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,YACvD,QAAQ,EAAA;AAAA;AAAA;AACV;AAAA;AACF,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import { useTheme2, InlineFieldRow, InlineField, Input, SecretInput, IconButton } from '@grafana/ui';
4
4
  import { useCommonStyles } from '../styles.js';
@@ -26,65 +26,69 @@ const CustomHeader = ({ header, onChange, onBlur, onDelete, readOnly }) => {
26
26
  margin: `0 0 3px 10px`
27
27
  })
28
28
  };
29
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(InlineFieldRow, { className: styles.container }, /* @__PURE__ */ React__default.createElement(
30
- InlineField,
31
- {
32
- label: "Header",
33
- labelWidth: 9,
34
- grow: true,
35
- className: styles.headerNameField,
36
- htmlFor: `custom-header-${header.id}-name-input`,
37
- disabled: readOnly
38
- },
39
- /* @__PURE__ */ React__default.createElement(
40
- Input,
29
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(InlineFieldRow, { className: styles.container, children: [
30
+ /* @__PURE__ */ jsx(
31
+ InlineField,
41
32
  {
42
- id: `custom-header-${header.id}-name-input`,
43
- placeholder: "X-Custom-Header",
44
- value: header.name,
45
- width: 12,
46
- onChange: (e) => onChange({ ...header, name: e.currentTarget.value }),
47
- onBlur,
48
- className: styles.input
33
+ label: "Header",
34
+ labelWidth: 9,
35
+ grow: true,
36
+ className: styles.headerNameField,
37
+ htmlFor: `custom-header-${header.id}-name-input`,
38
+ disabled: readOnly,
39
+ children: /* @__PURE__ */ jsx(
40
+ Input,
41
+ {
42
+ id: `custom-header-${header.id}-name-input`,
43
+ placeholder: "X-Custom-Header",
44
+ value: header.name,
45
+ width: 12,
46
+ onChange: (e) => onChange({ ...header, name: e.currentTarget.value }),
47
+ onBlur,
48
+ className: styles.input
49
+ }
50
+ )
49
51
  }
50
- )
51
- ), /* @__PURE__ */ React__default.createElement(
52
- InlineField,
53
- {
54
- label: "Value",
55
- labelWidth: 9,
56
- grow: true,
57
- className: cx(commonStyles.inlineFieldWithSecret, styles.headerValueField),
58
- htmlFor: `custom-header-${header.id}-value-input`,
59
- disabled: readOnly
60
- },
61
- /* @__PURE__ */ React__default.createElement(
62
- SecretInput,
52
+ ),
53
+ /* @__PURE__ */ jsx(
54
+ InlineField,
55
+ {
56
+ label: "Value",
57
+ labelWidth: 9,
58
+ grow: true,
59
+ className: cx(commonStyles.inlineFieldWithSecret, styles.headerValueField),
60
+ htmlFor: `custom-header-${header.id}-value-input`,
61
+ disabled: readOnly,
62
+ children: /* @__PURE__ */ jsx(
63
+ SecretInput,
64
+ {
65
+ id: `custom-header-${header.id}-value-input`,
66
+ isConfigured: header.configured,
67
+ placeholder: "Header value",
68
+ value: header.value,
69
+ width: 12,
70
+ onChange: (e) => onChange({ ...header, value: e.currentTarget.value }),
71
+ onReset: readOnly ? () => {
72
+ } : () => onChange({ ...header, configured: false, value: "" }),
73
+ onBlur,
74
+ className: styles.input
75
+ }
76
+ )
77
+ }
78
+ ),
79
+ /* @__PURE__ */ jsx(
80
+ IconButton,
63
81
  {
64
- id: `custom-header-${header.id}-value-input`,
65
- isConfigured: header.configured,
66
- placeholder: "Header value",
67
- value: header.value,
68
- width: 12,
69
- onChange: (e) => onChange({ ...header, value: e.currentTarget.value }),
70
- onReset: readOnly ? () => {
71
- } : () => onChange({ ...header, configured: false, value: "" }),
72
- onBlur,
73
- className: styles.input
82
+ name: "trash-alt",
83
+ tooltip: "Remove header",
84
+ tooltipPlacement: "top",
85
+ className: styles.removeHeaderBtn,
86
+ onClick: onDelete,
87
+ type: "button",
88
+ disabled: readOnly
74
89
  }
75
90
  )
76
- ), /* @__PURE__ */ React__default.createElement(
77
- IconButton,
78
- {
79
- name: "trash-alt",
80
- tooltip: "Remove header",
81
- tooltipPlacement: "top",
82
- className: styles.removeHeaderBtn,
83
- onClick: onDelete,
84
- type: "button",
85
- disabled: readOnly
86
- }
87
- )));
91
+ ] }) });
88
92
  };
89
93
 
90
94
  export { CustomHeader };
@@ -1 +1 @@
1
- {"version":3,"file":"CustomHeader.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineFieldRow, InlineField, Input, IconButton, useTheme2, SecretInput } from '@grafana/ui';\nimport type { LocalHeader } from '../types';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n header: LocalHeader;\n onChange: (header: LocalHeader) => void;\n onBlur: () => void;\n onDelete: () => void;\n readOnly: boolean;\n};\n\nexport const CustomHeader = ({ header, onChange, onBlur, onDelete, readOnly }: Props) => {\n const { spacing } = useTheme2();\n const commonStyles = useCommonStyles();\n const styles = {\n container: css({\n alignItems: 'center',\n }),\n input: css({\n minWidth: '100%',\n }),\n headerNameField: css({\n width: '40%',\n marginRight: 0,\n paddingRight: spacing(1),\n }),\n headerValueField: css({\n width: '45%',\n marginRight: 0,\n }),\n removeHeaderBtn: css({\n margin: `0 0 3px 10px`,\n }),\n };\n\n return (\n <>\n <InlineFieldRow className={styles.container}>\n <InlineField\n label=\"Header\"\n labelWidth={9}\n grow\n className={styles.headerNameField}\n htmlFor={`custom-header-${header.id}-name-input`}\n disabled={readOnly}\n >\n <Input\n id={`custom-header-${header.id}-name-input`}\n placeholder=\"X-Custom-Header\"\n value={header.name}\n width={12}\n onChange={(e) => onChange({ ...header, name: e.currentTarget.value })}\n onBlur={onBlur}\n className={styles.input}\n />\n </InlineField>\n <InlineField\n label=\"Value\"\n labelWidth={9}\n grow\n className={cx(commonStyles.inlineFieldWithSecret, styles.headerValueField)}\n htmlFor={`custom-header-${header.id}-value-input`}\n disabled={readOnly}\n >\n <SecretInput\n id={`custom-header-${header.id}-value-input`}\n isConfigured={header.configured}\n placeholder=\"Header value\"\n value={header.value}\n width={12}\n onChange={(e) => onChange({ ...header, value: e.currentTarget.value })}\n onReset={readOnly ? () => {} : () => onChange({ ...header, configured: false, value: '' })}\n onBlur={onBlur}\n className={styles.input}\n />\n </InlineField>\n <IconButton\n name=\"trash-alt\"\n tooltip=\"Remove header\"\n tooltipPlacement=\"top\"\n className={styles.removeHeaderBtn}\n onClick={onDelete}\n type=\"button\"\n disabled={readOnly}\n />\n </InlineFieldRow>\n </>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"CustomHeader.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeader.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { InlineFieldRow, InlineField, Input, IconButton, useTheme2, SecretInput } from '@grafana/ui';\nimport type { LocalHeader } from '../types';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n header: LocalHeader;\n onChange: (header: LocalHeader) => void;\n onBlur: () => void;\n onDelete: () => void;\n readOnly: boolean;\n};\n\nexport const CustomHeader = ({ header, onChange, onBlur, onDelete, readOnly }: Props) => {\n const { spacing } = useTheme2();\n const commonStyles = useCommonStyles();\n const styles = {\n container: css({\n alignItems: 'center',\n }),\n input: css({\n minWidth: '100%',\n }),\n headerNameField: css({\n width: '40%',\n marginRight: 0,\n paddingRight: spacing(1),\n }),\n headerValueField: css({\n width: '45%',\n marginRight: 0,\n }),\n removeHeaderBtn: css({\n margin: `0 0 3px 10px`,\n }),\n };\n\n return (\n <>\n <InlineFieldRow className={styles.container}>\n <InlineField\n label=\"Header\"\n labelWidth={9}\n grow\n className={styles.headerNameField}\n htmlFor={`custom-header-${header.id}-name-input`}\n disabled={readOnly}\n >\n <Input\n id={`custom-header-${header.id}-name-input`}\n placeholder=\"X-Custom-Header\"\n value={header.name}\n width={12}\n onChange={(e) => onChange({ ...header, name: e.currentTarget.value })}\n onBlur={onBlur}\n className={styles.input}\n />\n </InlineField>\n <InlineField\n label=\"Value\"\n labelWidth={9}\n grow\n className={cx(commonStyles.inlineFieldWithSecret, styles.headerValueField)}\n htmlFor={`custom-header-${header.id}-value-input`}\n disabled={readOnly}\n >\n <SecretInput\n id={`custom-header-${header.id}-value-input`}\n isConfigured={header.configured}\n placeholder=\"Header value\"\n value={header.value}\n width={12}\n onChange={(e) => onChange({ ...header, value: e.currentTarget.value })}\n onReset={readOnly ? () => {} : () => onChange({ ...header, configured: false, value: '' })}\n onBlur={onBlur}\n className={styles.input}\n />\n </InlineField>\n <IconButton\n name=\"trash-alt\"\n tooltip=\"Remove header\"\n tooltipPlacement=\"top\"\n className={styles.removeHeaderBtn}\n onClick={onDelete}\n type=\"button\"\n disabled={readOnly}\n />\n </InlineFieldRow>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import React__default, { useState, useEffect } from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState, useEffect } from 'react';
2
3
  import { css } from '@emotion/css';
3
4
  import { useTheme2, Button } from '@grafana/ui';
4
5
  import { CustomHeader } from './CustomHeader.js';
@@ -71,27 +72,29 @@ const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }) => {
71
72
  marginTop: spacing(1.5)
72
73
  })
73
74
  };
74
- return /* @__PURE__ */ React__default.createElement("div", { className: styles.container }, /* @__PURE__ */ React__default.createElement(
75
+ return /* @__PURE__ */ jsx("div", { className: styles.container, children: /* @__PURE__ */ jsxs(
75
76
  ConfigSubSection,
76
77
  {
77
78
  title: "HTTP headers",
78
79
  description: "Pass along additional context and metadata about the request/response",
79
80
  isCollapsible: true,
80
- isInitiallyOpen: headers.length > 0
81
- },
82
- /* @__PURE__ */ React__default.createElement("div", null, headers.map((header) => /* @__PURE__ */ React__default.createElement(
83
- CustomHeader,
84
- {
85
- key: header.id,
86
- header,
87
- onChange: (header2) => onHeaderChange(header2.id, header2),
88
- onDelete: () => onHeaderDelete(header.id),
89
- onBlur,
90
- readOnly
91
- }
92
- ))),
93
- /* @__PURE__ */ React__default.createElement("div", { className: styles.addHeaderButton }, /* @__PURE__ */ React__default.createElement(Button, { icon: "plus", variant: "secondary", fill: "outline", onClick: onHeaderAdd, disabled: readOnly }, headers.length === 0 ? "Add header" : "Add another header"))
94
- ));
81
+ isInitiallyOpen: headers.length > 0,
82
+ children: [
83
+ /* @__PURE__ */ jsx("div", { children: headers.map((header) => /* @__PURE__ */ jsx(
84
+ CustomHeader,
85
+ {
86
+ header,
87
+ onChange: (header2) => onHeaderChange(header2.id, header2),
88
+ onDelete: () => onHeaderDelete(header.id),
89
+ onBlur,
90
+ readOnly
91
+ },
92
+ header.id
93
+ )) }),
94
+ /* @__PURE__ */ jsx("div", { className: styles.addHeaderButton, children: /* @__PURE__ */ jsx(Button, { icon: "plus", variant: "secondary", fill: "outline", onClick: onHeaderAdd, disabled: readOnly, children: headers.length === 0 ? "Add header" : "Add another header" }) })
95
+ ]
96
+ }
97
+ ) });
95
98
  };
96
99
  function uniqueId() {
97
100
  return Math.random().toString(16).slice(2);
@@ -1 +1 @@
1
- {"version":3,"file":"CustomHeaders.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n headers: Header[];\n onChange: (headers: HeaderWithValue[]) => void;\n readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const [headers, setHeaders] = useState<LocalHeader[]>(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: '',\n }))\n );\n\n useEffect(() => {\n setHeaders((headers) => {\n let changed = false;\n const newHeaders = headers.map<LocalHeader>((header) => {\n const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n if (typeof configured !== 'undefined' && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n\n if (changed) {\n return newHeaders;\n }\n\n return headers;\n });\n }, [headersFromProps]);\n\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n };\n\n const onHeaderChange = (id: string, header: LocalHeader) => {\n setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n };\n\n const onHeaderDelete = (id: string) => {\n const index = headers.findIndex((h) => h.id === id);\n if (index === -1) {\n return;\n }\n const newHeaders = [...headers];\n newHeaders.splice(index, 1);\n setHeaders(newHeaders);\n onChange(\n newHeaders.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const styles = {\n container: css({\n marginTop: spacing(3),\n }),\n addHeaderButton: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <div className={styles.container}>\n <ConfigSubSection\n title=\"HTTP headers\"\n description=\"Pass along additional context and metadata about the request/response\"\n isCollapsible\n isInitiallyOpen={headers.length > 0}\n >\n <div>\n {headers.map((header) => (\n <CustomHeader\n key={header.id}\n header={header}\n onChange={(header) => onHeaderChange(header.id, header)}\n onDelete={() => onHeaderDelete(header.id)}\n onBlur={onBlur}\n readOnly={readOnly}\n />\n ))}\n </div>\n <div className={styles.addHeaderButton}>\n <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n {headers.length === 0 ? 'Add header' : 'Add another header'}\n </Button>\n </div>\n </ConfigSubSection>\n </div>\n );\n};\n\nfunction uniqueId(): string {\n return Math.random().toString(16).slice(2);\n}\n"],"names":["headers","React","header"],"mappings":"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"}
1
+ {"version":3,"file":"CustomHeaders.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n headers: Header[];\n onChange: (headers: HeaderWithValue[]) => void;\n readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const [headers, setHeaders] = useState<LocalHeader[]>(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: '',\n }))\n );\n\n useEffect(() => {\n setHeaders((headers) => {\n let changed = false;\n const newHeaders = headers.map<LocalHeader>((header) => {\n const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n if (typeof configured !== 'undefined' && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n\n if (changed) {\n return newHeaders;\n }\n\n return headers;\n });\n }, [headersFromProps]);\n\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n };\n\n const onHeaderChange = (id: string, header: LocalHeader) => {\n setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n };\n\n const onHeaderDelete = (id: string) => {\n const index = headers.findIndex((h) => h.id === id);\n if (index === -1) {\n return;\n }\n const newHeaders = [...headers];\n newHeaders.splice(index, 1);\n setHeaders(newHeaders);\n onChange(\n newHeaders.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const styles = {\n container: css({\n marginTop: spacing(3),\n }),\n addHeaderButton: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <div className={styles.container}>\n <ConfigSubSection\n title=\"HTTP headers\"\n description=\"Pass along additional context and metadata about the request/response\"\n isCollapsible\n isInitiallyOpen={headers.length > 0}\n >\n <div>\n {headers.map((header) => (\n <CustomHeader\n key={header.id}\n header={header}\n onChange={(header) => onHeaderChange(header.id, header)}\n onDelete={() => onHeaderDelete(header.id)}\n onBlur={onBlur}\n readOnly={readOnly}\n />\n ))}\n </div>\n <div className={styles.addHeaderButton}>\n <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n {headers.length === 0 ? 'Add header' : 'Add another header'}\n </Button>\n </div>\n </ConfigSubSection>\n </div>\n );\n};\n\nfunction uniqueId(): string {\n return Math.random().toString(16).slice(2);\n}\n"],"names":["headers","header"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { cx } from '@emotion/css';
3
3
  import { InlineField, SecretTextArea } from '@grafana/ui';
4
4
  import { TLSSettingsSection } from './TLSSettingsSection.js';
@@ -15,42 +15,42 @@ const SelfSignedCertificate = ({
15
15
  }) => {
16
16
  var _a;
17
17
  const commonStyles = useCommonStyles();
18
- return /* @__PURE__ */ React__default.createElement(
18
+ return /* @__PURE__ */ jsx(
19
19
  TLSSettingsSection,
20
20
  {
21
21
  enabled,
22
22
  label: "Add self-signed certificate",
23
23
  tooltipText: "Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures",
24
24
  onToggle: (newEnabled) => onToggle(newEnabled),
25
- readOnly
26
- },
27
- /* @__PURE__ */ React__default.createElement(
28
- InlineField,
29
- {
30
- label: "CA Certificate",
31
- labelWidth: 24,
32
- tooltip: (_a = tooltips == null ? undefined : tooltips.certificateLabel) != null ? _a : "Your self-signed certificate",
33
- required: true,
34
- htmlFor: "self-signed-certificate-input",
35
- interactive: true,
36
- grow: true,
37
- className: cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret),
38
- disabled: readOnly
39
- },
40
- /* @__PURE__ */ React__default.createElement(
41
- SecretTextArea,
25
+ readOnly,
26
+ children: /* @__PURE__ */ jsx(
27
+ InlineField,
42
28
  {
43
- id: "self-signed-certificate-input",
44
- isConfigured: certificateConfigured,
45
- onChange: (e) => onCertificateChange(e.currentTarget.value),
46
- onReset: readOnly ? () => {
47
- } : onCertificateReset,
48
- placeholder: "Begins with --- BEGIN CERTIFICATE ---",
49
- rows: 6,
50
- required: true
29
+ label: "CA Certificate",
30
+ labelWidth: 24,
31
+ tooltip: (_a = tooltips == null ? undefined : tooltips.certificateLabel) != null ? _a : "Your self-signed certificate",
32
+ required: true,
33
+ htmlFor: "self-signed-certificate-input",
34
+ interactive: true,
35
+ grow: true,
36
+ className: cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret),
37
+ disabled: readOnly,
38
+ children: /* @__PURE__ */ jsx(
39
+ SecretTextArea,
40
+ {
41
+ id: "self-signed-certificate-input",
42
+ isConfigured: certificateConfigured,
43
+ onChange: (e) => onCertificateChange(e.currentTarget.value),
44
+ onReset: readOnly ? () => {
45
+ } : onCertificateReset,
46
+ placeholder: "Begins with --- BEGIN CERTIFICATE ---",
47
+ rows: 6,
48
+ required: true
49
+ }
50
+ )
51
51
  }
52
52
  )
53
- )
53
+ }
54
54
  );
55
55
  };
56
56
 
@@ -1 +1 @@
1
- {"version":3,"file":"SelfSignedCertificate.js","sources":["../../../../../../src/components/ConfigEditor/Auth/tls/SelfSignedCertificate.tsx"],"sourcesContent":["import React from 'react';\nimport { cx } from '@emotion/css';\nimport { InlineField, SecretTextArea } from '@grafana/ui';\nimport { TLSSettingsSection } from './TLSSettingsSection';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n enabled: boolean;\n onToggle: (enabled: boolean) => void;\n certificateConfigured: boolean;\n onCertificateChange: (certificate: string) => void;\n onCertificateReset: () => void;\n tooltips?: {\n certificateLabel?: string;\n };\n readOnly: boolean;\n};\n\nexport const SelfSignedCertificate = ({\n enabled,\n certificateConfigured,\n onToggle,\n onCertificateChange,\n onCertificateReset,\n tooltips,\n readOnly,\n}: Props) => {\n const commonStyles = useCommonStyles();\n\n return (\n <TLSSettingsSection\n enabled={enabled}\n label=\"Add self-signed certificate\"\n tooltipText=\"Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures\"\n onToggle={(newEnabled) => onToggle(newEnabled)}\n readOnly={readOnly}\n >\n <InlineField\n label=\"CA Certificate\"\n labelWidth={24}\n tooltip={tooltips?.certificateLabel ?? 'Your self-signed certificate'}\n required\n htmlFor=\"self-signed-certificate-input\"\n interactive\n grow\n className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n disabled={readOnly}\n >\n <SecretTextArea\n id=\"self-signed-certificate-input\"\n isConfigured={certificateConfigured}\n onChange={(e) => onCertificateChange(e.currentTarget.value)}\n onReset={readOnly ? () => {} : onCertificateReset}\n placeholder=\"Begins with --- BEGIN CERTIFICATE ---\"\n rows={6}\n required\n />\n </InlineField>\n </TLSSettingsSection>\n );\n};\n"],"names":["React"],"mappings":";;;;;;AAkBO,MAAM,wBAAwB,CAAC;AAAA,EACpC,OAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAa,KAAA;AA1Bb,EAAA,IAAA,EAAA;AA2BE,EAAA,MAAM,eAAe,eAAgB,EAAA;AAErC,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,KAAM,EAAA,6BAAA;AAAA,MACN,WAAY,EAAA,6IAAA;AAAA,MACZ,QAAU,EAAA,CAAC,UAAe,KAAA,QAAA,CAAS,UAAU,CAAA;AAAA,MAC7C;AAAA,KAAA;AAAA,oBAEAA,cAAA,CAAA,aAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,KAAM,EAAA,gBAAA;AAAA,QACN,UAAY,EAAA,EAAA;AAAA,QACZ,OAAA,EAAA,CAAS,EAAU,GAAA,QAAA,IAAA,IAAA,GAAA,SAAA,GAAA,QAAA,CAAA,gBAAA,KAAV,IAA8B,GAAA,EAAA,GAAA,8BAAA;AAAA,QACvC,QAAQ,EAAA,IAAA;AAAA,QACR,OAAQ,EAAA,+BAAA;AAAA,QACR,WAAW,EAAA,IAAA;AAAA,QACX,IAAI,EAAA,IAAA;AAAA,QACJ,SAAW,EAAA,EAAA,CAAG,YAAa,CAAA,wBAAA,EAA0B,aAAa,qBAAqB,CAAA;AAAA,QACvF,QAAU,EAAA;AAAA,OAAA;AAAA,sBAEVA,cAAA,CAAA,aAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,EAAG,EAAA,+BAAA;AAAA,UACH,YAAc,EAAA,qBAAA;AAAA,UACd,UAAU,CAAC,CAAA,KAAM,mBAAoB,CAAA,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,UAC1D,OAAA,EAAS,WAAW,MAAM;AAAA,WAAK,GAAA,kBAAA;AAAA,UAC/B,WAAY,EAAA,uCAAA;AAAA,UACZ,IAAM,EAAA,CAAA;AAAA,UACN,QAAQ,EAAA;AAAA;AAAA;AACV;AACF,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"SelfSignedCertificate.js","sources":["../../../../../../src/components/ConfigEditor/Auth/tls/SelfSignedCertificate.tsx"],"sourcesContent":["import { cx } from '@emotion/css';\nimport { InlineField, SecretTextArea } from '@grafana/ui';\nimport { TLSSettingsSection } from './TLSSettingsSection';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n enabled: boolean;\n onToggle: (enabled: boolean) => void;\n certificateConfigured: boolean;\n onCertificateChange: (certificate: string) => void;\n onCertificateReset: () => void;\n tooltips?: {\n certificateLabel?: string;\n };\n readOnly: boolean;\n};\n\nexport const SelfSignedCertificate = ({\n enabled,\n certificateConfigured,\n onToggle,\n onCertificateChange,\n onCertificateReset,\n tooltips,\n readOnly,\n}: Props) => {\n const commonStyles = useCommonStyles();\n\n return (\n <TLSSettingsSection\n enabled={enabled}\n label=\"Add self-signed certificate\"\n tooltipText=\"Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures\"\n onToggle={(newEnabled) => onToggle(newEnabled)}\n readOnly={readOnly}\n >\n <InlineField\n label=\"CA Certificate\"\n labelWidth={24}\n tooltip={tooltips?.certificateLabel ?? 'Your self-signed certificate'}\n required\n htmlFor=\"self-signed-certificate-input\"\n interactive\n grow\n className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n disabled={readOnly}\n >\n <SecretTextArea\n id=\"self-signed-certificate-input\"\n isConfigured={certificateConfigured}\n onChange={(e) => onCertificateChange(e.currentTarget.value)}\n onReset={readOnly ? () => {} : onCertificateReset}\n placeholder=\"Begins with --- BEGIN CERTIFICATE ---\"\n rows={6}\n required\n />\n </InlineField>\n </TLSSettingsSection>\n );\n};\n"],"names":[],"mappings":";;;;;;AAiBO,MAAM,wBAAwB,CAAC;AAAA,EACpC,OAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAa,KAAA;AAzBb,EAAA,IAAA,EAAA;AA0BE,EAAA,MAAM,eAAe,eAAgB,EAAA;AAErC,EACE,uBAAA,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,KAAM,EAAA,6BAAA;AAAA,MACN,WAAY,EAAA,6IAAA;AAAA,MACZ,QAAU,EAAA,CAAC,UAAe,KAAA,QAAA,CAAS,UAAU,CAAA;AAAA,MAC7C,QAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,KAAM,EAAA,gBAAA;AAAA,UACN,UAAY,EAAA,EAAA;AAAA,UACZ,OAAA,EAAA,CAAS,EAAU,GAAA,QAAA,IAAA,IAAA,GAAA,SAAA,GAAA,QAAA,CAAA,gBAAA,KAAV,IAA8B,GAAA,EAAA,GAAA,8BAAA;AAAA,UACvC,QAAQ,EAAA,IAAA;AAAA,UACR,OAAQ,EAAA,+BAAA;AAAA,UACR,WAAW,EAAA,IAAA;AAAA,UACX,IAAI,EAAA,IAAA;AAAA,UACJ,SAAW,EAAA,EAAA,CAAG,YAAa,CAAA,wBAAA,EAA0B,aAAa,qBAAqB,CAAA;AAAA,UACvF,QAAU,EAAA,QAAA;AAAA,UAEV,QAAA,kBAAA,GAAA;AAAA,YAAC,cAAA;AAAA,YAAA;AAAA,cACC,EAAG,EAAA,+BAAA;AAAA,cACH,YAAc,EAAA,qBAAA;AAAA,cACd,UAAU,CAAC,CAAA,KAAM,mBAAoB,CAAA,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,cAC1D,OAAA,EAAS,WAAW,MAAM;AAAA,eAAK,GAAA,kBAAA;AAAA,cAC/B,WAAY,EAAA,uCAAA;AAAA,cACZ,IAAM,EAAA,CAAA;AAAA,cACN,QAAQ,EAAA;AAAA;AAAA;AACV;AAAA;AACF;AAAA,GACF;AAEJ;;;;"}
@@ -1,8 +1,8 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { TLSSettingsSection } from './TLSSettingsSection.js';
3
3
 
4
4
  const SkipTLSVerification = ({ enabled, onToggle, readOnly }) => {
5
- return /* @__PURE__ */ React__default.createElement(
5
+ return /* @__PURE__ */ jsx(
6
6
  TLSSettingsSection,
7
7
  {
8
8
  enabled,
@@ -1 +1 @@
1
- {"version":3,"file":"SkipTLSVerification.js","sources":["../../../../../../src/components/ConfigEditor/Auth/tls/SkipTLSVerification.tsx"],"sourcesContent":["import React from 'react';\nimport { TLSSettingsSection } from './TLSSettingsSection';\n\nexport type Props = {\n enabled: boolean;\n onToggle: (enabled: boolean) => void;\n readOnly: boolean;\n};\n\nexport const SkipTLSVerification = ({ enabled, onToggle, readOnly }: Props) => {\n return (\n <TLSSettingsSection\n enabled={enabled}\n label=\"Skip TLS certificate validation\"\n tooltipText=\"Skipping TLS certificate validation is not recommended unless absolutely necessary or for testing\"\n onToggle={(newEnabled) => onToggle(newEnabled)}\n readOnly={readOnly}\n />\n );\n};\n"],"names":["React"],"mappings":";;;AASO,MAAM,sBAAsB,CAAC,EAAE,OAAS,EAAA,QAAA,EAAU,UAAsB,KAAA;AAC7E,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,KAAM,EAAA,iCAAA;AAAA,MACN,WAAY,EAAA,mGAAA;AAAA,MACZ,QAAU,EAAA,CAAC,UAAe,KAAA,QAAA,CAAS,UAAU,CAAA;AAAA,MAC7C;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"SkipTLSVerification.js","sources":["../../../../../../src/components/ConfigEditor/Auth/tls/SkipTLSVerification.tsx"],"sourcesContent":["import { TLSSettingsSection } from './TLSSettingsSection';\n\nexport type Props = {\n enabled: boolean;\n onToggle: (enabled: boolean) => void;\n readOnly: boolean;\n};\n\nexport const SkipTLSVerification = ({ enabled, onToggle, readOnly }: Props) => {\n return (\n <TLSSettingsSection\n enabled={enabled}\n label=\"Skip TLS certificate validation\"\n tooltipText=\"Skipping TLS certificate validation is not recommended unless absolutely necessary or for testing\"\n onToggle={(newEnabled) => onToggle(newEnabled)}\n readOnly={readOnly}\n />\n );\n};\n"],"names":[],"mappings":";;;AAQO,MAAM,sBAAsB,CAAC,EAAE,OAAS,EAAA,QAAA,EAAU,UAAsB,KAAA;AAC7E,EACE,uBAAA,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,KAAM,EAAA,iCAAA;AAAA,MACN,WAAY,EAAA,mGAAA;AAAA,MACZ,QAAU,EAAA,CAAC,UAAe,KAAA,QAAA,CAAS,UAAU,CAAA;AAAA,MAC7C;AAAA;AAAA,GACF;AAEJ;;;;"}