igniteui-angular 18.2.9 → 18.2.11

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 (65) hide show
  1. package/esm2022/lib/carousel/carousel-base.mjs +4 -2
  2. package/esm2022/lib/carousel/carousel.component.mjs +6 -4
  3. package/esm2022/lib/carousel/slide.component.mjs +5 -6
  4. package/esm2022/lib/core/i18n/grid-resources.mjs +3 -3
  5. package/esm2022/lib/grids/columns/column-group.component.mjs +2 -2
  6. package/esm2022/lib/grids/columns/column-layout.component.mjs +3 -3
  7. package/esm2022/lib/grids/columns/column.component.mjs +11 -8
  8. package/esm2022/lib/grids/common/grid.interface.mjs +1 -1
  9. package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +13 -6
  10. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +3 -2
  11. package/esm2022/lib/grids/grid-base.directive.mjs +16 -10
  12. package/esm2022/lib/grids/headers/pipes.mjs +2 -2
  13. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +2 -1
  14. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +1 -1
  15. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +3 -3
  16. package/esm2022/lib/grids/resizing/resizer.component.mjs +3 -3
  17. package/esm2022/lib/grids/resizing/resizer.directive.mjs +12 -3
  18. package/esm2022/lib/grids/resizing/resizing.service.mjs +4 -4
  19. package/fesm2022/igniteui-angular.mjs +72 -42
  20. package/fesm2022/igniteui-angular.mjs.map +1 -1
  21. package/lib/carousel/carousel-base.d.ts +31 -2
  22. package/lib/carousel/carousel.component.d.ts +2 -2
  23. package/lib/carousel/slide.component.d.ts +2 -3
  24. package/lib/core/styles/components/checkbox/_checkbox-component.scss +8 -4
  25. package/lib/core/styles/components/checkbox/_checkbox-theme.scss +8 -3
  26. package/lib/core/styles/components/chip/_chip-theme.scss +1 -1
  27. package/lib/core/styles/components/combo/_combo-theme.scss +2 -2
  28. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +3 -7
  29. package/lib/core/styles/components/grid/_grid-theme.scss +19 -15
  30. package/lib/core/styles/components/progress/_progress-theme.scss +55 -7
  31. package/lib/core/styles/components/radio/_radio-theme.scss +0 -2
  32. package/lib/core/styles/components/switch/_switch-theme.scss +0 -2
  33. package/lib/grids/common/grid.interface.d.ts +4 -0
  34. package/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.d.ts +4 -1
  35. package/lib/grids/grid-base.directive.d.ts +5 -2
  36. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +1 -1
  37. package/lib/grids/resizing/resizer.directive.d.ts +2 -0
  38. package/lib/grids/resizing/resizing.service.d.ts +2 -2
  39. package/package.json +1 -1
  40. package/styles/igniteui-angular-dark.css +1 -1
  41. package/styles/igniteui-angular.css +1 -1
  42. package/styles/igniteui-bootstrap-dark.css +1 -1
  43. package/styles/igniteui-bootstrap-light.css +1 -1
  44. package/styles/igniteui-dark-green.css +1 -1
  45. package/styles/igniteui-fluent-dark-excel.css +1 -1
  46. package/styles/igniteui-fluent-dark-word.css +1 -1
  47. package/styles/igniteui-fluent-dark.css +1 -1
  48. package/styles/igniteui-fluent-light-excel.css +1 -1
  49. package/styles/igniteui-fluent-light-word.css +1 -1
  50. package/styles/igniteui-fluent-light.css +1 -1
  51. package/styles/igniteui-indigo-dark.css +1 -1
  52. package/styles/igniteui-indigo-light.css +1 -1
  53. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  54. package/styles/maps/igniteui-angular.css.map +1 -1
  55. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  56. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  57. package/styles/maps/igniteui-dark-green.css.map +1 -1
  58. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  59. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  60. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  61. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  62. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  63. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  64. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  65. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -34228,6 +34228,8 @@ var Direction;
34228
34228
  Direction[Direction["PREV"] = 2] = "PREV";
34229
34229
  })(Direction || (Direction = {}));
34230
34230
  /** @hidden */
34231
+ const IGX_CAROUSEL_COMPONENT = /*@__PURE__*/ new InjectionToken('IgxCarouselToken');
34232
+ /** @hidden */
34231
34233
  let IgxCarouselComponentBase = class IgxCarouselComponentBase {
34232
34234
  constructor(animationService, cdr) {
34233
34235
  this.animationService = animationService;
@@ -34506,15 +34508,15 @@ class IgxSlideComponent {
34506
34508
  this._destroy$.next(true);
34507
34509
  this._destroy$.complete();
34508
34510
  }
34509
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxSlideComponent, deps: [{ token: i0.ElementRef }, { token: IgxCarouselComponent }], target: i0.ɵɵFactoryTarget.Component }); }
34511
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxSlideComponent, deps: [{ token: i0.ElementRef }, { token: IGX_CAROUSEL_COMPONENT }], target: i0.ɵɵFactoryTarget.Component }); }
34510
34512
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.4", type: IgxSlideComponent, isStandalone: true, selector: "igx-slide", inputs: { index: "index", direction: "direction", total: "total", active: ["active", "active", booleanAttribute], previous: ["previous", "previous", booleanAttribute] }, outputs: { activeChange: "activeChange" }, host: { properties: { "attr.tabindex": "this.tabIndex", "attr.id": "this.id", "attr.role": "this.tab", "attr.aria-labelledby": "this.ariaLabelledBy", "class.igx-slide": "this.cssClass", "class.igx-slide--current": "this.active", "class.igx-slide--previous": "this.previous" } }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
34511
34513
  }
34512
34514
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxSlideComponent, decorators: [{
34513
34515
  type: Component,
34514
34516
  args: [{ selector: 'igx-slide', standalone: true, template: "<ng-content></ng-content>\n" }]
34515
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: IgxCarouselComponent, decorators: [{
34517
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
34516
34518
  type: Inject,
34517
- args: [IgxCarouselComponent]
34519
+ args: [IGX_CAROUSEL_COMPONENT]
34518
34520
  }] }], propDecorators: { index: [{
34519
34521
  type: Input
34520
34522
  }], direction: [{
@@ -35659,7 +35661,8 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
35659
35661
  {
35660
35662
  provide: HAMMER_GESTURE_CONFIG,
35661
35663
  useClass: CarouselHammerConfig
35662
- }
35664
+ },
35665
+ { provide: IGX_CAROUSEL_COMPONENT, useExisting: IgxCarouselComponent }
35663
35666
  ], queries: [{ propertyName: "indicatorTemplate", first: true, predicate: IgxCarouselIndicatorDirective, descendants: true, read: TemplateRef }, { propertyName: "nextButtonTemplate", first: true, predicate: IgxCarouselNextButtonDirective, descendants: true, read: TemplateRef }, { propertyName: "prevButtonTemplate", first: true, predicate: IgxCarouselPrevButtonDirective, descendants: true, read: TemplateRef }, { propertyName: "slides", predicate: IgxSlideComponent }], viewQueries: [{ propertyName: "defaultIndicator", first: true, predicate: ["defaultIndicator"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultNextButton", first: true, predicate: ["defaultNextButton"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultPrevButton", first: true, predicate: ["defaultPrevButton"], descendants: true, read: TemplateRef, static: true }, { propertyName: "_indicators", predicate: ["indicators"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #defaultIndicator let-slide>\n <div class=\"igx-nav-dot\"\n [class.igx-nav-dot--active]=\"slide.active\">\n </div>\n</ng-template>\n\n<ng-template #defaultNextButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_next\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<ng-template #defaultPrevButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_prev\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--prev\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_previous_slide\"\n [disabled]=\"prevButtonDisabled\"\n (click)=\"prev()\"\n (keydown)=\"handleKeydownPrev($event)\">\n <ng-container *ngTemplateOutlet=\"getPrevButtonTemplate; context: {$implicit: prevButtonDisabled};\"></ng-container>\n</button>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--next\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_next_slide\"\n [disabled]=\"nextButtonDisabled\"\n (click)=\"next()\"\n (keydown)=\"handleKeydownNext($event)\">\n <ng-container *ngTemplateOutlet=\"getNextButtonTemplate; context: {$implicit: nextButtonDisabled};\"></ng-container>\n</button>\n\n<div *ngIf=\"showIndicators\" [ngClass]=\"indicatorsClass\" [attr.role]=\"'tablist'\" (keyup)=\"handleKeyUp($event)\" (focusout)=\"handleFocusOut($event)\" (click)=\"handleClick()\" (keydown)=\"handleKeydown($event)\">\n <div #indicators *ngFor=\"let slide of slides\"\n class=\"igx-carousel-indicators__indicator\"\n (click)=\"select(slide)\"\n [id]=\"'tab-'+ slide.index + '-' + total\"\n [attr.role]=\"'tab'\"\n [attr.tabindex]=\"slide.active ? 0 : -1\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_slide + ' ' + (slide.index + 1) + ' ' + resourceStrings.igx_carousel_of + ' ' + this.total\"\n [attr.aria-controls]=\"'panel-' + slide.index\"\n [attr.aria-selected]=\"slide.active\">\n <ng-container *ngTemplateOutlet=\"getIndicatorTemplate; context: {$implicit: slide};\"></ng-container>\n </div>\n</div>\n\n<div *ngIf=\"showIndicatorsLabel\" [ngClass]=\"indicatorsClass\" class=\"igx-carousel-label-indicator\">\n <span [id]=\"labelId\" class=\"igx-carousel__label\">{{getCarouselLabel}}</span>\n</div>\n\n<div class=\"igx-carousel__inner\" [attr.aria-live]=\"!interval || stoppedByInteraction ? 'polite' : 'off'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;outline-style:none}\n"], dependencies: [{ kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
35664
35667
  }
35665
35668
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxCarouselComponent, decorators: [{
@@ -35668,7 +35671,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
35668
35671
  {
35669
35672
  provide: HAMMER_GESTURE_CONFIG,
35670
35673
  useClass: CarouselHammerConfig
35671
- }
35674
+ },
35675
+ { provide: IGX_CAROUSEL_COMPONENT, useExisting: IgxCarouselComponent }
35672
35676
  ], selector: 'igx-carousel', standalone: true, imports: [IgxButtonDirective, IgxIconComponent, NgIf, NgClass, NgFor, NgTemplateOutlet], template: "<ng-template #defaultIndicator let-slide>\n <div class=\"igx-nav-dot\"\n [class.igx-nav-dot--active]=\"slide.active\">\n </div>\n</ng-template>\n\n<ng-template #defaultNextButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_next\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<ng-template #defaultPrevButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_prev\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--prev\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_previous_slide\"\n [disabled]=\"prevButtonDisabled\"\n (click)=\"prev()\"\n (keydown)=\"handleKeydownPrev($event)\">\n <ng-container *ngTemplateOutlet=\"getPrevButtonTemplate; context: {$implicit: prevButtonDisabled};\"></ng-container>\n</button>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--next\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_next_slide\"\n [disabled]=\"nextButtonDisabled\"\n (click)=\"next()\"\n (keydown)=\"handleKeydownNext($event)\">\n <ng-container *ngTemplateOutlet=\"getNextButtonTemplate; context: {$implicit: nextButtonDisabled};\"></ng-container>\n</button>\n\n<div *ngIf=\"showIndicators\" [ngClass]=\"indicatorsClass\" [attr.role]=\"'tablist'\" (keyup)=\"handleKeyUp($event)\" (focusout)=\"handleFocusOut($event)\" (click)=\"handleClick()\" (keydown)=\"handleKeydown($event)\">\n <div #indicators *ngFor=\"let slide of slides\"\n class=\"igx-carousel-indicators__indicator\"\n (click)=\"select(slide)\"\n [id]=\"'tab-'+ slide.index + '-' + total\"\n [attr.role]=\"'tab'\"\n [attr.tabindex]=\"slide.active ? 0 : -1\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_slide + ' ' + (slide.index + 1) + ' ' + resourceStrings.igx_carousel_of + ' ' + this.total\"\n [attr.aria-controls]=\"'panel-' + slide.index\"\n [attr.aria-selected]=\"slide.active\">\n <ng-container *ngTemplateOutlet=\"getIndicatorTemplate; context: {$implicit: slide};\"></ng-container>\n </div>\n</div>\n\n<div *ngIf=\"showIndicatorsLabel\" [ngClass]=\"indicatorsClass\" class=\"igx-carousel-label-indicator\">\n <span [id]=\"labelId\" class=\"igx-carousel__label\">{{getCarouselLabel}}</span>\n</div>\n\n<div class=\"igx-carousel__inner\" [attr.aria-live]=\"!interval || stoppedByInteraction ? 'polite' : 'off'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;outline-style:none}\n"] }]
35673
35677
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{
35674
35678
  type: Inject,
@@ -44232,7 +44236,7 @@ class IgxColumnComponent {
44232
44236
  columnSizes[col.colStart - 1] = {
44233
44237
  ref: col,
44234
44238
  width: col.width === 'fit-content' ? col.autoSize :
44235
- col.widthSetByUser || this.grid.columnWidthSetByUser ? parseInt(col.calcWidth, 10) : null,
44239
+ col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth) : null,
44236
44240
  colSpan: col.gridColumnSpan,
44237
44241
  colEnd: col.colStart + col.gridColumnSpan,
44238
44242
  widthSetByUser: col.widthSetByUser
@@ -44261,7 +44265,7 @@ class IgxColumnComponent {
44261
44265
  columnSizes[col.colStart - 1] = {
44262
44266
  ref: col,
44263
44267
  width: col.width === 'fit-content' ? col.autoSize :
44264
- col.widthSetByUser || this.grid.columnWidthSetByUser ? parseInt(col.calcWidth, 10) : null,
44268
+ col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth) : null,
44265
44269
  colSpan: col.gridColumnSpan,
44266
44270
  colEnd: col.colStart + col.gridColumnSpan,
44267
44271
  widthSetByUser: col.widthSetByUser
@@ -44276,7 +44280,7 @@ class IgxColumnComponent {
44276
44280
  columnSizes[i] = {
44277
44281
  ref: col,
44278
44282
  width: col.width === 'fit-content' ? col.autoSize :
44279
- col.widthSetByUser || this.grid.columnWidthSetByUser ? parseInt(col.calcWidth, 10) : null,
44283
+ col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth) : null,
44280
44284
  colSpan: col.gridColumnSpan,
44281
44285
  colEnd: col.colStart + col.gridColumnSpan,
44282
44286
  widthSetByUser: col.widthSetByUser
@@ -44336,7 +44340,7 @@ class IgxColumnComponent {
44336
44340
  result.push(size.width + 'px');
44337
44341
  }
44338
44342
  else {
44339
- result.push(parseInt(this.grid.getPossibleColumnWidth(), 10) + 'px');
44343
+ result.push(parseFloat(this.grid.getPossibleColumnWidth()) + 'px');
44340
44344
  }
44341
44345
  }
44342
44346
  return result;
@@ -44743,8 +44747,11 @@ class IgxColumnComponent {
44743
44747
  const colWidth = this.width;
44744
44748
  const isPercentageWidth = colWidth && typeof colWidth === 'string' && colWidth.indexOf('%') !== -1;
44745
44749
  const isAutoWidth = colWidth && typeof colWidth === 'string' && colWidth === 'fit-content';
44746
- if (isPercentageWidth) {
44747
- this._calcWidth = Math.floor(parseFloat(colWidth) / 100 * this.grid.calcWidth);
44750
+ if (isPercentageWidth && this.grid.isColumnWidthSum) {
44751
+ this._calcWidth = this.grid.minColumnWidth;
44752
+ }
44753
+ else if (isPercentageWidth) {
44754
+ this._calcWidth = parseFloat(colWidth) / 100 * this.grid.calcWidth;
44748
44755
  }
44749
44756
  else if (!colWidth || isAutoWidth && !this.autoSize) {
44750
44757
  // no width
@@ -44753,7 +44760,7 @@ class IgxColumnComponent {
44753
44760
  else {
44754
44761
  this._calcWidth = this.width;
44755
44762
  }
44756
- this.calcPixelWidth = parseInt(this._calcWidth, 10);
44763
+ this.calcPixelWidth = parseFloat(this._calcWidth);
44757
44764
  }
44758
44765
  /**
44759
44766
  * @hidden
@@ -45450,7 +45457,7 @@ class IgxColumnGroupComponent extends IgxColumnComponent {
45450
45457
  if (val.hidden) {
45451
45458
  return acc;
45452
45459
  }
45453
- return acc + parseInt(val.calcWidth, 10);
45460
+ return acc + parseFloat(val.calcWidth);
45454
45461
  }, 0)}`;
45455
45462
  return width + 'px';
45456
45463
  }
@@ -45556,7 +45563,7 @@ class IgxColumnLayoutComponent extends IgxColumnGroupComponent {
45556
45563
  * @memberof IgxColumnGroupComponent
45557
45564
  */
45558
45565
  get width() {
45559
- const width = this.getFilledChildColumnSizes(this.children).reduce((acc, val) => acc + parseInt(val, 10), 0);
45566
+ const width = this.getFilledChildColumnSizes(this.children).reduce((acc, val) => acc + parseFloat(val), 0);
45560
45567
  return width;
45561
45568
  }
45562
45569
  /* blazorSuppress */
@@ -45571,7 +45578,7 @@ class IgxColumnLayoutComponent extends IgxColumnGroupComponent {
45571
45578
  let borderWidth = 0;
45572
45579
  if (this.headerGroup && this.headerGroup.hasLastPinnedChildColumn) {
45573
45580
  const headerStyles = this.grid.document.defaultView.getComputedStyle(this.headerGroup.nativeElement.children[0]);
45574
- borderWidth = parseInt(headerStyles.borderRightWidth, 10);
45581
+ borderWidth = parseFloat(headerStyles.borderRightWidth);
45575
45582
  }
45576
45583
  return super.getCalcWidth() + borderWidth;
45577
45584
  }
@@ -49462,8 +49469,8 @@ const GridResourceStringsEN = {
49462
49469
  igx_grid_excel_custom_dialog_add: 'add filter',
49463
49470
  igx_grid_excel_custom_dialog_clear: 'Clear filter',
49464
49471
  igx_grid_excel_custom_dialog_header: 'Custom auto-filter on column: ',
49465
- igx_grid_excel_cancel: 'cancel',
49466
- igx_grid_excel_apply: 'apply',
49472
+ igx_grid_excel_cancel: 'Cancel',
49473
+ igx_grid_excel_apply: 'Apply',
49467
49474
  igx_grid_excel_search_placeholder: 'Search',
49468
49475
  igx_grid_excel_select_all: 'Select All',
49469
49476
  igx_grid_excel_select_all_search_results: 'Select all search results',
@@ -50037,10 +50044,11 @@ function generateExpressionsListRecursive(expressions, operator, expressionsUIs)
50037
50044
  * @hidden
50038
50045
  */
50039
50046
  class IgxExcelStyleCustomDialogComponent {
50040
- constructor(overlayService, cdr, platform) {
50047
+ constructor(overlayService, cdr, platform, esf) {
50041
50048
  this.overlayService = overlayService;
50042
50049
  this.cdr = cdr;
50043
50050
  this.platform = platform;
50051
+ this.esf = esf;
50044
50052
  this.expressionsList = new Array();
50045
50053
  this._customDialogPositionSettings = {
50046
50054
  verticalDirection: VerticalAlignment.Middle,
@@ -50087,6 +50095,7 @@ class IgxExcelStyleCustomDialogComponent {
50087
50095
  }
50088
50096
  onClearButtonClick() {
50089
50097
  this.filteringService.clearFilter(this.column.field);
50098
+ this.selectedOperator = null;
50090
50099
  this.createInitialExpressionUIElement();
50091
50100
  this.cdr.detectChanges();
50092
50101
  }
@@ -50099,6 +50108,10 @@ class IgxExcelStyleCustomDialogComponent {
50099
50108
  this.toggle.close();
50100
50109
  }
50101
50110
  }
50111
+ cancelDialog() {
50112
+ this.esf.cancel();
50113
+ this.closeDialog();
50114
+ }
50102
50115
  onApplyButtonClick() {
50103
50116
  this.expressionsList = this.expressionsList.filter(element => element.expression.condition &&
50104
50117
  (element.expression.searchVal || element.expression.searchVal === 0 || element.expression.condition.isUnary));
@@ -50209,13 +50222,13 @@ class IgxExcelStyleCustomDialogComponent {
50209
50222
  this.expressionsContainer.nativeElement.scrollTop = this.expressionsContainer.nativeElement.scrollHeight;
50210
50223
  });
50211
50224
  }
50212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxExcelStyleCustomDialogComponent, deps: [{ token: IgxOverlayService }, { token: i0.ChangeDetectorRef }, { token: PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
50213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxExcelStyleCustomDialogComponent, isStandalone: true, selector: "igx-excel-style-custom-dialog", inputs: { expressionsList: "expressionsList", column: "column", selectedOperator: "selectedOperator", filteringService: "filteringService", overlayComponentId: "overlayComponentId" }, viewQueries: [{ propertyName: "toggle", first: true, predicate: ["toggle"], descendants: true, read: IgxToggleDirective, static: true }, { propertyName: "defaultExpressionTemplate", first: true, predicate: ["defaultExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "dateExpressionTemplate", first: true, predicate: ["dateExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "expressionsContainer", first: true, predicate: ["expressionsContainer"], descendants: true, static: true }, { propertyName: "expressionComponents", predicate: IgxExcelStyleDefaultExpressionComponent, descendants: true }, { propertyName: "expressionDateComponents", predicate: IgxExcelStyleDateExpressionComponent, descendants: true }], ngImport: i0, template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"closeDialog()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button type=\"button\"\n igxButton=\"contained\"\n (click)=\"onApplyButtonClick()\"\n (keydown)=\"onApplyButtonKeyDown($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxExcelStyleDateExpressionComponent, selector: "igx-excel-style-date-expression" }, { kind: "component", type: IgxExcelStyleDefaultExpressionComponent, selector: "igx-excel-style-default-expression", inputs: ["column", "expressionUI", "expressionsList", "grid"], outputs: ["expressionRemoved", "logicOperatorChanged"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }] }); }
50225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxExcelStyleCustomDialogComponent, deps: [{ token: IgxOverlayService }, { token: i0.ChangeDetectorRef }, { token: PlatformUtil }, { token: BaseFilteringComponent }], target: i0.ɵɵFactoryTarget.Component }); }
50226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxExcelStyleCustomDialogComponent, isStandalone: true, selector: "igx-excel-style-custom-dialog", inputs: { expressionsList: "expressionsList", column: "column", selectedOperator: "selectedOperator", filteringService: "filteringService", overlayComponentId: "overlayComponentId" }, viewQueries: [{ propertyName: "toggle", first: true, predicate: ["toggle"], descendants: true, read: IgxToggleDirective, static: true }, { propertyName: "defaultExpressionTemplate", first: true, predicate: ["defaultExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "dateExpressionTemplate", first: true, predicate: ["dateExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "expressionsContainer", first: true, predicate: ["expressionsContainer"], descendants: true, static: true }, { propertyName: "expressionComponents", predicate: IgxExcelStyleDefaultExpressionComponent, descendants: true }, { propertyName: "expressionDateComponents", predicate: IgxExcelStyleDateExpressionComponent, descendants: true }], ngImport: i0, template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"cancelDialog()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button type=\"button\"\n igxButton=\"contained\"\n (click)=\"onApplyButtonClick()\"\n (keydown)=\"onApplyButtonKeyDown($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxExcelStyleDateExpressionComponent, selector: "igx-excel-style-date-expression" }, { kind: "component", type: IgxExcelStyleDefaultExpressionComponent, selector: "igx-excel-style-default-expression", inputs: ["column", "expressionUI", "expressionsList", "grid"], outputs: ["expressionRemoved", "logicOperatorChanged"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }] }); }
50214
50227
  }
50215
50228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxExcelStyleCustomDialogComponent, decorators: [{
50216
50229
  type: Component,
50217
- args: [{ selector: 'igx-excel-style-custom-dialog', standalone: true, imports: [IgxToggleDirective, NgClass, NgIf, NgFor, IgxExcelStyleDateExpressionComponent, IgxExcelStyleDefaultExpressionComponent, IgxButtonDirective, IgxIconComponent], template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"closeDialog()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button type=\"button\"\n igxButton=\"contained\"\n (click)=\"onApplyButtonClick()\"\n (keydown)=\"onApplyButtonKeyDown($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n" }]
50218
- }], ctorParameters: () => [{ type: IgxOverlayService }, { type: i0.ChangeDetectorRef }, { type: PlatformUtil }], propDecorators: { expressionsList: [{
50230
+ args: [{ selector: 'igx-excel-style-custom-dialog', standalone: true, imports: [IgxToggleDirective, NgClass, NgIf, NgFor, IgxExcelStyleDateExpressionComponent, IgxExcelStyleDefaultExpressionComponent, IgxButtonDirective, IgxIconComponent], template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"cancelDialog()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button type=\"button\"\n igxButton=\"contained\"\n (click)=\"onApplyButtonClick()\"\n (keydown)=\"onApplyButtonKeyDown($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n" }]
50231
+ }], ctorParameters: () => [{ type: IgxOverlayService }, { type: i0.ChangeDetectorRef }, { type: PlatformUtil }, { type: BaseFilteringComponent }], propDecorators: { expressionsList: [{
50219
50232
  type: Input
50220
50233
  }], column: [{
50221
50234
  type: Input
@@ -55079,7 +55092,8 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
55079
55092
  this.filterValues = this.generateFilterValues();
55080
55093
  this.generateListData();
55081
55094
  this.expressionsList.forEach(expr => {
55082
- if (this.column.dataType === GridColumnDataType.String && this.column.filteringIgnoreCase && expr.expression.searchVal) {
55095
+ if (this.column.dataType === GridColumnDataType.String && this.column.filteringIgnoreCase
55096
+ && expr.expression.searchVal && expr.expression.searchVal instanceof Set) {
55083
55097
  this.modifyExpression(expr);
55084
55098
  }
55085
55099
  });
@@ -55929,7 +55943,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
55929
55943
  class IgxHeaderGroupWidthPipe {
55930
55944
  transform(width, minWidth, hasLayout) {
55931
55945
  const isFitContent = width === 'fit-content';
55932
- return hasLayout ? '' : isFitContent ? width : `${Math.max(parseInt(width), minWidth)}px`;
55946
+ return hasLayout ? '' : isFitContent ? width : `${Math.max(parseFloat(width), minWidth)}px`;
55933
55947
  }
55934
55948
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxHeaderGroupWidthPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
55935
55949
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.4", ngImport: i0, type: IgxHeaderGroupWidthPipe, isStandalone: true, name: "igxHeaderGroupWidth" }); }
@@ -55984,7 +55998,7 @@ class IgxColumnResizingService {
55984
55998
  * @hidden
55985
55999
  */
55986
56000
  getColumnHeaderRenderedWidth() {
55987
- return this.column.headerCell.nativeElement.getBoundingClientRect().width;
56001
+ return parseFloat(window.getComputedStyle(this.column.headerCell.nativeElement).width);
55988
56002
  }
55989
56003
  /**
55990
56004
  * @hidden
@@ -56040,9 +56054,9 @@ class IgxColumnResizingService {
56040
56054
  /**
56041
56055
  * Resizes the column regaridng to the column minWidth and maxWidth.
56042
56056
  */
56043
- resizeColumn(event) {
56057
+ resizeColumn(event, ratio = 1) {
56044
56058
  this.showResizer = false;
56045
- const diff = event.clientX - this.startResizePos;
56059
+ const diff = (event.clientX - this.startResizePos) / ratio;
56046
56060
  const colWidth = this.column.width;
56047
56061
  const isPercentageWidth = colWidth && typeof colWidth === 'string' && colWidth.indexOf('%') !== -1;
56048
56062
  let currentColWidth = parseFloat(colWidth);
@@ -60356,6 +60370,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
60356
60370
  * @internal
60357
60371
  */
60358
60372
  class IgxColumnResizerDirective {
60373
+ get ratio() {
60374
+ return this._ratio;
60375
+ }
60359
60376
  constructor(element, document, zone) {
60360
60377
  this.element = element;
60361
60378
  this.document = document;
@@ -60366,9 +60383,10 @@ class IgxColumnResizerDirective {
60366
60383
  this.resizeStart = new Subject();
60367
60384
  // eslint-disable-next-line @angular-eslint/no-output-native
60368
60385
  this.resize = new Subject();
60386
+ this._ratio = 1;
60369
60387
  this._destroy = new Subject();
60370
60388
  this.resizeStart.pipe(takeUntil(this._destroy), map((event) => event.clientX), switchMap((offset) => this.resize
60371
- .pipe(takeUntil(this._destroy), takeUntil(this.resizeEnd), map((event) => event.clientX - offset))))
60389
+ .pipe(takeUntil(this._destroy), takeUntil(this.resizeEnd), map((event) => (event.clientX - offset) / (this._ratio)))))
60372
60390
  .subscribe((pos) => {
60373
60391
  const left = this._left + pos;
60374
60392
  const min = this._left - this.restrictHResizeMin;
@@ -60411,7 +60429,12 @@ class IgxColumnResizerDirective {
60411
60429
  onMousedown(event) {
60412
60430
  event.preventDefault();
60413
60431
  const parent = this.element.nativeElement.parentElement.parentElement;
60414
- this.left = this._left = event.clientX - parent.getBoundingClientRect().left;
60432
+ const parentRectWidth = parent.getBoundingClientRect().width;
60433
+ const parentComputedWidth = parseFloat(window.getComputedStyle(parent).width);
60434
+ if (Math.abs(parentRectWidth - parentComputedWidth) > 1) {
60435
+ this._ratio = parentRectWidth / parentComputedWidth;
60436
+ }
60437
+ this.left = this._left = (event.clientX - parent.getBoundingClientRect().left) / this._ratio;
60415
60438
  this.top = event.target.getBoundingClientRect().top - parent.getBoundingClientRect().top;
60416
60439
  this.resizeStart.next(event);
60417
60440
  }
@@ -60450,11 +60473,11 @@ class IgxGridColumnResizerComponent {
60450
60473
  this.colResizingService = colResizingService;
60451
60474
  }
60452
60475
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxGridColumnResizerComponent, deps: [{ token: IgxColumnResizingService }], target: i0.ɵɵFactoryTarget.Component }); }
60453
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxGridColumnResizerComponent, isStandalone: true, selector: "igx-grid-column-resizer", inputs: { restrictResizerTop: "restrictResizerTop" }, viewQueries: [{ propertyName: "resizer", first: true, predicate: IgxColumnResizerDirective, descendants: true, static: true }], ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n", dependencies: [{ kind: "directive", type: IgxColumnResizerDirective, selector: "[igxResizer]", inputs: ["restrictHResizeMin", "restrictHResizeMax", "restrictResizerTop"], outputs: ["resizeEnd", "resizeStart", "resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60476
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxGridColumnResizerComponent, isStandalone: true, selector: "igx-grid-column-resizer", inputs: { restrictResizerTop: "restrictResizerTop" }, viewQueries: [{ propertyName: "resizer", first: true, predicate: IgxColumnResizerDirective, descendants: true, static: true }], ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event, resizer.ratio)\">\n</div>\n", dependencies: [{ kind: "directive", type: IgxColumnResizerDirective, selector: "[igxResizer]", inputs: ["restrictHResizeMin", "restrictHResizeMax", "restrictResizerTop"], outputs: ["resizeEnd", "resizeStart", "resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60454
60477
  }
60455
60478
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxGridColumnResizerComponent, decorators: [{
60456
60479
  type: Component,
60457
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-column-resizer', standalone: true, imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n" }]
60480
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-column-resizer', standalone: true, imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event, resizer.ratio)\">\n</div>\n" }]
60458
60481
  }], ctorParameters: () => [{ type: IgxColumnResizingService }], propDecorators: { restrictResizerTop: [{
60459
60482
  type: Input
60460
60483
  }], resizer: [{
@@ -64165,6 +64188,10 @@ class IgxGridBaseDirective {
64165
64188
  * @hidden @internal
64166
64189
  */
64167
64190
  this.filteringPipeTrigger = 0;
64191
+ /**
64192
+ * @hidden @internal
64193
+ */
64194
+ this.isColumnWidthSum = false;
64168
64195
  /**
64169
64196
  * @hidden @internal
64170
64197
  */
@@ -64293,7 +64320,6 @@ class IgxGridBaseDirective {
64293
64320
  this._rowSelectionMode = GridSelectionMode.none;
64294
64321
  this._selectRowOnClick = true;
64295
64322
  this._columnSelectionMode = GridSelectionMode.none;
64296
- this.isColumnWidthSum = false;
64297
64323
  this.rowEditPositioningStrategy = new RowEditPositionStrategy({
64298
64324
  horizontalDirection: HorizontalAlignment.Right,
64299
64325
  verticalDirection: VerticalAlignment.Bottom,
@@ -65338,7 +65364,7 @@ class IgxGridBaseDirective {
65338
65364
  let totalWidth = 0;
65339
65365
  let i = 0;
65340
65366
  for (i; i < cols.length; i++) {
65341
- totalWidth += parseInt(cols[i].calcWidth, 10) || 0;
65367
+ totalWidth += parseFloat(cols[i].calcWidth) || 0;
65342
65368
  }
65343
65369
  this._totalWidth = totalWidth;
65344
65370
  return totalWidth;
@@ -66102,7 +66128,7 @@ class IgxGridBaseDirective {
66102
66128
  }
66103
66129
  else {
66104
66130
  computedWidth = this.calcWidth ||
66105
- parseInt(this.document.defaultView.getComputedStyle(this.nativeElement).getPropertyValue('width'), 10);
66131
+ parseFloat(this.document.defaultView.getComputedStyle(this.nativeElement).getPropertyValue('width'));
66106
66132
  }
66107
66133
  const visibleChildColumns = this.visibleColumns.filter(c => !c.columnGroup);
66108
66134
  // Column layouts related
@@ -66121,7 +66147,7 @@ class IgxGridBaseDirective {
66121
66147
  const sumExistingWidths = columnsWithSetWidths
66122
66148
  .reduce((prev, curr) => {
66123
66149
  const colWidth = curr.width;
66124
- let widthValue = parseInt(colWidth, 10);
66150
+ let widthValue = parseFloat(colWidth);
66125
66151
  if (isNaN(widthValue)) {
66126
66152
  widthValue = MINIMUM_COLUMN_WIDTH$1;
66127
66153
  }
@@ -66135,9 +66161,9 @@ class IgxGridBaseDirective {
66135
66161
  return '0px';
66136
66162
  }
66137
66163
  computedWidth -= this.featureColumnsWidth();
66138
- const columnWidth = Math.floor(!Number.isFinite(sumExistingWidths) ?
66164
+ const columnWidth = !Number.isFinite(sumExistingWidths) ?
66139
66165
  Math.max(computedWidth / columnsToSize, this.minColumnWidth) :
66140
- Math.max((computedWidth - sumExistingWidths) / columnsToSize, this.minColumnWidth));
66166
+ Math.max((computedWidth - sumExistingWidths) / columnsToSize, this.minColumnWidth);
66141
66167
  return columnWidth + 'px';
66142
66168
  }
66143
66169
  /**
@@ -67106,8 +67132,11 @@ class IgxGridBaseDirective {
67106
67132
  width = this.nativeElement.offsetWidth;
67107
67133
  }
67108
67134
  if (this.width === null || !width) {
67109
- width = this.getColumnWidthSum();
67110
67135
  this.isColumnWidthSum = true;
67136
+ width = this.getColumnWidthSum();
67137
+ }
67138
+ else {
67139
+ this.isColumnWidthSum = false;
67111
67140
  }
67112
67141
  if (this.hasVerticalScroll() && this.width !== null) {
67113
67142
  width -= this.scrollSize;
@@ -67126,8 +67155,8 @@ class IgxGridBaseDirective {
67126
67155
  this._columnWidth = this.width !== null ? this.getPossibleColumnWidth() : this.minColumnWidth + 'px';
67127
67156
  }
67128
67157
  this._columns.forEach((column) => {
67129
- if (this.hasColumnLayouts && parseInt(this._columnWidth, 10)) {
67130
- const columnWidthCombined = parseInt(this._columnWidth, 10) * (column.colEnd ? column.colEnd - column.colStart : 1);
67158
+ if (this.hasColumnLayouts && parseFloat(this._columnWidth)) {
67159
+ const columnWidthCombined = parseFloat(this._columnWidth) * (column.colEnd ? column.colEnd - column.colStart : 1);
67131
67160
  column.defaultWidth = columnWidthCombined + 'px';
67132
67161
  }
67133
67162
  else {
@@ -74641,11 +74670,11 @@ class IgxPivotGridColumnResizerComponent extends IgxGridColumnResizerComponent {
74641
74670
  this.colResizingService = colResizingService;
74642
74671
  }
74643
74672
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxPivotGridColumnResizerComponent, deps: [{ token: IgxPivotColumnResizingService }], target: i0.ɵɵFactoryTarget.Component }); }
74644
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxPivotGridColumnResizerComponent, isStandalone: true, selector: "igx-pivot-grid-column-resizer", usesInheritance: true, ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n", dependencies: [{ kind: "directive", type: IgxColumnResizerDirective, selector: "[igxResizer]", inputs: ["restrictHResizeMin", "restrictHResizeMax", "restrictResizerTop"], outputs: ["resizeEnd", "resizeStart", "resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74673
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxPivotGridColumnResizerComponent, isStandalone: true, selector: "igx-pivot-grid-column-resizer", usesInheritance: true, ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event, resizer.ratio)\">\n</div>\n", dependencies: [{ kind: "directive", type: IgxColumnResizerDirective, selector: "[igxResizer]", inputs: ["restrictHResizeMin", "restrictHResizeMax", "restrictResizerTop"], outputs: ["resizeEnd", "resizeStart", "resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74645
74674
  }
74646
74675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxPivotGridColumnResizerComponent, decorators: [{
74647
74676
  type: Component,
74648
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-grid-column-resizer', standalone: true, imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n" }]
74677
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-grid-column-resizer', standalone: true, imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event, resizer.ratio)\">\n</div>\n" }]
74649
74678
  }], ctorParameters: () => [{ type: IgxPivotColumnResizingService }] });
74650
74679
 
74651
74680
  class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrategy {
@@ -83435,6 +83464,7 @@ class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective {
83435
83464
  const columns = [];
83436
83465
  const topLevelCols = cols.filter(c => c.level === 0);
83437
83466
  topLevelCols.forEach((col) => {
83467
+ col.grid = this;
83438
83468
  const ref = this._createColumn(col);
83439
83469
  ref.changeDetectorRef.detectChanges();
83440
83470
  columns.push(ref.instance);