This is an automated email from the ASF dual-hosted git repository.

michaelsmolina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 1f76944c2b1 fix: Add editors to ContributionConfig and additional 
properties to EditorKeyword (#38098)
1f76944c2b1 is described below

commit 1f76944c2b175a9bc2a46320bbd072fe193749fd
Author: Michael S. Molina <[email protected]>
AuthorDate: Thu Feb 19 15:00:21 2026 -0300

    fix: Add editors to ContributionConfig and additional properties to 
EditorKeyword (#38098)
---
 superset-core/src/superset_core/extensions/types.py                   | 4 ++++
 superset-frontend/packages/superset-core/src/api/editors.ts           | 4 ++++
 .../src/SqlLab/components/EditorWrapper/useKeywords.test.ts           | 4 ++--
 superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.ts  | 2 +-
 superset-frontend/src/core/editors/AceEditorProvider.tsx              | 2 ++
 .../controls/DndColumnSelectControl/ColumnSelectPopover.test.tsx      | 4 ++--
 superset-frontend/src/explore/controlUtils/getColumnKeywords.test.tsx | 2 +-
 superset-frontend/src/explore/controlUtils/getColumnKeywords.tsx      | 2 +-
 8 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/superset-core/src/superset_core/extensions/types.py 
b/superset-core/src/superset_core/extensions/types.py
index a75c3425e43..82f4d5a85eb 100644
--- a/superset-core/src/superset_core/extensions/types.py
+++ b/superset-core/src/superset_core/extensions/types.py
@@ -88,6 +88,10 @@ class ContributionConfig(BaseModel):
         default_factory=dict,
         description="Menu contributions by scope and location",
     )
+    editors: list[dict[str, Any]] = Field(
+        default_factory=list,
+        description="Editor contributions",
+    )
 
 
 class BaseExtension(BaseModel):
diff --git a/superset-frontend/packages/superset-core/src/api/editors.ts 
b/superset-frontend/packages/superset-core/src/api/editors.ts
index 94871105a31..d2b63d2beca 100644
--- a/superset-frontend/packages/superset-core/src/api/editors.ts
+++ b/superset-frontend/packages/superset-core/src/api/editors.ts
@@ -294,6 +294,10 @@ export interface EditorKeyword {
   meta?: string;
   /** Sorting priority; higher scores appear first in the completion list */
   score?: number;
+  /** Short supplementary text such as a type signature or the full value when 
truncated */
+  detail?: string;
+  /** Longer documentation content as an HTML string, shown in a documentation 
popup */
+  documentation?: string;
 }
 
 /**
diff --git 
a/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.test.ts 
b/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.test.ts
index 9aa7dcdacfd..60c6d5095f5 100644
--- a/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.test.ts
+++ b/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.test.ts
@@ -295,7 +295,7 @@ test('returns column keywords among selected tables', async 
() => {
   );
 });
 
-test('returns long keywords with docText', async () => {
+test('returns long keywords with detail', async () => {
   const expectLongKeywordDbId = 2;
   const longKeyword = 'veryveryveryveryverylongtablename';
   const dbFunctionNamesApiRoute = 
`glob:*/api/v1/database/${expectLongKeywordDbId}/function_names/`;
@@ -335,7 +335,7 @@ test('returns long keywords with docText', async () => {
       expect.objectContaining({
         name: longKeyword,
         value: longKeyword,
-        docText: longKeyword,
+        detail: longKeyword,
       }),
     ),
   );
diff --git 
a/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.ts 
b/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.ts
index 19801df7e38..52c0cd818b0 100644
--- a/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.ts
+++ b/superset-frontend/src/SqlLab/components/EditorWrapper/useKeywords.ts
@@ -55,7 +55,7 @@ const { useQueryState: useTablesQueryState } = 
tableEndpoints.tables;
 
 const getHelperText = (value: string) =>
   value.length > 30 && {
-    docText: value,
+    detail: value,
   };
 
 const extensionsRegistry = getExtensionsRegistry();
diff --git a/superset-frontend/src/core/editors/AceEditorProvider.tsx 
b/superset-frontend/src/core/editors/AceEditorProvider.tsx
index c52d0f93332..89c8a579117 100644
--- a/superset-frontend/src/core/editors/AceEditorProvider.tsx
+++ b/superset-frontend/src/core/editors/AceEditorProvider.tsx
@@ -189,6 +189,8 @@ const toAceKeyword = (keyword: EditorKeyword): 
AceCompleterKeyword => ({
   value: keyword.value ?? keyword.name,
   score: keyword.score ?? 0,
   meta: keyword.meta ?? '',
+  docText: keyword.detail,
+  docHTML: keyword.documentation,
 });
 
 /**
diff --git 
a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.test.tsx
 
b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.test.tsx
index 6129ef0f2f5..4c3d0fa13aa 100644
--- 
a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.test.tsx
+++ 
b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.test.tsx
@@ -184,13 +184,13 @@ test('passes keywords as objects to 
SQLEditorWithValidation for autocomplete', (
     expect(keyword).toHaveProperty('meta');
   });
 
-  // Verify column keywords specifically have docHTML for rich tooltips
+  // Verify column keywords specifically have documentation for rich tooltips
   const columnKeywords = keywords.filter(
     (k: Record<string, unknown>) => k.meta === 'column',
   );
   expect(columnKeywords.length).toBe(2); // We passed 2 columns
   columnKeywords.forEach((keyword: Record<string, unknown>) => {
-    expect(keyword).toHaveProperty('docHTML');
+    expect(keyword).toHaveProperty('documentation');
   });
 });
 
diff --git 
a/superset-frontend/src/explore/controlUtils/getColumnKeywords.test.tsx 
b/superset-frontend/src/explore/controlUtils/getColumnKeywords.test.tsx
index 59782ba94df..003f01e367b 100644
--- a/superset-frontend/src/explore/controlUtils/getColumnKeywords.test.tsx
+++ b/superset-frontend/src/explore/controlUtils/getColumnKeywords.test.tsx
@@ -31,7 +31,7 @@ test('returns HTML for a column tooltip', () => {
   expect(getColumnKeywords([expected])).toContainEqual({
     name: expected.column_name,
     value: expected.column_name,
-    docHTML: expect.stringContaining(expected.description),
+    documentation: expect.stringContaining(expected.description),
     score: 50,
     meta: 'column',
   });
diff --git a/superset-frontend/src/explore/controlUtils/getColumnKeywords.tsx 
b/superset-frontend/src/explore/controlUtils/getColumnKeywords.tsx
index a6ace5ae01a..584d91f02ff 100644
--- a/superset-frontend/src/explore/controlUtils/getColumnKeywords.tsx
+++ b/superset-frontend/src/explore/controlUtils/getColumnKeywords.tsx
@@ -34,7 +34,7 @@ export function getColumnKeywords(columns: ColumnMeta[]) {
     }) => ({
       name: verbose_name || column_name,
       value: column_name,
-      docHTML: getTooltipHTML({
+      documentation: getTooltipHTML({
         title: column_name,
         body: `type: ${type || 'unknown'}<br />${description ? `description: 
${description}` : ''}`,
         footer: is_certified ? t('Certified by %s', certified_by) : undefined,

Reply via email to