This is an automated email from the ASF dual-hosted git repository. rusackas pushed a commit to branch fix-datasource-editor-sort-and-stale-sql in repository https://gitbox.apache.org/repos/asf/superset.git
commit d11b023b9ff889ed170d29b81c66421dfc274df6 Author: Evan Rusackas <[email protected]> AuthorDate: Thu Oct 1 04:21:13 2026 -0700 fix(dataset-editor): type editor callbacks, fix ambiguous modal-trigger test query TextAreaEditor's onLoad/onChange prop types resolve to any through the AsyncAceEditor HOC, so the wrapping arrow functions need explicit param types to satisfy noImplicitAny. The new "edit in modal" test matched role="button" by accessible name, but ModalTrigger wraps a <Button> triggerNode in its own role="button" div, producing two matches; target the wrapper's data-test id instead, consistent with the existing close-modal-btn query. Co-Authored-By: Evan Rusackas <[email protected]> Co-Authored-By: Claude Sonnet 5 <[email protected]> --- .../src/explore/components/controls/TextAreaControl.test.tsx | 6 +++++- .../src/explore/components/controls/TextAreaControl.tsx | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/superset-frontend/src/explore/components/controls/TextAreaControl.test.tsx b/superset-frontend/src/explore/components/controls/TextAreaControl.test.tsx index ae6d33c8a7a..88003970373 100644 --- a/superset-frontend/src/explore/components/controls/TextAreaControl.test.tsx +++ b/superset-frontend/src/explore/components/controls/TextAreaControl.test.tsx @@ -178,7 +178,11 @@ describe('TextArea', () => { // mounts and is destroyed (destroyOnHidden) in the process; this used // to leave the single shared editor ref pointing at that destroyed // instance instead of the still-visible inline editor. - fireEvent.click(screen.getByRole('button', { name: /edit.*in modal/i })); + // ModalTrigger wraps its triggerNode in its own role="button" element, + // so a <Button> triggerNode (as used here) yields two nested elements + // matching role "button" with the same accessible name; target the + // wrapper directly via its data-test id instead. + fireEvent.click(screen.getByTestId('span-modal-trigger')); await waitFor(() => { expect(container.querySelectorAll('.ace_editor')).toHaveLength(2); }); diff --git a/superset-frontend/src/explore/components/controls/TextAreaControl.tsx b/superset-frontend/src/explore/components/controls/TextAreaControl.tsx index 82670b20bda..96467b8b9dc 100644 --- a/superset-frontend/src/explore/components/controls/TextAreaControl.tsx +++ b/superset-frontend/src/explore/components/controls/TextAreaControl.tsx @@ -300,12 +300,16 @@ function TextAreaControl({ minLines={effectiveMinLines} maxLines={inModal ? 1000 : maxLines} editorProps={{ $blockScrolling: true }} - onLoad={editor => onEditorLoad(editor, inModal)} + onLoad={(editor: AceEditorHandle) => + onEditorLoad(editor, inModal) + } defaultValue={initialValue ?? value} readOnly={readOnly} key={name} {...restProps} - onChange={val => handleChange(val, inModal)} + onChange={(val: string | { target: { value: string } }) => + handleChange(val, inModal) + } /> </div> </EditorUnmountGuard>
