fix(types): fix remaining TypeScript errors in filter components

- Fix AdhocFilterEditPopover deck_slices and layerFilterScope type casts
- Fix AdhocFilterEditPopover.test.tsx faultyAdhocFilter expressionType
- Fix findByRole options in test (remove unsupported disabled option)
- Add proper type for renderPopover props parameter
- Import AdhocFilterClass type for FiltersConfigForm onChange callback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Evan Rusackas
2025-12-19 09:49:50 -08:00
parent 6cd18d4d2e
commit 586e03cb80
3 changed files with 10 additions and 10 deletions

View File

@@ -78,6 +78,7 @@ import {
} from 'src/dashboard/types';
import DateFilterControl from 'src/explore/components/controls/DateFilterControl';
import AdhocFilterControl from 'src/explore/components/controls/FilterControl/AdhocFilterControl';
import type AdhocFilterClass from 'src/explore/components/controls/FilterControl/AdhocFilter';
import { waitForAsyncData } from 'src/middleware/asyncEvent';
import { SingleValueType } from 'src/filters/components/Range/SingleValueType';
import { RangeDisplayMode } from 'src/filters/components/Range/types';
@@ -1003,7 +1004,7 @@ const FiltersConfigForm = (
}
datasource={datasetDetails}
onChange={(
filters: AdhocFilter[],
filters: AdhocFilterClass[],
) => {
setNativeFilterFieldValues(
form,

View File

@@ -39,7 +39,8 @@ const sqlAdhocFilter = new AdhocFilter({
});
const faultyAdhocFilter = new AdhocFilter({
expressionType: null,
// Use undefined for faulty expressionType to trigger error state
expressionType: undefined,
subject: null,
operator: '>',
comparator: '10',
@@ -69,7 +70,7 @@ const defaultProps = {
datasource: {},
};
const renderPopover = (props = {}) =>
const renderPopover = (props: Partial<typeof defaultProps> = {}) =>
render(<AdhocFilterEditPopover {...defaultProps} {...props} />, {
useRedux: true, // Add Redux provider for context
});
@@ -123,7 +124,7 @@ describe('AdhocFilterEditPopover', () => {
fireEvent.change(sqlInput, { target: { value: 'COUNT(*) > 0' } });
// Wait for validation to complete
await screen.findByRole('button', { name: /save/i, disabled: false });
await screen.findByRole('button', { name: /save/i });
// Click save button
const saveButton = screen.getByRole('button', { name: /save/i });

View File

@@ -178,13 +178,11 @@ export default class AdhocFilterEditPopover extends Component<
document.addEventListener('mouseup', this.onMouseUp);
// Load layer options if deck_slices exist
if (
this.props.adhocFilter?.deck_slices &&
this.props.adhocFilter.deck_slices.length > 0
) {
const deckSlices = this.props.adhocFilter?.deck_slices as number[] | undefined;
if (deckSlices && deckSlices.length > 0) {
this.loadLayerOptions(0, 100).then(result => {
this.setState({ layerOptions: result.data });
const layerFilterScope = this.props.adhocFilter?.layerFilterScope;
const layerFilterScope = this.props.adhocFilter?.layerFilterScope as number[] | undefined;
if (layerFilterScope) {
const selectedLayers = layerFilterScope.map(item => {
const layerOption = result.data.find(
@@ -192,7 +190,7 @@ export default class AdhocFilterEditPopover extends Component<
);
return layerOption;
});
this.setState({ selectedLayers });
this.setState({ selectedLayers: selectedLayers.filter(Boolean) as LayerOption[] });
}
});
}