igniteui-angular 12.1.4 → 12.1.8

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 (41) hide show
  1. package/bundles/igniteui-angular.umd.js +371 -65
  2. package/bundles/igniteui-angular.umd.js.map +1 -1
  3. package/esm2015/lib/core/i18n/resources.js +10 -1
  4. package/esm2015/lib/core/utils.js +2 -1
  5. package/esm2015/lib/date-picker/date-picker.component.js +9 -3
  6. package/esm2015/lib/directives/drag-drop/drag-drop.directive.js +8 -2
  7. package/esm2015/lib/directives/notification/notifications.directive.js +1 -1
  8. package/esm2015/lib/grids/api.service.js +25 -1
  9. package/esm2015/lib/grids/columns/column.component.js +5 -3
  10. package/esm2015/lib/grids/common/crud.service.js +4 -3
  11. package/esm2015/lib/grids/filtering/base/grid-filtering-row.component.js +2 -2
  12. package/esm2015/lib/grids/filtering/excel-style/excel-style-clear-filters.component.js +2 -2
  13. package/esm2015/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.js +2 -2
  14. package/esm2015/lib/grids/filtering/excel-style/excel-style-hiding.component.js +2 -2
  15. package/esm2015/lib/grids/filtering/excel-style/excel-style-pinning.component.js +2 -2
  16. package/esm2015/lib/grids/filtering/excel-style/excel-style-selecting.component.js +2 -2
  17. package/esm2015/lib/grids/grid/grid.component.js +2 -1
  18. package/esm2015/lib/grids/grid/groupby-row.component.js +3 -2
  19. package/esm2015/lib/grids/grid-base.directive.js +99 -4
  20. package/esm2015/lib/grids/tree-grid/tree-grid-api.service.js +25 -1
  21. package/esm2015/lib/grids/tree-grid/tree-grid.component.js +26 -1
  22. package/esm2015/lib/snackbar/snackbar.component.js +63 -26
  23. package/esm2015/lib/tabs/tabs.directive.js +2 -5
  24. package/esm2015/lib/toast/toast.component.js +64 -11
  25. package/esm2015/public_api.js +1 -1
  26. package/fesm2015/igniteui-angular.js +332 -52
  27. package/fesm2015/igniteui-angular.js.map +1 -1
  28. package/igniteui-angular.metadata.json +1 -1
  29. package/lib/core/i18n/resources.d.ts +9 -0
  30. package/lib/core/utils.d.ts +1 -0
  31. package/lib/date-picker/date-picker.component.d.ts +3 -2
  32. package/lib/directives/notification/notifications.directive.d.ts +2 -2
  33. package/lib/grids/api.service.d.ts +14 -0
  34. package/lib/grids/grid-base.directive.d.ts +38 -2
  35. package/lib/grids/tree-grid/tree-grid-api.service.d.ts +14 -0
  36. package/lib/grids/tree-grid/tree-grid.component.d.ts +20 -0
  37. package/lib/snackbar/snackbar.component.d.ts +41 -2
  38. package/lib/tabs/tabs.directive.d.ts +0 -2
  39. package/lib/toast/toast.component.d.ts +40 -2
  40. package/package.json +1 -1
  41. package/public_api.d.ts +2 -0
@@ -1729,6 +1729,7 @@
1729
1729
  };
1730
1730
  chunk();
1731
1731
  };
1732
+ var isConstructor = function (ref) { return typeof ref === 'function' && Boolean(ref.prototype) && Boolean(ref.prototype.constructor); };
1732
1733
  var reverseAnimationResolver = function (animation) { var _a; return (_a = oppositeAnimation.get(animation)) !== null && _a !== void 0 ? _a : animation; };
1733
1734
  var isHorizontalAnimation = function (animation) { return horizontalAnimations.includes(animation); };
1734
1735
  var isVerticalAnimation = function (animation) { return verticalAnimations.includes(animation); };
@@ -7143,8 +7144,8 @@
7143
7144
  */
7144
7145
  IgxRowAddCrudState.prototype.createAddRowParent = function (row, newRowAsChild) {
7145
7146
  var _this = this;
7146
- var rowIndex = row ? row.index : this.grid.rowList.length - 1;
7147
- var rowId = row ? row.rowID : (rowIndex >= 0 ? this.grid.rowList.last.rowID : null);
7147
+ var rowIndex = row ? row.index : -1;
7148
+ var rowId = row ? row.rowID : null;
7148
7149
  var isInPinnedArea = this.grid.isRecordPinnedByViewIndex(rowIndex);
7149
7150
  var pinIndex = this.grid.pinnedRecords.findIndex(function (x) { return x[_this.primaryKey] === rowId; });
7150
7151
  var unpinIndex = this.grid.getUnpinnedIndexById(rowId);
@@ -7278,6 +7279,7 @@
7278
7279
  this.grid.navigateTo(this.row.index, -1);
7279
7280
  var dummyRow = this.grid.gridAPI.get_row_by_index(this.row.index);
7280
7281
  dummyRow.triggerAddAnimation();
7282
+ dummyRow.cdr.detectChanges();
7281
7283
  dummyRow.addAnimationEnd.pipe(operators.first()).subscribe(function () {
7282
7284
  var cell = dummyRow.cells.find(function (c) { return c.editable; });
7283
7285
  if (cell) {
@@ -7425,6 +7427,20 @@
7425
7427
  GridBaseAPIService.prototype.get_row_by_index = function (rowIndex) {
7426
7428
  return this.grid.rowList.find(function (row) { return row.index === rowIndex; });
7427
7429
  };
7430
+ /**
7431
+ * Gets the rowID of the record at the specified data view index
7432
+ *
7433
+ * @param index
7434
+ * @param dataCollection
7435
+ */
7436
+ GridBaseAPIService.prototype.get_rec_id_by_index = function (index, dataCollection) {
7437
+ dataCollection = dataCollection || this.grid.data;
7438
+ if (index >= 0 && index < dataCollection.length) {
7439
+ var rec = dataCollection[index];
7440
+ return this.grid.primaryKey ? rec[this.grid.primaryKey] : rec;
7441
+ }
7442
+ return null;
7443
+ };
7428
7444
  GridBaseAPIService.prototype.get_cell_by_key = function (rowSelector, field) {
7429
7445
  var row = this.get_row_by_key(rowSelector);
7430
7446
  if (row && row.cells) {
@@ -7696,6 +7712,17 @@
7696
7712
  GridBaseAPIService.prototype.get_rec_by_id = function (rowID) {
7697
7713
  return this.grid.primaryKey ? this.getRowData(rowID) : rowID;
7698
7714
  };
7715
+ /**
7716
+ * Returns the index of the record in the data view by pk or -1 if not found or primaryKey is not set.
7717
+ *
7718
+ * @param pk
7719
+ * @param dataCollection
7720
+ */
7721
+ GridBaseAPIService.prototype.get_rec_index_by_id = function (pk, dataCollection) {
7722
+ var _this = this;
7723
+ dataCollection = dataCollection || this.grid.data;
7724
+ return this.grid.primaryKey ? dataCollection.findIndex(function (rec) { return rec[_this.grid.primaryKey] === pk; }) : -1;
7725
+ };
7699
7726
  GridBaseAPIService.prototype.allow_expansion_state_change = function (rowID, expanded) {
7700
7727
  return this.grid.expansionStates.get(rowID) !== expanded;
7701
7728
  };
@@ -10609,7 +10636,9 @@
10609
10636
  * @memberof IgxColumnComponent
10610
10637
  */
10611
10638
  set: function (classRef) {
10612
- this._summaries = new classRef();
10639
+ if (isConstructor(classRef)) {
10640
+ this._summaries = new classRef();
10641
+ }
10613
10642
  if (this.grid) {
10614
10643
  this.grid.summaryService.removeSummariesCachePerColumn(this.field);
10615
10644
  this.grid.summaryPipeTrigger++;
@@ -21659,6 +21688,15 @@
21659
21688
 
21660
21689
  /**
21661
21690
  * @hidden
21691
+ * IF YOU EDIT THIS OBJECT, DO NOT FORGET TO UPDATE
21692
+ * projects/igniteui-angular-i18n as well (create the appropriately named files,
21693
+ * containing the new/updated component string keys and EN strings for values + create a separate issue + pending-localization label)
21694
+ *
21695
+ * TODO Add automation tests:
21696
+ * 1) each of the folders/languages under \projects\igniteui-angular-i18n\src\ contain resources.ts file with matching components count.
21697
+ * \projects\igniteui-angular-i18n\src\BG\resources.ts contains IgxResourceStringsBG.count matching this.CurrentResourceStrings.count
21698
+ * 2) \igniteui-angular\projects\igniteui-angular\src\public_api.ts --> Check if the new interface is added
21699
+ * to IInputResourceStrings (just a proxy as it is later on imported in the angular-i18n package)
21662
21700
  */
21663
21701
  var CurrentResourceStrings = {
21664
21702
  GridResStrings: cloneValue(GridResourceStringsEN),
@@ -23729,7 +23767,7 @@
23729
23767
  * Dispatch custom igxDragEnter/igxDragLeave events based on current pointer position and if drop area is under.
23730
23768
  */
23731
23769
  IgxDragDirective.prototype.dispatchDragEvents = function (pageX, pageY, originalEvent) {
23732
- var e_1, _a;
23770
+ var e_1, _a, e_2, _b;
23733
23771
  var topDropArea;
23734
23772
  var customEventArgs = {
23735
23773
  startX: this._startX,
@@ -23741,8 +23779,24 @@
23741
23779
  };
23742
23780
  var elementsFromPoint = this.getElementsAtPoint(pageX, pageY);
23743
23781
  try {
23782
+ // Check for shadowRoot instance and use it if present
23744
23783
  for (var elementsFromPoint_1 = __values(elementsFromPoint), elementsFromPoint_1_1 = elementsFromPoint_1.next(); !elementsFromPoint_1_1.done; elementsFromPoint_1_1 = elementsFromPoint_1.next()) {
23745
- var element = elementsFromPoint_1_1.value;
23784
+ var elFromPoint = elementsFromPoint_1_1.value;
23785
+ if ((elFromPoint === null || elFromPoint === void 0 ? void 0 : elFromPoint.shadowRoot) !== null) {
23786
+ elementsFromPoint = elFromPoint.shadowRoot.elementsFromPoint(pageX, pageY);
23787
+ }
23788
+ }
23789
+ }
23790
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
23791
+ finally {
23792
+ try {
23793
+ if (elementsFromPoint_1_1 && !elementsFromPoint_1_1.done && (_a = elementsFromPoint_1.return)) _a.call(elementsFromPoint_1);
23794
+ }
23795
+ finally { if (e_1) throw e_1.error; }
23796
+ }
23797
+ try {
23798
+ for (var elementsFromPoint_2 = __values(elementsFromPoint), elementsFromPoint_2_1 = elementsFromPoint_2.next(); !elementsFromPoint_2_1.done; elementsFromPoint_2_1 = elementsFromPoint_2.next()) {
23799
+ var element = elementsFromPoint_2_1.value;
23746
23800
  if (element.getAttribute('droppable') === 'true' &&
23747
23801
  element !== this.ghostElement && element !== this.element.nativeElement) {
23748
23802
  topDropArea = element;
@@ -23750,12 +23804,12 @@
23750
23804
  }
23751
23805
  }
23752
23806
  }
23753
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
23807
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
23754
23808
  finally {
23755
23809
  try {
23756
- if (elementsFromPoint_1_1 && !elementsFromPoint_1_1.done && (_a = elementsFromPoint_1.return)) _a.call(elementsFromPoint_1);
23810
+ if (elementsFromPoint_2_1 && !elementsFromPoint_2_1.done && (_b = elementsFromPoint_2.return)) _b.call(elementsFromPoint_2);
23757
23811
  }
23758
- finally { if (e_1) throw e_1.error; }
23812
+ finally { if (e_2) throw e_2.error; }
23759
23813
  }
23760
23814
  if (topDropArea &&
23761
23815
  (!this._lastDropArea || (this._lastDropArea && this._lastDropArea !== topDropArea))) {
@@ -24184,7 +24238,7 @@
24184
24238
  return window.scrollX ? window.scrollX : (window.pageXOffset ? window.pageXOffset : 0);
24185
24239
  };
24186
24240
  IgxDropDirective.prototype.isDragLinked = function (drag) {
24187
- var e_2, _a, e_3, _b, e_4, _c, e_5, _d;
24241
+ var e_3, _a, e_4, _b, e_5, _c, e_6, _d;
24188
24242
  var dragLinkArray = drag.dragChannel instanceof Array;
24189
24243
  var dropLinkArray = this.dropChannel instanceof Array;
24190
24244
  if (!dragLinkArray && !dropLinkArray) {
@@ -24200,12 +24254,12 @@
24200
24254
  }
24201
24255
  }
24202
24256
  }
24203
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
24257
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
24204
24258
  finally {
24205
24259
  try {
24206
24260
  if (dropLinks_1_1 && !dropLinks_1_1.done && (_a = dropLinks_1.return)) _a.call(dropLinks_1);
24207
24261
  }
24208
- finally { if (e_2) throw e_2.error; }
24262
+ finally { if (e_3) throw e_3.error; }
24209
24263
  }
24210
24264
  }
24211
24265
  else if (dragLinkArray && !dropLinkArray) {
@@ -24218,12 +24272,12 @@
24218
24272
  }
24219
24273
  }
24220
24274
  }
24221
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
24275
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
24222
24276
  finally {
24223
24277
  try {
24224
24278
  if (dragLinks_1_1 && !dragLinks_1_1.done && (_b = dragLinks_1.return)) _b.call(dragLinks_1);
24225
24279
  }
24226
- finally { if (e_3) throw e_3.error; }
24280
+ finally { if (e_4) throw e_4.error; }
24227
24281
  }
24228
24282
  }
24229
24283
  else {
@@ -24233,28 +24287,28 @@
24233
24287
  for (var dragLinks_2 = __values(dragLinks), dragLinks_2_1 = dragLinks_2.next(); !dragLinks_2_1.done; dragLinks_2_1 = dragLinks_2.next()) {
24234
24288
  var draglink = dragLinks_2_1.value;
24235
24289
  try {
24236
- for (var dropLinks_2 = (e_5 = void 0, __values(dropLinks)), dropLinks_2_1 = dropLinks_2.next(); !dropLinks_2_1.done; dropLinks_2_1 = dropLinks_2.next()) {
24290
+ for (var dropLinks_2 = (e_6 = void 0, __values(dropLinks)), dropLinks_2_1 = dropLinks_2.next(); !dropLinks_2_1.done; dropLinks_2_1 = dropLinks_2.next()) {
24237
24291
  var droplink = dropLinks_2_1.value;
24238
24292
  if (draglink === droplink) {
24239
24293
  return true;
24240
24294
  }
24241
24295
  }
24242
24296
  }
24243
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
24297
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
24244
24298
  finally {
24245
24299
  try {
24246
24300
  if (dropLinks_2_1 && !dropLinks_2_1.done && (_d = dropLinks_2.return)) _d.call(dropLinks_2);
24247
24301
  }
24248
- finally { if (e_5) throw e_5.error; }
24302
+ finally { if (e_6) throw e_6.error; }
24249
24303
  }
24250
24304
  }
24251
24305
  }
24252
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
24306
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
24253
24307
  finally {
24254
24308
  try {
24255
24309
  if (dragLinks_2_1 && !dragLinks_2_1.done && (_c = dragLinks_2.return)) _c.call(dragLinks_2);
24256
24310
  }
24257
- finally { if (e_4) throw e_4.error; }
24311
+ finally { if (e_5) throw e_5.error; }
24258
24312
  }
24259
24313
  }
24260
24314
  return false;
@@ -41262,7 +41316,7 @@
41262
41316
  */
41263
41317
  var IgxDatePickerComponent = /** @class */ (function (_super) {
41264
41318
  __extends(IgxDatePickerComponent, _super);
41265
- function IgxDatePickerComponent(element, _localeId, _overlayService, _moduleRef, _injector, _renderer, platform, _displayDensityOptions, _inputGroupType) {
41319
+ function IgxDatePickerComponent(element, _localeId, _overlayService, _moduleRef, _injector, _renderer, platform, cdr, _displayDensityOptions, _inputGroupType) {
41266
41320
  var _this = _super.call(this, element, _localeId, _displayDensityOptions, _inputGroupType) || this;
41267
41321
  _this.element = element;
41268
41322
  _this._localeId = _localeId;
@@ -41271,6 +41325,7 @@
41271
41325
  _this._injector = _injector;
41272
41326
  _this._renderer = _renderer;
41273
41327
  _this.platform = platform;
41328
+ _this.cdr = cdr;
41274
41329
  _this._displayDensityOptions = _displayDensityOptions;
41275
41330
  _this._inputGroupType = _inputGroupType;
41276
41331
  /**
@@ -41781,6 +41836,10 @@
41781
41836
  if (this._ngControl) {
41782
41837
  this._statusChanges$ =
41783
41838
  this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));
41839
+ if (this._ngControl.control.validator) {
41840
+ this.inputGroup.isRequired = this.required;
41841
+ this.cdr.detectChanges();
41842
+ }
41784
41843
  }
41785
41844
  };
41786
41845
  /** @hidden @internal */
@@ -41999,6 +42058,7 @@
41999
42058
  { type: i0.Injector },
42000
42059
  { type: i0.Renderer2 },
42001
42060
  { type: PlatformUtil },
42061
+ { type: i0.ChangeDetectorRef },
42002
42062
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [DisplayDensityToken,] }] },
42003
42063
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [IGX_INPUT_GROUP_TYPE,] }] }
42004
42064
  ]; };
@@ -43549,7 +43609,7 @@
43549
43609
  IgxExcelStyleClearFiltersComponent.decorators = [
43550
43610
  { type: i0.Component, args: [{
43551
43611
  selector: 'igx-excel-style-clear-filters',
43552
- template: "<div *ngIf=\"esf.column\"\n tabindex=\"0\"\n [ngClass]=\"clearFilterClass()\"\n (keydown)=\"onClearFilterKeyDown($event)\"\n (click)=\"clearFilter()\">\n <span>{{ esf.grid.resourceStrings.igx_grid_excel_filter_clear }}</span>\n <igx-icon>clear</igx-icon>\n</div>\n"
43612
+ template: "<div *ngIf=\"esf.column\"\n tabindex=\"0\"\n [ngClass]=\"clearFilterClass()\"\n (keydown)=\"onClearFilterKeyDown($event)\"\n (click)=\"clearFilter()\"\n role=\"menuitem\">\n <span>{{ esf.grid.resourceStrings.igx_grid_excel_filter_clear }}</span>\n <igx-icon>clear</igx-icon>\n</div>\n"
43553
43613
  },] }
43554
43614
  ];
43555
43615
  IgxExcelStyleClearFiltersComponent.ctorParameters = function () { return [
@@ -45575,7 +45635,7 @@
45575
45635
  { type: i0.Component, args: [{
45576
45636
  preserveWhitespaces: false,
45577
45637
  selector: 'igx-excel-style-conditional-filter',
45578
- template: "<ng-container *ngIf=\"esf.column\">\n <div tabindex=\"0\"\n class=\"igx-excel-filter__actions-filter\"\n (keydown)=\"onTextFilterKeyDown($event)\"\n (click)=\"onTextFilterClick($event)\"\n [igxDropDownItemNavigation]=\"subMenu\">\n <span>{{ subMenuText }}</span>\n <igx-icon>keyboard_arrow_right</igx-icon>\n </div>\n\n <igx-drop-down\n #subMenu\n [maxHeight]=\"'397px'\"\n [displayDensity]=\"esf.grid.displayDensity\"\n (selectionChanging)=\"onSubMenuSelection($event)\"\n (closed)=\"onSubMenuClosed()\"\n [allowItemsFocus]=\"true\">\n <div>\n <igx-drop-down-item\n *ngFor=\"let condition of conditions\"\n [value]=\"condition\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"imx-icons\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{ translateCondition(condition) }}</span>\n </div>\n </igx-drop-down-item>\n <igx-drop-down-item *ngIf=\"showCustomFilterItem()\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon>filter_list</igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{ esf.grid.resourceStrings.igx_grid_excel_custom_filter }}</span>\n </div>\n </igx-drop-down-item>\n </div>\n </igx-drop-down>\n\n <igx-excel-style-custom-dialog\n #customDialog\n [column]=\"esf.column\"\n [filteringService]=\"esf.grid.filteringService\"\n [overlayComponentId]=\"esf.overlayComponentId\"\n [overlayService]=\"esf.overlayService\"\n [displayDensity]=\"esf.grid.displayDensity\">\n </igx-excel-style-custom-dialog>\n</ng-container>\n"
45638
+ template: "<ng-container *ngIf=\"esf.column\">\n <div tabindex=\"0\"\n class=\"igx-excel-filter__actions-filter\"\n (keydown)=\"onTextFilterKeyDown($event)\"\n (click)=\"onTextFilterClick($event)\"\n [igxDropDownItemNavigation]=\"subMenu\"\n role=\"menuitem\"\n aria-haspopup=\"true\">\n <span>{{ subMenuText }}</span>\n <igx-icon>keyboard_arrow_right</igx-icon>\n </div>\n\n <igx-drop-down\n #subMenu\n [maxHeight]=\"'397px'\"\n [displayDensity]=\"esf.grid.displayDensity\"\n (selectionChanging)=\"onSubMenuSelection($event)\"\n (closed)=\"onSubMenuClosed()\"\n [allowItemsFocus]=\"true\">\n <div>\n <igx-drop-down-item\n *ngFor=\"let condition of conditions\"\n [value]=\"condition\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"imx-icons\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{ translateCondition(condition) }}</span>\n </div>\n </igx-drop-down-item>\n <igx-drop-down-item *ngIf=\"showCustomFilterItem()\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon>filter_list</igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{ esf.grid.resourceStrings.igx_grid_excel_custom_filter }}</span>\n </div>\n </igx-drop-down-item>\n </div>\n </igx-drop-down>\n\n <igx-excel-style-custom-dialog\n #customDialog\n [column]=\"esf.column\"\n [filteringService]=\"esf.grid.filteringService\"\n [overlayComponentId]=\"esf.overlayComponentId\"\n [overlayService]=\"esf.overlayService\"\n [displayDensity]=\"esf.grid.displayDensity\">\n </igx-excel-style-custom-dialog>\n</ng-container>\n"
45579
45639
  },] }
45580
45640
  ];
45581
45641
  IgxExcelStyleConditionalFilterComponent.ctorParameters = function () { return [
@@ -45625,7 +45685,7 @@
45625
45685
  { type: i0.Component, args: [{
45626
45686
  preserveWhitespaces: false,
45627
45687
  selector: 'igx-excel-style-hiding',
45628
- template: "<div *ngIf=\"esf.column\"\n class=\"igx-excel-filter__actions-hide\"\n tabindex=\"0\"\n (click)=\"esf.onHideToggle()\">\n <span>{{ esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide }}</span>\n <igx-icon>{{ esf.column.hidden ? 'visibility' : 'visibility_off' }}</igx-icon>\n</div>\n"
45688
+ template: "<div *ngIf=\"esf.column\"\n class=\"igx-excel-filter__actions-hide\"\n tabindex=\"0\"\n (click)=\"esf.onHideToggle()\"\n role=\"menuitem\">\n <span>{{ esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide }}</span>\n <igx-icon>{{ esf.column.hidden ? 'visibility' : 'visibility_off' }}</igx-icon>\n</div>\n"
45629
45689
  },] }
45630
45690
  ];
45631
45691
  IgxExcelStyleHidingComponent.ctorParameters = function () { return [
@@ -45757,7 +45817,7 @@
45757
45817
  { type: i0.Component, args: [{
45758
45818
  preserveWhitespaces: false,
45759
45819
  selector: 'igx-excel-style-pinning',
45760
- template: "<div *ngIf=\"esf.column\"\n [ngClass]=\"esf.column.pinned ? 'igx-excel-filter__actions-unpin' : 'igx-excel-filter__actions-pin'\"\n (click)=\"esf.onPin()\"\n tabindex=\"0\">\n <span>{{ esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin }}</span>\n <igx-icon family=\"imx-icons\" name=\"{{ esf.column.pinned ? 'unpin-left' : 'pin-left' }}\"></igx-icon>\n</div>\n"
45820
+ template: "<div *ngIf=\"esf.column\"\n [ngClass]=\"esf.column.pinned ? 'igx-excel-filter__actions-unpin' : 'igx-excel-filter__actions-pin'\"\n (click)=\"esf.onPin()\"\n tabindex=\"0\"\n role=\"menuitem\">\n <span>{{ esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin }}</span>\n <igx-icon family=\"imx-icons\" name=\"{{ esf.column.pinned ? 'unpin-left' : 'pin-left' }}\"></igx-icon>\n</div>\n"
45761
45821
  },] }
45762
45822
  ];
45763
45823
  IgxExcelStylePinningComponent.ctorParameters = function () { return [
@@ -47419,7 +47479,7 @@
47419
47479
  { type: i0.Component, args: [{
47420
47480
  preserveWhitespaces: false,
47421
47481
  selector: 'igx-excel-style-selecting',
47422
- template: "<div *ngIf=\"esf.column\"\n [ngClass]=\"esf.selectedClass()\"\n tabindex=\"0\"\n (click)=\"esf.onSelect()\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon>done</igx-icon>\n</div>\n"
47482
+ template: "<div *ngIf=\"esf.column\"\n [ngClass]=\"esf.selectedClass()\"\n tabindex=\"0\"\n (click)=\"esf.onSelect()\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon>done</igx-icon>\n</div>\n"
47423
47483
  },] }
47424
47484
  ];
47425
47485
  IgxExcelStyleSelectingComponent.ctorParameters = function () { return [
@@ -51713,8 +51773,54 @@
51713
51773
  * ```
51714
51774
  */
51715
51775
  _this.animationDone = new i0.EventEmitter();
51776
+ _this._positionSettings = {
51777
+ horizontalDirection: exports.HorizontalAlignment.Center,
51778
+ verticalDirection: exports.VerticalAlignment.Bottom,
51779
+ openAnimation: i1.useAnimation(fadeIn, { params: { duration: '.35s', easing: 'cubic-bezier(0.0, 0.0, 0.2, 1)',
51780
+ fromPosition: 'translateY(100%)', toPosition: 'translateY(0)' } }),
51781
+ closeAnimation: i1.useAnimation(fadeOut, { params: { duration: '.2s', easing: 'cubic-bezier(0.4, 0.0, 1, 1)',
51782
+ fromPosition: 'translateY(0)', toPosition: 'translateY(100%)' } }),
51783
+ };
51716
51784
  return _this;
51717
51785
  }
51786
+ Object.defineProperty(IgxSnackbarComponent.prototype, "positionSettings", {
51787
+ /**
51788
+ * Get the position and animation settings used by the snackbar.
51789
+ * ```typescript
51790
+ * @ViewChild('snackbar', { static: true }) public snackbar: IgxSnackbarComponent;
51791
+ * let currentPosition: PositionSettings = this.snackbar.positionSettings
51792
+ * ```
51793
+ */
51794
+ get: function () {
51795
+ return this._positionSettings;
51796
+ },
51797
+ /**
51798
+ * Set the position and animation settings used by the snackbar.
51799
+ * ```html
51800
+ * <igx-snackbar [positionSettings]="newPositionSettings"></igx-snackbar>
51801
+ * ```
51802
+ * ```typescript
51803
+ * import { slideInTop, slideOutBottom } from 'igniteui-angular';
51804
+ * ...
51805
+ * @ViewChild('snackbar', { static: true }) public snackbar: IgxSnackbarComponent;
51806
+ * public newPositionSettings: PositionSettings = {
51807
+ * openAnimation: useAnimation(slideInTop, { params: { duration: '1000ms', fromPosition: 'translateY(100%)'}}),
51808
+ * closeAnimation: useAnimation(slideOutBottom, { params: { duration: '1000ms', fromPosition: 'translateY(0)'}}),
51809
+ * horizontalDirection: HorizontalAlignment.Left,
51810
+ * verticalDirection: VerticalAlignment.Middle,
51811
+ * horizontalStartPoint: HorizontalAlignment.Left,
51812
+ * verticalStartPoint: VerticalAlignment.Middle,
51813
+ * minSize: { height: 100, width: 100 }
51814
+ * };
51815
+ * this.snackbar.positionSettings = this.newPositionSettings;
51816
+ * ```
51817
+ */
51818
+ set: function (settings) {
51819
+ this._positionSettings = settings;
51820
+ },
51821
+ enumerable: false,
51822
+ configurable: true
51823
+ });
51718
51824
  /**
51719
51825
  * Shows the snackbar and hides it after the `displayTime` is over if `autoHide` is set to `true`.
51720
51826
  * ```typescript
@@ -51725,31 +51831,25 @@
51725
51831
  if (message !== undefined) {
51726
51832
  this.textMessage = message;
51727
51833
  }
51728
- var snackbarSettings = {
51729
- horizontalDirection: exports.HorizontalAlignment.Center,
51730
- verticalDirection: exports.VerticalAlignment.Bottom,
51731
- openAnimation: i1.useAnimation(slideInBottom, {
51732
- params: {
51733
- duration: '.35s',
51734
- easing: 'cubic-bezier(0.0, 0.0, 0.2, 1)',
51735
- fromPosition: 'translateY(100%)',
51736
- toPosition: 'translateY(0)'
51737
- }
51738
- }),
51739
- closeAnimation: i1.useAnimation(slideOutBottom, {
51740
- params: {
51741
- duration: '.2s',
51742
- easing: 'cubic-bezier(0.4, 0.0, 1, 1)',
51743
- fromPosition: 'translateY(0)',
51744
- toOpacity: 1,
51745
- toPosition: 'translateY(100%)'
51746
- }
51747
- })
51748
- };
51749
- this.strategy = this.outlet ? new ContainerPositionStrategy(snackbarSettings)
51750
- : new GlobalPositionStrategy(snackbarSettings);
51834
+ this.strategy = this.outlet ? new ContainerPositionStrategy(this.positionSettings)
51835
+ : new GlobalPositionStrategy(this.positionSettings);
51751
51836
  _super.prototype.open.call(this);
51752
51837
  };
51838
+ /**
51839
+ * Opens or closes the snackbar, depending on its current state.
51840
+ *
51841
+ * ```typescript
51842
+ * this.snackbar.toggle();
51843
+ * ```
51844
+ */
51845
+ IgxSnackbarComponent.prototype.toggle = function () {
51846
+ if (this.collapsed || this.isClosing) {
51847
+ this.open();
51848
+ }
51849
+ else {
51850
+ this.close();
51851
+ }
51852
+ };
51753
51853
  /**
51754
51854
  * @hidden
51755
51855
  */
@@ -51784,7 +51884,8 @@
51784
51884
  actionText: [{ type: i0.Input }],
51785
51885
  clicked: [{ type: i0.Output }],
51786
51886
  animationStarted: [{ type: i0.Output }],
51787
- animationDone: [{ type: i0.Output }]
51887
+ animationDone: [{ type: i0.Output }],
51888
+ positionSettings: [{ type: i0.Input }]
51788
51889
  };
51789
51890
  /**
51790
51891
  * @hidden
@@ -52306,7 +52407,7 @@
52306
52407
  .subscribe(function () {
52307
52408
  _this.cdr.markForCheck();
52308
52409
  });
52309
- this.focusEditElement();
52410
+ requestAnimationFrame(function () { return _this.focusEditElement(); });
52310
52411
  };
52311
52412
  Object.defineProperty(IgxGridFilteringRowComponent.prototype, "disabled", {
52312
52413
  get: function () {
@@ -54966,6 +55067,7 @@
54966
55067
  positionStrategy: _this.rowEditPositioningStrategy
54967
55068
  };
54968
55069
  _this.transactionChange$ = new rxjs.Subject();
55070
+ _this._rendered = false;
54969
55071
  _this.DRAG_SCROLL_DELTA = 10;
54970
55072
  /**
54971
55073
  * @hidden @internal
@@ -57213,6 +57315,7 @@
57213
57315
  _this.paginator.totalRecords = _this.totalRecords;
57214
57316
  _this.paginator.overlaySettings = { outlet: _this.outlet };
57215
57317
  }
57318
+ _this._rendered = true;
57216
57319
  });
57217
57320
  Promise.resolve().then(function () { return _this.rendered.next(true); });
57218
57321
  };
@@ -57574,16 +57677,27 @@
57574
57677
  configurable: true
57575
57678
  });
57576
57679
  Object.defineProperty(IgxGridBaseDirective.prototype, "columns", {
57680
+ /**
57681
+ * @hidden
57682
+ * @internal
57683
+ */
57684
+ get: function () {
57685
+ return this._columns;
57686
+ },
57687
+ enumerable: false,
57688
+ configurable: true
57689
+ });
57690
+ Object.defineProperty(IgxGridBaseDirective.prototype, "columnsCollection", {
57577
57691
  /**
57578
57692
  * Gets an array of `IgxColumnComponent`s.
57579
57693
  *
57580
57694
  * @example
57581
57695
  * ```typescript
57582
- * const colums = this.grid.columns.
57696
+ * const colums = this.grid.columnsCollection.
57583
57697
  * ```
57584
57698
  */
57585
57699
  get: function () {
57586
- return this._columns;
57700
+ return this._rendered ? this._columns : [];
57587
57701
  },
57588
57702
  enumerable: false,
57589
57703
  configurable: true
@@ -59527,6 +59641,94 @@
59527
59641
  if (commit === void 0) { commit = true; }
59528
59642
  this.crudService.endEdit(commit, event);
59529
59643
  };
59644
+ /**
59645
+ * Enters add mode by spawning the UI under the specified row by rowID.
59646
+ *
59647
+ * @remarks
59648
+ * If null is passed as rowID, the row adding UI is spawned as the first record in the data view
59649
+ * @remarks
59650
+ * Spawning the UI to add a child for a record only works if you provide a rowID
59651
+ * @example
59652
+ * ```typescript
59653
+ * this.grid.beginAddRowById('ALFKI');
59654
+ * this.grid.beginAddRowById('ALFKI', true);
59655
+ * this.grid.beginAddRowById(null);
59656
+ * ```
59657
+ * @param rowID - The rowID to spawn the add row UI for, or null to spawn it as the first record in the data view
59658
+ * @param asChild - Whether the record should be added as a child. Only applicable to igxTreeGrid.
59659
+ */
59660
+ IgxGridBaseDirective.prototype.beginAddRowById = function (rowID, asChild) {
59661
+ var _this = this;
59662
+ var index = rowID;
59663
+ if (rowID == null) {
59664
+ if (asChild) {
59665
+ console.warn('The record cannot be added as a child to an unspecified record.');
59666
+ return;
59667
+ }
59668
+ index = 0;
59669
+ }
59670
+ else {
59671
+ // find the index of the record with that PK
59672
+ index = this.gridAPI.get_rec_index_by_id(rowID, this.dataView);
59673
+ rowID = index;
59674
+ if (index === -1) {
59675
+ console.warn('No row with the specified ID was found.');
59676
+ return;
59677
+ }
59678
+ }
59679
+ if (!this.dataView.length) {
59680
+ this.beginAddRowForIndex(rowID, asChild);
59681
+ return;
59682
+ }
59683
+ // check if the index is valid - won't support anything outside the data view
59684
+ if (index >= 0 && index < this.dataView.length) {
59685
+ // check if the index is in the view port
59686
+ if ((index < this.virtualizationState.startIndex ||
59687
+ index >= this.virtualizationState.startIndex + this.virtualizationState.chunkSize) &&
59688
+ !this.isRecordPinnedByViewIndex(index)) {
59689
+ this.verticalScrollContainer.chunkLoad
59690
+ .pipe(operators.first(), operators.takeUntil(this.destroy$))
59691
+ .subscribe(function () {
59692
+ _this.beginAddRowForIndex(rowID, asChild);
59693
+ });
59694
+ this.navigateTo(index);
59695
+ this.notifyChanges(true);
59696
+ return;
59697
+ }
59698
+ this.beginAddRowForIndex(rowID, asChild);
59699
+ }
59700
+ else {
59701
+ console.warn('The row with the specified PK or index is outside of the current data view.');
59702
+ }
59703
+ };
59704
+ /**
59705
+ * Enters add mode by spawning the UI at the specified index.
59706
+ *
59707
+ * @remarks
59708
+ * Accepted values for index are integers from 0 to this.grid.dataView.length
59709
+ * @example
59710
+ * ```typescript
59711
+ * this.grid.beginAddRowByIndex(0);
59712
+ * ```
59713
+ * @param index - The index to spawn the UI at. Accepts integers from 0 to this.grid.dataView.length
59714
+ */
59715
+ IgxGridBaseDirective.prototype.beginAddRowByIndex = function (index) {
59716
+ if (index === 0) {
59717
+ return this.beginAddRowById(null);
59718
+ }
59719
+ return this.beginAddRowById(this.gridAPI.get_rec_id_by_index(index - 1, this.dataView));
59720
+ };
59721
+ IgxGridBaseDirective.prototype.beginAddRowForIndex = function (index, asChild) {
59722
+ if (asChild === void 0) { asChild = false; }
59723
+ var row = index == null ?
59724
+ null : this.rowList.find(function (r) { return r.index === index; });
59725
+ if (row !== undefined) {
59726
+ this.crudService.enterAddRowMode(row, asChild);
59727
+ }
59728
+ else {
59729
+ console.warn('No row with the specified PK or index was found.');
59730
+ }
59731
+ };
59530
59732
  IgxGridBaseDirective.prototype.switchTransactionService = function (val) {
59531
59733
  if (val) {
59532
59734
  this._transactions = this.transactionFactory.create("Base" /* Base */);
@@ -67690,7 +67892,8 @@
67690
67892
  */
67691
67893
  get: function () {
67692
67894
  var _this = this;
67693
- return this.groupRow.records.filter(function (rowID) { return _this.gridSelection.filteredSelectedRowIds.indexOf(_this.getRowID(rowID)) > -1; });
67895
+ var selectedIds = this.gridSelection.filteredSelectedRowIds;
67896
+ return this.groupRow.records.filter(function (rowID) { return selectedIds.indexOf(_this.getRowID(rowID)) > -1; });
67694
67897
  },
67695
67898
  enumerable: false,
67696
67899
  configurable: true
@@ -68655,6 +68858,7 @@
68655
68858
  */
68656
68859
  IgxGridComponent.prototype.clearGrouping = function (name) {
68657
68860
  this._gridAPI.clear_groupby(name);
68861
+ this.calculateGridSizes();
68658
68862
  this.notifyChanges(true);
68659
68863
  };
68660
68864
  IgxGridComponent.prototype.preventHeaderScroll = function (args) {
@@ -71619,6 +71823,31 @@
71619
71823
  IgxTreeGridAPIService.prototype.get_rec_by_id = function (rowID) {
71620
71824
  return this.grid.records.get(rowID);
71621
71825
  };
71826
+ /**
71827
+ * Gets the rowID of the record at the specified data view index
71828
+ *
71829
+ * @param index
71830
+ * @param dataCollection
71831
+ */
71832
+ IgxTreeGridAPIService.prototype.get_rec_id_by_index = function (index, dataCollection) {
71833
+ dataCollection = dataCollection || this.grid.data;
71834
+ if (index >= 0 && index < dataCollection.length) {
71835
+ var rec = dataCollection[index];
71836
+ return this.grid.primaryKey ? rec.data[this.grid.primaryKey] : rec.data;
71837
+ }
71838
+ return null;
71839
+ };
71840
+ /**
71841
+ * Returns the index of the record in the data view by pk or -1 if not found or primaryKey is not set.
71842
+ *
71843
+ * @param pk
71844
+ * @param dataCollection
71845
+ */
71846
+ IgxTreeGridAPIService.prototype.get_rec_index_by_id = function (pk, dataCollection) {
71847
+ var _this = this;
71848
+ dataCollection = dataCollection || this.grid.data;
71849
+ return this.grid.primaryKey ? dataCollection.findIndex(function (rec) { return rec.data[_this.grid.primaryKey] === pk; }) : -1;
71850
+ };
71622
71851
  IgxTreeGridAPIService.prototype.addRowToData = function (data, parentRowID) {
71623
71852
  if (parentRowID !== undefined && parentRowID !== null) {
71624
71853
  var state = this.grid.transactions.getState(parentRowID);
@@ -72578,6 +72807,31 @@
72578
72807
  this.pipeTrigger++;
72579
72808
  this.notifyChanges();
72580
72809
  };
72810
+ /**
72811
+ * Enters add mode by spawning the UI with the context of the specified row by index.
72812
+ *
72813
+ * @remarks
72814
+ * Accepted values for index are integers from 0 to this.grid.dataView.length
72815
+ * @remarks
72816
+ * When adding the row as a child, the parent row is the specified row.
72817
+ * @remarks
72818
+ * To spawn the UI on top, call the function with index = null or a negative number.
72819
+ * In this case trying to add this row as a child will result in error.
72820
+ * @example
72821
+ * ```typescript
72822
+ * this.grid.beginAddRowByIndex(10);
72823
+ * this.grid.beginAddRowByIndex(10, true);
72824
+ * this.grid.beginAddRowByIndex(null);
72825
+ * ```
72826
+ * @param index - The index to spawn the UI at. Accepts integers from 0 to this.grid.dataView.length
72827
+ * @param asChild - Whether the record should be added as a child. Only applicable to igxTreeGrid.
72828
+ */
72829
+ IgxTreeGridComponent.prototype.beginAddRowByIndex = function (index, asChild) {
72830
+ if (index === null || index < 0) {
72831
+ return this.beginAddRowById(null, asChild);
72832
+ }
72833
+ return this.beginAddRowById(this.gridAPI.get_rec_id_by_index(index, this.dataView), asChild);
72834
+ };
72581
72835
  /**
72582
72836
  * @hidden
72583
72837
  */
@@ -80266,8 +80520,6 @@
80266
80520
  /** @hidden */
80267
80521
  function IgxTabsDirective(builder) {
80268
80522
  var _this = _super.call(this, builder) || this;
80269
- /** @hidden */
80270
- _this.role = 'tabs';
80271
80523
  /**
80272
80524
  * Output to enable support for two-way binding on [(selectedIndex)]
80273
80525
  */
@@ -80517,7 +80769,6 @@
80517
80769
  { type: i1.AnimationBuilder }
80518
80770
  ]; };
80519
80771
  IgxTabsDirective.propDecorators = {
80520
- role: [{ type: i0.HostBinding, args: ['attr.role',] }],
80521
80772
  selectedIndex: [{ type: i0.Input }],
80522
80773
  disableAnimation: [{ type: i0.Input }],
80523
80774
  selectedIndexChange: [{ type: i0.Output }],
@@ -81298,8 +81549,55 @@
81298
81549
  * @memberof IgxToastComponent
81299
81550
  */
81300
81551
  _this.position = 'bottom';
81552
+ _this._positionSettings = {
81553
+ horizontalDirection: exports.HorizontalAlignment.Center,
81554
+ verticalDirection: _this.position === 'bottom'
81555
+ ? exports.VerticalAlignment.Bottom
81556
+ : _this.position === 'middle'
81557
+ ? exports.VerticalAlignment.Middle
81558
+ : exports.VerticalAlignment.Top,
81559
+ openAnimation: i1.useAnimation(fadeIn),
81560
+ closeAnimation: i1.useAnimation(fadeOut),
81561
+ };
81301
81562
  return _this;
81302
81563
  }
81564
+ Object.defineProperty(IgxToastComponent.prototype, "positionSettings", {
81565
+ /**
81566
+ * Get the position and animation settings used by the toast.
81567
+ * ```typescript
81568
+ * @ViewChild('toast', { static: true }) public toast: IgxToastComponent;
81569
+ * let currentPosition: PositionSettings = this.toast.positionSettings
81570
+ * ```
81571
+ */
81572
+ get: function () {
81573
+ return this._positionSettings;
81574
+ },
81575
+ /**
81576
+ * Set the position and animation settings used by the toast.
81577
+ * ```html
81578
+ * <igx-toast [positionSettings]="newPositionSettings"></igx-toast>
81579
+ * ```
81580
+ * ```typescript
81581
+ * import { slideInTop, slideOutBottom } from 'igniteui-angular';
81582
+ * ...
81583
+ * @ViewChild('toast', { static: true }) public toast: IgxToastComponent;
81584
+ * public newPositionSettings: PositionSettings = {
81585
+ * openAnimation: useAnimation(slideInTop, { params: { duration: '1000ms', fromPosition: 'translateY(100%)'}}),
81586
+ * closeAnimation: useAnimation(slideOutBottom, { params: { duration: '1000ms', fromPosition: 'translateY(0)'}}),
81587
+ * horizontalDirection: HorizontalAlignment.Left,
81588
+ * verticalDirection: VerticalAlignment.Middle,
81589
+ * horizontalStartPoint: HorizontalAlignment.Left,
81590
+ * verticalStartPoint: VerticalAlignment.Middle
81591
+ * };
81592
+ * this.toast.positionSettings = this.newPositionSettings;
81593
+ * ```
81594
+ */
81595
+ set: function (settings) {
81596
+ this._positionSettings = settings;
81597
+ },
81598
+ enumerable: false,
81599
+ configurable: true
81600
+ });
81303
81601
  Object.defineProperty(IgxToastComponent.prototype, "element", {
81304
81602
  /**
81305
81603
  * Gets the nativeElement of the toast.
@@ -81327,17 +81625,24 @@
81327
81625
  if (message !== undefined) {
81328
81626
  this.textMessage = message;
81329
81627
  }
81330
- var toastSettings = {
81331
- horizontalDirection: exports.HorizontalAlignment.Center,
81332
- verticalDirection: this.position === 'bottom'
81333
- ? exports.VerticalAlignment.Bottom
81334
- : this.position === 'middle'
81335
- ? exports.VerticalAlignment.Middle
81336
- : exports.VerticalAlignment.Top
81337
- };
81338
- this.strategy = new GlobalPositionStrategy(toastSettings);
81628
+ this.strategy = new GlobalPositionStrategy(this.positionSettings);
81339
81629
  _super.prototype.open.call(this);
81340
81630
  };
81631
+ /**
81632
+ * Opens or closes the toast, depending on its current state.
81633
+ *
81634
+ * ```typescript
81635
+ * this.toast.toggle();
81636
+ * ```
81637
+ */
81638
+ IgxToastComponent.prototype.toggle = function () {
81639
+ if (this.collapsed || this.isClosing) {
81640
+ this.open();
81641
+ }
81642
+ else {
81643
+ this.close();
81644
+ }
81645
+ };
81341
81646
  /**
81342
81647
  * @hidden
81343
81648
  */
@@ -81371,7 +81676,8 @@
81371
81676
  id: [{ type: i0.HostBinding, args: ['attr.id',] }, { type: i0.Input }],
81372
81677
  role: [{ type: i0.HostBinding, args: ['attr.role',] }, { type: i0.Input }],
81373
81678
  isVisibleChange: [{ type: i0.Output }],
81374
- position: [{ type: i0.Input }]
81679
+ position: [{ type: i0.Input }],
81680
+ positionSettings: [{ type: i0.Input }]
81375
81681
  };
81376
81682
  /**
81377
81683
  * @hidden