Skip to content

Commit 731b67f

Browse files
authored
Merge branch 'master' into bpachilova/feat-14011
2 parents 576033e + f8a7f67 commit 731b67f

File tree

5 files changed

+124
-138
lines changed

5 files changed

+124
-138
lines changed

README.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
[![npm version](https://badge.fury.io/js/igniteui-angular.svg)](https://badge.fury.io/js/igniteui-angular)
1313
[![Discord](https://img.shields.io/discord/836634487483269200?logo=discord&logoColor=ffffff)](https://discord.gg/39MjrTRqds)
1414

15-
[Ignite UI for Angular](https://www.infragistics.com/products/ignite-ui-angular)is a complete set of Material-based UI Widgets, Components & Sketch, Adobe XD and Figma [UI kits](https://www.infragistics.com/products/appbuilder/ui-toolkit) by Infragistics. Ignite UI for Angular is designed to enable developers to build enterprise-ready, high-performance HTML5 & JavaScript apps for modern desktop browsers. With the use of all features, the world’s fastest Angular grid, 60+ real-time Angular charts, and more, you are empowered to engineer excellent mobile experiences and deliver progressive web apps (PWA’s) using Google's [Angular](https://angular.io/) framework.
15+
[Ignite UI for Angular](https://www.infragistics.com/products/ignite-ui-angular) is a complete library of Angular-native, Material-based Angular UI components designed to enable developers to build enterprise-ready HTML5 & JavaScript apps for modern desktop browsers. It packs full-featured components, including Pivot Grids, Dock Manager, Hierarchical Grid, Bottom Navigation, etc., 60+ high-performance Angular Charts for all business needs and any app scenario, and more.
1616

1717
You can find source files under the [`src`](https://github.com/IgniteUI/igniteui-angular/tree/master/src) folder, including samples and tests.
1818
Or visit [Ignite UI for Angular Discord](https://discord.com/channels/836634487483269200/836636712292581456) and join the dev community there.
@@ -64,11 +64,6 @@ Ignite UI for Angular arrives with an extensive library of data visualizations t
6464

6565
Some of the Angular chart types included are: [Polar chart](https://www.infragistics.com/products/ignite-ui-angular/angular/components/charts/types/polar-chart), [Pie chart](https://www.infragistics.com/products/ignite-ui-angular/angular/components/charts/types/pie-chart), [Donut chart](https://www.infragistics.com/products/ignite-ui-angular/angular/components/charts/types/donut-chart), [Bubble chart](https://www.infragistics.com/products/ignite-ui-angular/angular/components/charts/types/bubble-chart), [Area chart](https://www.infragistics.com/products/ignite-ui-angular/angular/components/charts/types/area-chart), [Treemap chart](https://www.infragistics.com/products/ignite-ui-angular/angular/components/charts/types/treemap-chart), and many others. And if you look for [Angular financial charts](https://www.infragistics.com/products/ignite-ui-angular/angular/components/charts/types/stock-chart), with Ignite UI you can get the same features as the ones you come across with Google Finance and Yahoo Finance Charts.
6666

67-
### Build Apps with Ignite UI for Angular faster using our [App Builder](https://www.infragistics.com/products/appbuilder)
68-
![Health Vault AB Angular Create](https://github.com/IgniteUI/igniteui-angular/assets/52001020/8f40a0a6-44f8-43fa-8407-c8800a7eae89)
69-
### Generate your Angular code projects using the [App Builder](https://www.infragistics.com/products/appbuilder)
70-
![Health Vault AB Angular Generate](https://github.com/IgniteUI/igniteui-angular/assets/52001020/78628738-6752-4ff3-b201-8a6b8cf279cf)
71-
7267
### Current List of Components Include:
7368

7469
|Components|Status|||Added in|Directives|Status|||Added in|

ROADMAP.md

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,28 @@
22

33
# Current Milestone
44

5-
## Milestone 29, (Due by Feb, 2024)
5+
## Milestone 30, (Due by Apr, 2024)
66

7-
1. Improve package tree-shaking [#13562](https://github.com/IgniteUI/igniteui-angular/issues/13562)
8-
2. Deprecate rowID and rowData in interfaces [#10617](https://github.com/IgniteUI/igniteui-angular/issues/10617)
9-
3. Update calendar theme to match material [#10400](https://github.com/IgniteUI/igniteui-angular/issues/10400)
10-
4. Calendar: Default date formatting in the header [#13811](https://github.com/IgniteUI/igniteui-angular/issues/13811)
11-
5. Component: Icon Button [#13590](https://github.com/IgniteUI/igniteui-angular/issues/13590)
7+
1. Update calendar theme to match material [#10400](https://github.com/IgniteUI/igniteui-angular/issues/10400)
8+
2. Calendar: Default date formatting in the header [#13811](https://github.com/IgniteUI/igniteui-angular/issues/13811)
9+
3. Button: States and size improvements request [#1033](https://github.com/IgniteUI/igniteui-angular/issues/1033)
10+
4. Provide a way to replace part of (or all) icons used by components with icons from other icon sets [#13987](https://github.com/IgniteUI/igniteui-angular/issues/13987)
11+
5. Date/datetime/time editors should accept the same formats that the angular pipes accept [#14011](https://github.com/IgniteUI/igniteui-angular/issues/14011)
1212

1313
## Going down the road
1414

15-
1. Scheduler component [#8097](https://github.com/IgniteUI/igniteui-angular/issues/8097)
16-
2. Rework default sorting/filtering strategy's and their methods to be grid agnostic [#10922](https://github.com/IgniteUI/igniteui-angular/issues/10922)
17-
3. PDF Export feature on Angular Grid [#5696](https://github.com/IgniteUI/igniteui-angular/issues/5696)
18-
4. Getting only one sort and one filter event after changing the state of grid using setState function [#8064](https://github.com/IgniteUI/igniteui-angular/issues/8064)
19-
5. Grid Cell Merging [#3514](https://github.com/IgniteUI/igniteui-angular/issues/3514)
20-
6. Classes to indicate position of auto overlay [#9481](https://github.com/IgniteUI/igniteui-angular/issues/9481)
21-
7. Switch overlay service from angular animations to native Web Animations [#8780](https://github.com/IgniteUI/igniteui-angular/issues/8780)
22-
8. Suggestion for igx-grid group by row template [#12752](https://github.com/IgniteUI/igniteui-angular/issues/12752)
23-
9. Way to filter auto-generated columns [#12577](https://github.com/IgniteUI/igniteui-angular/issues/12577)
24-
10. IgxDateRangePicker UX improvement [#11994](https://github.com/IgniteUI/igniteui-angular/issues/11994)
25-
11. Resizing [IgxDrag] [#6283](https://github.com/IgniteUI/igniteui-angular/issues/6283)
15+
1. Grid: Remove deprecated usage of displayDensity [#14015](https://github.com/IgniteUI/igniteui-angular/issues/14015)
16+
2. Expose a header template for the chip area of the headers of the rows dimension in the pivot grid [#14016](https://github.com/IgniteUI/igniteui-angular/issues/14016)
2617

2718
# Previous Milestone
2819

20+
## Milestone 29, version 17.1 (Released Feb 26th, 2024)
21+
22+
1. Improve package tree-shaking [#13562](https://github.com/IgniteUI/igniteui-angular/issues/13562)
23+
2. Deprecate rowID and rowData in interfaces [#10617](https://github.com/IgniteUI/igniteui-angular/issues/10617)
24+
3. Component: Icon Button [#13590](https://github.com/IgniteUI/igniteui-angular/issues/13590)
25+
4. HammerJS is now an optional dependency
26+
2927
## Milestone 28, version 17.0 (Released Nov 9th, 2023) [Release Blog 17.0](https://www.infragistics.com/community/blogs/b/infragistics/posts/ignite-ui-for-angular-17-0-0)
3028

3129
1. **[DONE]** Support of Angular 17

projects/igniteui-angular/src/lib/core/styles/components/slider/_slider-theme.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@
175175
flex-grow: 1;
176176
align-items: center;
177177
transition: all .2s $out-quad;
178+
touch-action: pan-y pinch-zoom;
178179

179180
&:hover {
180181
%igx-slider-track-fill {

projects/igniteui-angular/src/lib/slider/slider.component.spec.ts

Lines changed: 58 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ import { UIInteractions, wait } from '../test-utils/ui-interactions.spec';
99
import { IgxSliderType, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IRangeSliderValue, TickLabelsOrientation, TicksOrientation } from './slider.common';
1010
import { IgxSliderComponent } from './slider.component';
1111

12-
declare let Simulator: any;
1312
const SLIDER_CLASS = '.igx-slider';
13+
const THUMB_TAG = 'igx-thumb';
1414
const THUMB_TO_CLASS = '.igx-slider-thumb-to';
15+
const THUMB_TO_PRESSED_CLASS = '.igx-slider-thumb-to--pressed';
1516
const THUMB_FROM_CLASS = '.igx-slider-thumb-from';
17+
const THUMB_LABEL = 'igx-thumb-label';
1618
const SLIDER_TICKS_ELEMENT = '.igx-slider__ticks';
1719
const SLIDER_TICKS_TOP_ELEMENT = '.igx-slider__ticks--top';
1820
const SLIDER_PRIMARY_GROUP_TICKS_CLASS_NAME = 'igx-slider__ticks-group--tall';
@@ -415,46 +417,57 @@ describe('IgxSlider', () => {
415417
expect(sliderInstance.maxValue).toEqual(expectedMax);
416418
});
417419

418-
it('continuous(smooth) sliding should be allowed', (done) => {
419-
pending(`panRight trigers pointerdown where we are capturing all pointer events by passing a valid pointerId.
420-
Pan guesture does not propagate that option. Respectively (no active pointer...) error is thrown.`);
420+
it('continuous(smooth) sliding should be allowed', async() => {
421421
sliderInstance.continuous = true;
422+
sliderInstance.thumbLabelVisibilityDuration = 10;
422423
fixture.detectChanges();
423424

424425
expect(sliderInstance.continuous).toBe(true);
425426
expect(sliderInstance.value).toBe(150);
426-
const sliderEl = fixture.debugElement.query(By.css(SLIDER_CLASS)).nativeElement;
427-
sliderEl.dispatchEvent(new PointerEvent('pointerdown', { pointerId: 1, clientX: 200 }));
427+
const thumbEl = fixture.debugElement.query(By.css(THUMB_TAG)).nativeElement;
428+
const { x: sliderX, width: sliderWidth } = thumbEl.getBoundingClientRect();
429+
const startX = sliderX + sliderWidth / 2;
430+
431+
thumbEl.dispatchEvent(new Event('focus'));
428432
fixture.detectChanges();
429-
expect(sliderEl).toBeDefined();
430-
return panRight(sliderEl, sliderEl.offsetHeight, sliderEl.offsetWidth, 200)
431-
.then(() => {
432-
fixture.detectChanges();
433-
const activeThumb = fixture.debugElement.query(By.css('.igx-slider-thumb-to--active'));
434-
expect(sliderInstance.value).toBeGreaterThan(150);
435-
expect(activeThumb).toBeNull();
436-
done();
437-
});
433+
434+
(sliderInstance as any).onPointerDown(new PointerEvent('pointerdown', { pointerId: 1, clientX: startX }));
435+
fixture.detectChanges();
436+
437+
(sliderInstance as any).onPointerMove(new PointerEvent('pointermove', { pointerId: 1, clientX: startX + 150 }));
438+
fixture.detectChanges();
439+
await wait();
440+
441+
let activeThumb = fixture.debugElement.query(By.css(THUMB_TO_PRESSED_CLASS));
442+
expect(activeThumb).not.toBeNull();
443+
expect(sliderInstance.value).toBeGreaterThan(sliderInstance.minValue);
444+
445+
(sliderInstance as any).onPointerMove(new PointerEvent('pointermove', { pointerId: 1, clientX: startX }));
446+
fixture.detectChanges();
447+
await wait();
448+
449+
expect(sliderInstance.value).toEqual(sliderInstance.minValue);
438450
});
439451

440-
it('should not move thumb slider and value should remain the same when slider is disabled', (done) => {
441-
pending(`panRight trigers pointerdown where we are capturing all pointer events by passing a valid pointerId.
442-
Pan guesture does not propagate that option. Respectively (no active pointer...) error is thrown.`);
452+
it('should not move thumb slider and value should remain the same when slider is disabled', async() => {
443453
sliderInstance.disabled = true;
444454
fixture.detectChanges();
445455

446-
const sliderEl = fixture.debugElement.query(By.css(SLIDER_CLASS)).nativeElement;
447-
sliderEl.dispatchEvent( new MouseEvent('mosedown'));
456+
const thumbEl = fixture.debugElement.query(By.css(THUMB_TAG)).nativeElement;
457+
const { x: sliderX, width: sliderWidth } = thumbEl.getBoundingClientRect();
458+
const startX = sliderX + sliderWidth / 2;
459+
460+
thumbEl.dispatchEvent(new Event('focus'));
448461
fixture.detectChanges();
449-
expect(sliderEl).toBeDefined();
450-
return panRight(sliderEl, sliderEl.offsetHeight, sliderEl.offsetWidth, 200)
451-
.then(() => {
452-
fixture.detectChanges();
453-
const activeThumb = fixture.debugElement.query(By.css('.igx-slider-thumb-to--active'));
454-
expect(activeThumb).toBeDefined();
455-
expect(sliderInstance.value).toBe(sliderInstance.minValue);
456-
done();
457-
});
462+
463+
(sliderInstance as any).onPointerDown(new PointerEvent('pointerdown', { pointerId: 1, clientX: startX }));
464+
fixture.detectChanges();
465+
466+
(sliderInstance as any).onPointerMove(new PointerEvent('pointermove', { pointerId: 1, clientX: startX + 150 }));
467+
fixture.detectChanges();
468+
await wait();
469+
470+
expect(sliderInstance.value).toBe(sliderInstance.minValue);
458471
});
459472
});
460473

@@ -474,32 +487,27 @@ describe('IgxSlider', () => {
474487
expect((slider.value as IRangeSliderValue).upper).toBe(slider.upperBound);
475488
});
476489

477-
it('continuous(smooth) sliding should be allowed', (done) => {
478-
pending(`panRight trigers pointerdown where we are capturing all pointer events by passing a valid pointerId.
479-
Pan guesture does not propagate that option. Respectively (no active pointer...) error is thrown.`);
480-
const fromThumb = fixture.debugElement.query(By.css(THUMB_FROM_CLASS)).nativeElement;
490+
it('continuous(smooth) sliding should be allowed', async() => {
481491
slider.continuous = true;
482492
fixture.detectChanges();
483493

484-
expect(slider.continuous).toBe(true);
494+
const fromThumb = fixture.debugElement.query(By.css(THUMB_FROM_CLASS)).nativeElement;
495+
const { x: sliderX, width: sliderWidth } = fromThumb.getBoundingClientRect();
496+
const startX = sliderX + sliderWidth / 2;
485497

486-
const sliderEl = fixture.debugElement.query(By.css(SLIDER_CLASS)).nativeElement;
487-
sliderEl.dispatchEvent( new PointerEvent('pointerdown', { pointerId: 1 }));
488-
fixture.detectChanges();
489498
fromThumb.dispatchEvent(new Event('focus'));
490499
fixture.detectChanges();
491500

492-
expect(sliderEl).toBeDefined();
493-
return panRight(sliderEl, sliderEl.offsetHeight, sliderEl.offsetWidth, 200)
494-
.then(() => {
495-
fixture.detectChanges();
496-
const activetoThumb = fixture.debugElement.query(By.css('.igx-slider-thumb-to--active'));
497-
const activefromThumb = fixture.debugElement.query(By.css('.igx-slider-thumb-from--active'));
498-
expect(slider.value).toEqual({ lower: 60, upper: 100 });
499-
expect(activetoThumb).toBeNull();
500-
expect(activefromThumb).toBeNull();
501-
done();
502-
});
501+
(slider as any).onPointerDown(new PointerEvent('pointerdown', { pointerId: 1, clientX: startX }));
502+
fixture.detectChanges();
503+
await wait();
504+
505+
(slider as any).onPointerMove(new PointerEvent('pointermove', { pointerId: 1, clientX: startX + 150 }));
506+
fixture.detectChanges();
507+
await wait();
508+
509+
expect((slider.value as any).lower).toBeGreaterThan(slider.minValue);
510+
expect((slider.value as any).upper).toEqual(slider.maxValue);
503511
});
504512

505513
// K.D. Removing this functionality because of 0 benefit and lots of issues.
@@ -1750,8 +1758,8 @@ describe('IgxSlider', () => {
17501758
fix.detectChanges();
17511759

17521760
const inst = fix.componentInstance;
1753-
const thumbs = fix.debugElement.queryAll(By.css('igx-thumb'));
1754-
const labels = fix.debugElement.queryAll(By.css('igx-thumb-label'));
1761+
const thumbs = fix.debugElement.queryAll(By.css(THUMB_TAG));
1762+
const labels = fix.debugElement.queryAll(By.css(THUMB_LABEL));
17551763

17561764
expect(inst.dir.rtl).toEqual(true);
17571765

@@ -1803,21 +1811,6 @@ describe('IgxSlider', () => {
18031811
});
18041812
});
18051813

1806-
const panRight = (element, elementHeight, elementWidth, duration) => {
1807-
const panOptions = {
1808-
deltaX: elementWidth * 0.6,
1809-
clientX: elementWidth * 0.6,
1810-
deltaY: 0,
1811-
duration,
1812-
pos: [element.offsetLeft, elementHeight * 0.5]
1813-
};
1814-
1815-
return new Promise<void>(resolve => {
1816-
Simulator.gestures.pan(element, panOptions, () => {
1817-
resolve(null);
1818-
});
1819-
});
1820-
};
18211814

18221815
const verifySecondaryTicsLabelsAreHidden = (ticks, hidden) => {
18231816
const allTicks = Array.from(ticks.nativeElement.querySelectorAll(`${SLIDER_GROUP_TICKS_CLASS}`));

0 commit comments

Comments
 (0)