igniteui-angular 22.2.0-rc.1 → 22.2.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +1 -1
  2. package/button-group/README.md +42 -9
  3. package/calendar/README.md +30 -20
  4. package/card/README.md +1 -1
  5. package/fesm2022/igniteui-angular-accordion.mjs +7 -7
  6. package/fesm2022/igniteui-angular-action-strip.mjs +11 -22
  7. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-avatar.mjs +7 -7
  9. package/fesm2022/igniteui-angular-badge.mjs +7 -7
  10. package/fesm2022/igniteui-angular-banner.mjs +10 -10
  11. package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
  12. package/fesm2022/igniteui-angular-button-group.mjs +32 -35
  13. package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
  14. package/fesm2022/igniteui-angular-calendar.mjs +132 -180
  15. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  16. package/fesm2022/igniteui-angular-card.mjs +47 -58
  17. package/fesm2022/igniteui-angular-card.mjs.map +1 -1
  18. package/fesm2022/igniteui-angular-carousel.mjs +22 -22
  19. package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
  20. package/fesm2022/igniteui-angular-chat.mjs +12 -12
  21. package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
  22. package/fesm2022/igniteui-angular-chips.mjs +10 -10
  23. package/fesm2022/igniteui-angular-combo.mjs +66 -60
  24. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  25. package/fesm2022/igniteui-angular-core.mjs +107 -79
  26. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  27. package/fesm2022/igniteui-angular-date-picker.mjs +38 -38
  28. package/fesm2022/igniteui-angular-dialog.mjs +13 -13
  29. package/fesm2022/igniteui-angular-directives.mjs +194 -194
  30. package/fesm2022/igniteui-angular-drop-down.mjs +29 -29
  31. package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
  32. package/fesm2022/igniteui-angular-grids-core.mjs +737 -661
  33. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  34. package/fesm2022/igniteui-angular-grids-grid.mjs +49 -49
  35. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +37 -37
  36. package/fesm2022/igniteui-angular-grids-lite.mjs +25 -17
  37. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  38. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +80 -80
  39. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  40. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +55 -55
  41. package/fesm2022/igniteui-angular-icon.mjs +10 -10
  42. package/fesm2022/igniteui-angular-input-group.mjs +25 -25
  43. package/fesm2022/igniteui-angular-list.mjs +40 -40
  44. package/fesm2022/igniteui-angular-navbar.mjs +13 -13
  45. package/fesm2022/igniteui-angular-navigation-drawer.mjs +43 -38
  46. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  47. package/fesm2022/igniteui-angular-paginator.mjs +19 -19
  48. package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
  49. package/fesm2022/igniteui-angular-query-builder.mjs +22 -22
  50. package/fesm2022/igniteui-angular-radio.mjs +25 -21
  51. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  52. package/fesm2022/igniteui-angular-select.mjs +25 -25
  53. package/fesm2022/igniteui-angular-simple-combo.mjs +9 -9
  54. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  55. package/fesm2022/igniteui-angular-slider.mjs +28 -28
  56. package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
  57. package/fesm2022/igniteui-angular-splitter.mjs +13 -13
  58. package/fesm2022/igniteui-angular-stepper.mjs +34 -34
  59. package/fesm2022/igniteui-angular-switch.mjs +7 -7
  60. package/fesm2022/igniteui-angular-tabs.mjs +34 -34
  61. package/fesm2022/igniteui-angular-time-picker.mjs +19 -19
  62. package/fesm2022/igniteui-angular-toast.mjs +7 -7
  63. package/fesm2022/igniteui-angular-tree.mjs +28 -28
  64. package/fesm2022/igniteui-angular-virtual-scroll.mjs +497 -145
  65. package/fesm2022/igniteui-angular-virtual-scroll.mjs.map +1 -1
  66. package/migrations/common/UpdateChanges.d.ts +25 -5
  67. package/migrations/common/UpdateChanges.js +218 -34
  68. package/migrations/common/UpdateChanges.spec.js +763 -0
  69. package/migrations/migration-collection.json +1 -1
  70. package/migrations/update-22_2_0/index.js +145 -0
  71. package/migrations/update-22_2_0/index.spec.js +133 -0
  72. package/navigation-drawer/README.md +1 -1
  73. package/package.json +3 -3
  74. package/schematics/tsconfig.tsbuildinfo +1 -1
  75. package/skills/igniteui-angular-components/SKILL.md +9 -5
  76. package/skills/igniteui-angular-components/references/form-controls.md +1 -1
  77. package/skills/igniteui-angular-components/references/mcp-setup.md +14 -2
  78. package/skills/igniteui-angular-figma-to-app/SKILL.md +112 -525
  79. package/skills/igniteui-angular-figma-to-app/references/asset-extraction.md +49 -75
  80. package/skills/igniteui-angular-figma-to-app/references/design-provenance.md +201 -0
  81. package/skills/igniteui-angular-figma-to-app/references/design-token-bridge.md +175 -52
  82. package/skills/igniteui-angular-figma-to-app/references/figma-component-map.md +153 -99
  83. package/skills/igniteui-angular-figma-to-app/references/figma-exploration.md +226 -0
  84. package/skills/igniteui-angular-figma-to-app/references/mcp-setup.md +71 -105
  85. package/skills/igniteui-angular-figma-to-app/references/project-setup.md +63 -0
  86. package/skills/igniteui-angular-figma-to-app/references/theme-generation.md +120 -0
  87. package/skills/igniteui-angular-figma-to-app/references/validation-patterns.md +48 -50
  88. package/skills/igniteui-angular-generate-from-image-design/SKILL.md +11 -7
  89. package/skills/igniteui-angular-grids/SKILL.md +7 -3
  90. package/skills/igniteui-angular-grids/references/editing.md +1 -2
  91. package/skills/igniteui-angular-grids/references/grid-migration.md +1 -1
  92. package/skills/igniteui-angular-theming/SKILL.md +9 -5
  93. package/skills/igniteui-angular-theming/references/mcp-setup.md +12 -2
  94. package/types/igniteui-angular-button-group.d.ts +49 -34
  95. package/types/igniteui-angular-calendar.d.ts +33 -50
  96. package/types/igniteui-angular-card.d.ts +12 -17
  97. package/types/igniteui-angular-combo.d.ts +6 -0
  98. package/types/igniteui-angular-core.d.ts +10 -2
  99. package/types/igniteui-angular-grids-core.d.ts +48 -4
  100. package/types/igniteui-angular-grids-lite.d.ts +5 -1
  101. package/types/igniteui-angular-grids-pivot-grid.d.ts +1 -1
  102. package/types/igniteui-angular-navigation-drawer.d.ts +1 -0
  103. package/types/igniteui-angular-radio.d.ts +5 -0
  104. package/types/igniteui-angular-virtual-scroll.d.ts +41 -13
  105. package/virtual-scroll/README.md +32 -1
@@ -46,10 +46,10 @@ class IgxNavigationService {
46
46
  return this.navs[id].close(...args);
47
47
  }
48
48
  }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
50
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationService, providedIn: 'root' }); }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
50
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationService, providedIn: 'root' }); }
51
51
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationService, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationService, decorators: [{
53
53
  type: Injectable,
54
54
  args: [{ providedIn: 'root' }]
55
55
  }], ctorParameters: () => [] });
@@ -71,10 +71,10 @@ class IgxNavigationToggleDirective {
71
71
  toggleNavigationDrawer() {
72
72
  this.state.toggle(this.target, true);
73
73
  }
74
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationToggleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
75
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxNavigationToggleDirective, isStandalone: true, selector: "[igxNavToggle]", inputs: { target: ["igxNavToggle", "target"] }, host: { listeners: { "click": "toggleNavigationDrawer()" } }, ngImport: i0 }); }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationToggleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.0", type: IgxNavigationToggleDirective, isStandalone: true, selector: "[igxNavToggle]", inputs: { target: ["igxNavToggle", "target"] }, host: { listeners: { "click": "toggleNavigationDrawer()" } }, ngImport: i0 }); }
76
76
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationToggleDirective, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationToggleDirective, decorators: [{
78
78
  type: Directive,
79
79
  args: [{
80
80
  selector: '[igxNavToggle]',
@@ -104,10 +104,10 @@ class IgxNavigationCloseDirective {
104
104
  closeNavigationDrawer() {
105
105
  this.state.close(this.target, true);
106
106
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationCloseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
108
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxNavigationCloseDirective, isStandalone: true, selector: "[igxNavClose]", inputs: { target: ["igxNavClose", "target"] }, host: { listeners: { "click": "closeNavigationDrawer()" } }, ngImport: i0 }); }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationCloseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
108
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.0", type: IgxNavigationCloseDirective, isStandalone: true, selector: "[igxNavClose]", inputs: { target: ["igxNavClose", "target"] }, host: { listeners: { "click": "closeNavigationDrawer()" } }, ngImport: i0 }); }
109
109
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationCloseDirective, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationCloseDirective, decorators: [{
111
111
  type: Directive,
112
112
  args: [{
113
113
  selector: '[igxNavClose]',
@@ -520,10 +520,10 @@ class PlatformUtil {
520
520
  this.KEYMAP.ARROW_DOWN, this.KEYMAP.ARROW_LEFT, this.KEYMAP.ARROW_RIGHT, this.KEYMAP.ARROW_UP
521
521
  ].includes(key);
522
522
  }
523
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PlatformUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
524
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PlatformUtil, providedIn: 'root' }); }
523
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: PlatformUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
524
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: PlatformUtil, providedIn: 'root' }); }
525
525
  }
526
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: PlatformUtil, decorators: [{
526
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: PlatformUtil, decorators: [{
527
527
  type: Injectable,
528
528
  args: [{ providedIn: 'root' }]
529
529
  }] });
@@ -1010,10 +1010,10 @@ class IgxSelectionAPIService {
1010
1010
  get_empty() {
1011
1011
  return new Set();
1012
1012
  }
1013
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxSelectionAPIService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1014
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxSelectionAPIService, providedIn: 'root' }); }
1013
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxSelectionAPIService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1014
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxSelectionAPIService, providedIn: 'root' }); }
1015
1015
  }
1016
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxSelectionAPIService, decorators: [{
1016
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxSelectionAPIService, decorators: [{
1017
1017
  type: Injectable,
1018
1018
  args: [{
1019
1019
  providedIn: 'root',
@@ -1109,9 +1109,10 @@ class IgxTouchManager {
1109
1109
  return;
1110
1110
  }
1111
1111
  const gesture = this._createEvent(event);
1112
- // Defer `panStart` until movement actually begins, mirroring Hammer's `panstart`.
1113
- // A press with no movement (a tap) therefore never raises `panStart`.
1114
1112
  if (!this._panStarted) {
1113
+ if (!this._canStartPan(gesture)) {
1114
+ return;
1115
+ }
1115
1116
  this._panStarted = true;
1116
1117
  if (this.callbacks.panStart) {
1117
1118
  this._runInAngular(() => this.callbacks.panStart?.(gesture));
@@ -1129,15 +1130,15 @@ class IgxTouchManager {
1129
1130
  if (!this._tracking || event.pointerId !== this._pointerId || !this._accepts(event.pointerType)) {
1130
1131
  return;
1131
1132
  }
1132
- this._tracking = false;
1133
- this._pointerId = null;
1134
1133
  const gesture = this._createEvent(event);
1134
+ const panStarted = this._panStarted;
1135
+ this._resetTracking();
1135
1136
  this._runInAngular(() => {
1136
1137
  if (this.callbacks.tap && gesture.distance < this._tapThreshold) {
1137
1138
  this.callbacks.tap(gesture);
1138
1139
  return;
1139
1140
  }
1140
- if (this.callbacks.swipe &&
1141
+ if (panStarted && this.callbacks.swipe &&
1141
1142
  gesture.velocity > this._swipeVelocityThreshold &&
1142
1143
  Math.abs(gesture.deltaX) > Math.abs(gesture.deltaY)) {
1143
1144
  this.callbacks.swipe(gesture);
@@ -1152,10 +1153,9 @@ class IgxTouchManager {
1152
1153
  if (!this._tracking || event.pointerId !== this._pointerId) {
1153
1154
  return;
1154
1155
  }
1155
- this._tracking = false;
1156
- this._pointerId = null;
1156
+ const gesture = this._createEvent(event);
1157
+ this._resetTracking();
1157
1158
  if (this.callbacks.panCancel) {
1158
- const gesture = this._createEvent(event);
1159
1159
  this._runInAngular(() => this.callbacks.panCancel?.(gesture));
1160
1160
  }
1161
1161
  };
@@ -1163,14 +1163,17 @@ class IgxTouchManager {
1163
1163
  if (!(event instanceof TouchEvent)) {
1164
1164
  return;
1165
1165
  }
1166
- // Prevent scrolling only while a gesture is actively tracked.
1167
- if (this._tracking && event.cancelable) {
1166
+ // Preserve native scrolling and compatibility clicks while the contact is
1167
+ // only a tap candidate. Suppress scrolling after a pan is recognized.
1168
+ if (this._tracking && this._panStarted && event.cancelable) {
1168
1169
  event.preventDefault();
1169
1170
  }
1170
1171
  };
1171
1172
  this._pointerTypes = options.pointerTypes ?? ['touch', 'pen'];
1172
1173
  this._setPointerCapture = options.setPointerCapture ?? true;
1173
1174
  this._tapThreshold = options.tapThreshold ?? 0;
1175
+ this._panThreshold = options.panThreshold ?? 0;
1176
+ this._panAxis = options.panAxis ?? 'all';
1174
1177
  this._swipeVelocityThreshold = options.swipeVelocityThreshold ?? 0.3;
1175
1178
  this._canStart = options.canStart ?? null;
1176
1179
  this._ngZone = options.ngZone ?? null;
@@ -1197,15 +1200,14 @@ class IgxTouchManager {
1197
1200
  }
1198
1201
  /** Detaches all listeners and stops tracking. */
1199
1202
  destroy() {
1200
- if (!this._supported) {
1201
- return;
1203
+ if (this._supported) {
1204
+ this.target.removeEventListener('pointerdown', this._onPointerDown);
1205
+ this.target.removeEventListener('pointermove', this._onPointerMove);
1206
+ this.target.removeEventListener('pointerup', this._onPointerUp);
1207
+ this.target.removeEventListener('pointercancel', this._onPointerCancel);
1208
+ this.target.removeEventListener('touchmove', this._onTouchMove);
1202
1209
  }
1203
- this.target.removeEventListener('pointerdown', this._onPointerDown);
1204
- this.target.removeEventListener('pointermove', this._onPointerMove);
1205
- this.target.removeEventListener('pointerup', this._onPointerUp);
1206
- this.target.removeEventListener('pointercancel', this._onPointerCancel);
1207
- this.target.removeEventListener('touchmove', this._onTouchMove);
1208
- this._tracking = false;
1210
+ this._resetTracking();
1209
1211
  }
1210
1212
  _accepts(pointerType) {
1211
1213
  return this._pointerTypes.includes(pointerType);
@@ -1253,22 +1255,35 @@ class IgxTouchManager {
1253
1255
  }
1254
1256
  };
1255
1257
  }
1256
- /** Stops tracking the current gesture and best-effort releases the pointer capture. */
1258
+ _canStartPan(event) {
1259
+ if (event.distance < this._panThreshold) {
1260
+ return false;
1261
+ }
1262
+ if (this._panAxis === 'horizontal') {
1263
+ return Math.abs(event.deltaX) > Math.abs(event.deltaY);
1264
+ }
1265
+ if (this._panAxis === 'vertical') {
1266
+ return Math.abs(event.deltaY) > Math.abs(event.deltaX);
1267
+ }
1268
+ return true;
1269
+ }
1257
1270
  _stopTracking(pointerId) {
1258
- this._tracking = false;
1259
- this._panStarted = false;
1260
- this._pointerId = null;
1261
- this._startTarget = null;
1271
+ this._resetTracking();
1262
1272
  if (this._setPointerCapture && typeof this.target.releasePointerCapture === 'function') {
1263
1273
  try {
1264
1274
  this.target.releasePointerCapture(pointerId);
1265
1275
  }
1266
1276
  catch {
1267
- // `releasePointerCapture` can throw when the pointer is no longer captured.
1268
- // Releasing is a best-effort cleanup, so ignore it.
1277
+ // Pointer capture is best-effort and may already have been released.
1269
1278
  }
1270
1279
  }
1271
1280
  }
1281
+ _resetTracking() {
1282
+ this._tracking = false;
1283
+ this._panStarted = false;
1284
+ this._pointerId = null;
1285
+ this._startTarget = null;
1286
+ }
1272
1287
  }
1273
1288
 
1274
1289
  /**
@@ -1454,10 +1469,10 @@ class IgxPickerToggleComponent {
1454
1469
  event.stopPropagation();
1455
1470
  this.clicked.emit();
1456
1471
  }
1457
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPickerToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1458
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: IgxPickerToggleComponent, isStandalone: true, selector: "igx-picker-toggle", outputs: { clicked: "clicked" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1472
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPickerToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1473
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.2.0", type: IgxPickerToggleComponent, isStandalone: true, selector: "igx-picker-toggle", outputs: { clicked: "clicked" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1459
1474
  }
1460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPickerToggleComponent, decorators: [{
1475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPickerToggleComponent, decorators: [{
1461
1476
  type: Component,
1462
1477
  args: [{
1463
1478
  template: `<ng-content></ng-content>`,
@@ -1486,10 +1501,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
1486
1501
  * ```
1487
1502
  */
1488
1503
  class IgxPickerClearComponent extends IgxPickerToggleComponent {
1489
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPickerClearComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1490
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: IgxPickerClearComponent, isStandalone: true, selector: "igx-picker-clear", usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1504
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPickerClearComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1505
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.2.0", type: IgxPickerClearComponent, isStandalone: true, selector: "igx-picker-clear", usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1491
1506
  }
1492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPickerClearComponent, decorators: [{
1507
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPickerClearComponent, decorators: [{
1493
1508
  type: Component,
1494
1509
  args: [{
1495
1510
  template: `<ng-content></ng-content>`,
@@ -1508,10 +1523,10 @@ class IgxPickerActionsDirective {
1508
1523
  constructor() {
1509
1524
  this.template = inject(TemplateRef);
1510
1525
  }
1511
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPickerActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1512
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxPickerActionsDirective, isStandalone: true, selector: "[igxPickerActions]", ngImport: i0 }); }
1526
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPickerActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1527
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.0", type: IgxPickerActionsDirective, isStandalone: true, selector: "[igxPickerActions]", ngImport: i0 }); }
1513
1528
  }
1514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPickerActionsDirective, decorators: [{
1529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPickerActionsDirective, decorators: [{
1515
1530
  type: Directive,
1516
1531
  args: [{
1517
1532
  selector: '[igxPickerActions]',
@@ -5163,10 +5178,10 @@ class IgxDateFormatterPipe {
5163
5178
  transform(value, format, timezone, locale) {
5164
5179
  return this.i18nFormatter.formatDate(value, format, locale ?? this.locale_ID, timezone);
5165
5180
  }
5166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDateFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5167
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxDateFormatterPipe, isStandalone: true, name: "date" }); }
5181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxDateFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5182
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.2.0", ngImport: i0, type: IgxDateFormatterPipe, isStandalone: true, name: "date" }); }
5168
5183
  }
5169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDateFormatterPipe, decorators: [{
5184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxDateFormatterPipe, decorators: [{
5170
5185
  type: Pipe,
5171
5186
  args: [{
5172
5187
  name: 'date',
@@ -5180,10 +5195,10 @@ class IgxNumberFormatterPipe {
5180
5195
  transform(value, digitsInfo, locale) {
5181
5196
  return this.i18nFormatter.formatNumber(value, locale, digitsInfo);
5182
5197
  }
5183
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNumberFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5184
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxNumberFormatterPipe, isStandalone: true, name: "number" }); }
5198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNumberFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5199
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.2.0", ngImport: i0, type: IgxNumberFormatterPipe, isStandalone: true, name: "number" }); }
5185
5200
  }
5186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNumberFormatterPipe, decorators: [{
5201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNumberFormatterPipe, decorators: [{
5187
5202
  type: Pipe,
5188
5203
  args: [{
5189
5204
  name: 'number',
@@ -5197,10 +5212,10 @@ class IgxPercentFormatterPipe {
5197
5212
  transform(value, digitsInfo, locale) {
5198
5213
  return this.i18nFormatter.formatPercent(value, locale, digitsInfo);
5199
5214
  }
5200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPercentFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5201
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxPercentFormatterPipe, isStandalone: true, name: "percent" }); }
5215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPercentFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5216
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.2.0", ngImport: i0, type: IgxPercentFormatterPipe, isStandalone: true, name: "percent" }); }
5202
5217
  }
5203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxPercentFormatterPipe, decorators: [{
5218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxPercentFormatterPipe, decorators: [{
5204
5219
  type: Pipe,
5205
5220
  args: [{
5206
5221
  name: 'percent',
@@ -5214,10 +5229,10 @@ class IgxCurrencyFormatterPipe {
5214
5229
  transform(value, currencyCode, display, digitsInfo, locale) {
5215
5230
  return this.i18nFormatter.formatCurrency(value, locale, display, currencyCode, digitsInfo);
5216
5231
  }
5217
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxCurrencyFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5218
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxCurrencyFormatterPipe, isStandalone: true, name: "currency" }); }
5232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxCurrencyFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5233
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.2.0", ngImport: i0, type: IgxCurrencyFormatterPipe, isStandalone: true, name: "currency" }); }
5219
5234
  }
5220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxCurrencyFormatterPipe, decorators: [{
5235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxCurrencyFormatterPipe, decorators: [{
5221
5236
  type: Pipe,
5222
5237
  args: [{
5223
5238
  name: 'currency',
@@ -5285,10 +5300,10 @@ class IgxAngularAnimationService {
5285
5300
  const player = new IgxAngularAnimationPlayer(animationBuilder.create(element));
5286
5301
  return player;
5287
5302
  }
5288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAngularAnimationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5289
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAngularAnimationService, providedIn: 'root' }); }
5303
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxAngularAnimationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5304
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxAngularAnimationService, providedIn: 'root' }); }
5290
5305
  }
5291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAngularAnimationService, decorators: [{
5306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxAngularAnimationService, decorators: [{
5292
5307
  type: Injectable,
5293
5308
  args: [{ providedIn: 'root' }]
5294
5309
  }] });
@@ -5313,10 +5328,10 @@ class IgxOverlayOutletDirective {
5313
5328
  get nativeElement() {
5314
5329
  return this.element.nativeElement;
5315
5330
  }
5316
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxOverlayOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5317
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxOverlayOutletDirective, isStandalone: true, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"], ngImport: i0 }); }
5331
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxOverlayOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5332
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.0", type: IgxOverlayOutletDirective, isStandalone: true, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"], ngImport: i0 }); }
5318
5333
  }
5319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxOverlayOutletDirective, decorators: [{
5334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxOverlayOutletDirective, decorators: [{
5320
5335
  type: Directive,
5321
5336
  args: [{
5322
5337
  exportAs: 'overlay-outlet',
@@ -7049,10 +7064,10 @@ class IgxOverlayService {
7049
7064
  info.size = size;
7050
7065
  }
7051
7066
  }
7052
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7053
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxOverlayService, providedIn: 'root' }); }
7067
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7068
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxOverlayService, providedIn: 'root' }); }
7054
7069
  }
7055
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxOverlayService, decorators: [{
7070
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxOverlayService, decorators: [{
7056
7071
  type: Injectable,
7057
7072
  args: [{ providedIn: 'root' }]
7058
7073
  }], ctorParameters: () => [] });
@@ -7156,6 +7171,9 @@ class BlockScrollStrategy extends ScrollStrategy {
7156
7171
  this._sourceElement.scrollTop = this._initialScrollTop;
7157
7172
  this._sourceElement.scrollLeft = this._initialScrollLeft;
7158
7173
  };
7174
+ this.preventDefault = (ev) => {
7175
+ ev.preventDefault();
7176
+ };
7159
7177
  }
7160
7178
  /**
7161
7179
  * Initializes the strategy. Should be called once
@@ -7175,6 +7193,14 @@ class BlockScrollStrategy extends ScrollStrategy {
7175
7193
  * ```
7176
7194
  */
7177
7195
  attach() {
7196
+ // Prevent scroll from mouse/trackpad/touch before it occurs.
7197
+ // `{ passive: false }` is required — without it, browsers ignore preventDefault() on these events.
7198
+ // This also fixes Safari bug #17217 where the scroll event fires after the compositor has already
7199
+ // scrolled, making scroll-position reset ineffective for wheel/touch input.
7200
+ this._document.addEventListener('wheel', this.preventDefault, { passive: false });
7201
+ this._document.addEventListener('touchmove', this.preventDefault, { passive: false });
7202
+ // Handles keyboard-driven scrolling (arrow keys, spacebar, Page Up/Down) as a fallback,
7203
+ // since keyboard input cannot be intercepted via wheel/touchmove.
7178
7204
  this._document.addEventListener('scroll', this.onScroll, true);
7179
7205
  }
7180
7206
  /**
@@ -7184,6 +7210,8 @@ class BlockScrollStrategy extends ScrollStrategy {
7184
7210
  * ```
7185
7211
  */
7186
7212
  detach() {
7213
+ this._document.removeEventListener('wheel', this.preventDefault);
7214
+ this._document.removeEventListener('touchmove', this.preventDefault);
7187
7215
  this._document.removeEventListener('scroll', this.onScroll, true);
7188
7216
  this._sourceElement = null;
7189
7217
  this._initialScrollTop = 0;
@@ -7895,10 +7923,10 @@ class IgxFlatTransactionFactory {
7895
7923
  return new IgxBaseTransactionService();
7896
7924
  }
7897
7925
  }
7898
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxFlatTransactionFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7899
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxFlatTransactionFactory, providedIn: 'root' }); }
7926
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxFlatTransactionFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7927
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxFlatTransactionFactory, providedIn: 'root' }); }
7900
7928
  }
7901
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxFlatTransactionFactory, decorators: [{
7929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxFlatTransactionFactory, decorators: [{
7902
7930
  type: Injectable,
7903
7931
  args: [{
7904
7932
  providedIn: 'root'
@@ -7922,10 +7950,10 @@ class IgxHierarchicalTransactionFactory extends IgxFlatTransactionFactory {
7922
7950
  return new IgxBaseTransactionService();
7923
7951
  }
7924
7952
  }
7925
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxHierarchicalTransactionFactory, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7926
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxHierarchicalTransactionFactory, providedIn: 'root' }); }
7953
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxHierarchicalTransactionFactory, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7954
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxHierarchicalTransactionFactory, providedIn: 'root' }); }
7927
7955
  }
7928
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxHierarchicalTransactionFactory, decorators: [{
7956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxHierarchicalTransactionFactory, decorators: [{
7929
7957
  type: Injectable,
7930
7958
  args: [{
7931
7959
  providedIn: 'root'
@@ -7990,10 +8018,10 @@ class IgxStylesRegistrar {
7990
8018
  this._document.head?.appendChild(style);
7991
8019
  }
7992
8020
  }
7993
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxStylesRegistrar, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7994
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxStylesRegistrar, providedIn: 'root' }); }
8021
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxStylesRegistrar, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8022
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxStylesRegistrar, providedIn: 'root' }); }
7995
8023
  }
7996
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxStylesRegistrar, decorators: [{
8024
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxStylesRegistrar, decorators: [{
7997
8025
  type: Injectable,
7998
8026
  args: [{ providedIn: 'root' }]
7999
8027
  }] });