Skip to content

Commit fd064cf

Browse files
committed
feat(filters): convert jQuery to native element on more filters
1 parent 331accf commit fd064cf

File tree

8 files changed

+355
-351
lines changed

8 files changed

+355
-351
lines changed

src/app/modules/angular-slickgrid/editors/__tests__/dualInputEditor.spec.ts

+100-102
Large diffs are not rendered by default.

src/app/modules/angular-slickgrid/filters/__tests__/sliderFilter.spec.ts

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GridOption, FilterArguments, Column } from '../../models';
1+
import { GridOption, FilterArguments, Column, ColumnFilter } from '../../models';
22
import { Filters } from '..';
33
import { SliderFilter } from '../sliderFilter';
44

@@ -23,7 +23,7 @@ describe('SliderFilter', () => {
2323
let divContainer: HTMLDivElement;
2424
let filter: SliderFilter;
2525
let filterArguments: FilterArguments;
26-
let spyGetHeaderRow;
26+
let spyGetHeaderRow: jest.SpyInstance<any, any>;
2727
let mockColumn: Column;
2828

2929
beforeEach(() => {
@@ -47,7 +47,7 @@ describe('SliderFilter', () => {
4747
});
4848

4949
it('should throw an error when trying to call init without any arguments', () => {
50-
expect(() => filter.init(null)).toThrowError('[Angular-SlickGrid] A filter must always have an "init()" with valid arguments.');
50+
expect(() => filter.init(null as any)).toThrowError('[Angular-Slickgrid] A filter must always have an "init()" with valid arguments.');
5151
});
5252

5353
it('should initialize the filter', () => {
@@ -63,7 +63,7 @@ describe('SliderFilter', () => {
6363

6464
filter.init(filterArguments);
6565
filter.setValues(['2']);
66-
const filterElm = divContainer.querySelector('.search-filter.slider-container.filter-duration input');
66+
const filterElm = divContainer.querySelector('.search-filter.slider-container.filter-duration input') as HTMLInputElement;
6767
filterElm.dispatchEvent(new CustomEvent('change'));
6868

6969
expect(spyCallback).toHaveBeenLastCalledWith(expect.anything(), { columnDef: mockColumn, operator: 'EQ', searchTerms: ['2'], shouldTriggerQuery: true });
@@ -74,7 +74,7 @@ describe('SliderFilter', () => {
7474

7575
filter.init(filterArguments);
7676
filter.setValues(3);
77-
const filterElm = divContainer.querySelector('.search-filter.slider-container.filter-duration input');
77+
const filterElm = divContainer.querySelector('.search-filter.slider-container.filter-duration input') as HTMLInputElement;
7878
const mockEvent = new Event('change');
7979
Object.defineProperty(mockEvent, 'target', { writable: true, configurable: true, value: { value: '13' } });
8080
filterElm.dispatchEvent(mockEvent);
@@ -88,7 +88,7 @@ describe('SliderFilter', () => {
8888
filterArguments.searchTerms = [3];
8989

9090
filter.init(filterArguments);
91-
const filterNumberElm = divContainer.querySelector<HTMLInputElement>('.input-group-text');
91+
const filterNumberElm = divContainer.querySelector('.input-group-text') as HTMLInputElement;
9292
const filterFilledElms = divContainer.querySelectorAll('.search-filter.slider-container.filter-duration.filled');
9393

9494
expect(filterFilledElms.length).toBe(1);
@@ -98,11 +98,11 @@ describe('SliderFilter', () => {
9898

9999
it('should create the input filter with default search terms and a different step size when "valueStep" is provided', () => {
100100
filterArguments.searchTerms = [15];
101-
mockColumn.filter.valueStep = 5;
101+
(mockColumn.filter as ColumnFilter).valueStep = 5;
102102

103103
filter.init(filterArguments);
104-
const filterNumberElm = divContainer.querySelector<HTMLInputElement>('.input-group-text');
105-
const filterInputElm = divContainer.querySelector<HTMLInputElement>('.search-filter.slider-container.filter-duration input');
104+
const filterNumberElm = divContainer.querySelector('.input-group-text') as HTMLInputElement;
105+
const filterInputElm = divContainer.querySelector('.search-filter.slider-container.filter-duration input') as HTMLInputElement;
106106

107107
expect(filterInputElm.step).toBe('5');
108108
expect(filterNumberElm.textContent).toBe('15');
@@ -117,7 +117,7 @@ describe('SliderFilter', () => {
117117

118118
filter.init(filterArguments);
119119

120-
const filterNumberElm = divContainer.querySelector<HTMLInputElement>('.input-group-text');
120+
const filterNumberElm = divContainer.querySelector('.input-group-text') as HTMLInputElement;
121121

122122
expect(filterNumberElm.textContent).toBe('4');
123123
expect(filter.getValues()).toEqual(4);
@@ -133,15 +133,15 @@ describe('SliderFilter', () => {
133133

134134
filter.init(filterArguments);
135135

136-
const filterNumberElm = divContainer.querySelector<HTMLInputElement>('.input-group-text');
136+
const filterNumberElm = divContainer.querySelector('.input-group-text') as HTMLInputElement;
137137

138138
expect(filterNumberElm.textContent).toBe('4');
139139
expect(filter.getValues()).toEqual(4);
140140
});
141141

142142
it('should create the input filter with default search terms range but without showing side numbers when "hideSliderNumber" is set in params', () => {
143143
filterArguments.searchTerms = [3];
144-
mockColumn.filter.params = { hideSliderNumber: true };
144+
(mockColumn.filter as ColumnFilter).params = { hideSliderNumber: true };
145145

146146
filter.init(filterArguments);
147147

src/app/modules/angular-slickgrid/filters/compoundInputFilter.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ export class CompoundInputFilter implements Filter {
4242

4343
/** Getter for the Grid Options pulled through the Grid Object */
4444
protected get gridOptions(): GridOption {
45-
return (this.grid && this.grid.getOptions) ? this.grid.getOptions() : {};
45+
return this.grid?.getOptions?.() ?? {};
4646
}
4747

4848
/** Getter for the Column Filter */
4949
get columnFilter(): ColumnFilter {
50-
return this.columnDef && this.columnDef.filter || {};
50+
return this.columnDef?.filter ?? {};
5151
}
5252

5353
/** Getter to know what would be the default operator when none is specified */
@@ -121,7 +121,7 @@ export class CompoundInputFilter implements Filter {
121121
this._clearFilterTriggered = true;
122122
this._shouldTriggerQuery = shouldTriggerQuery;
123123
this.searchTerms = [];
124-
this._selectOperatorElm.value = '';
124+
this._selectOperatorElm.selectedIndex = 0;
125125
this._filterInputElm.value = '';
126126
this.onTriggerEvent(undefined);
127127
}
@@ -132,8 +132,8 @@ export class CompoundInputFilter implements Filter {
132132
*/
133133
destroy() {
134134
this._bindEventService.unbindAll();
135-
this._filterElm?.remove?.();
136135
this._selectOperatorElm?.remove?.();
136+
this._filterElm?.remove?.();
137137
}
138138

139139
/** Set value(s) on the DOM element */

0 commit comments

Comments
 (0)