@energycap/components 0.28.13 → 0.28.15-ECAP-12239-Item-Picker-Table-Mode-Header.20220721-0858

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.
@@ -7327,7 +7327,7 @@
7327
7327
  function TableSelectableRowComponent() {
7328
7328
  /**The ID root to use for the checkbox and table cell */
7329
7329
  this.id = '';
7330
- this._enabled = true;
7330
+ this._selectionEnabled = true;
7331
7331
  /*Required for all rows. The row index this component represents, to allow it to know how to handle shift+clicks.
7332
7332
  Defaults to -1 which will cause the directive to behave as a header row*/
7333
7333
  this.rowIndex = -1;
@@ -7335,10 +7335,12 @@
7335
7335
  * if the checkbox is not the first column in the table
7336
7336
  */
7337
7337
  this.lockedColOptions = { border: false, left: 0 };
7338
- /**Automatically set to true based on checkbox state, used to highlight the row to match our table selected row styles */
7338
+ /** Automatically set to true based on checkbox state, used to highlight the row to match our table selected row styles */
7339
7339
  this.isSelected = false;
7340
- /**automatically set to true if no rowIndex is provided or the row index is less than zero */
7340
+ /** Automatically set to true if no rowIndex is provided or the row index is less than zero */
7341
7341
  this.isHeader = false;
7342
+ /** Set to true if you want the checkbox to be disabled */
7343
+ this.isCheckboxDisabled = false;
7342
7344
  /* A reference that we can change when a control is replaced to force the master checkbox reference to update
7343
7345
  without also replacing the form array that the host component may be watching for selected row changes */
7344
7346
  this.dependentCheckboxesReference = { controls: [] };
@@ -7346,23 +7348,22 @@
7346
7348
  /**Sends an event when the component is destroyed so that it can unsubscribe from any observables */
7347
7349
  this.destroyed = new rxjs.Subject();
7348
7350
  }
7349
- Object.defineProperty(TableSelectableRowComponent.prototype, "enabled", {
7350
- get: function () { return this._enabled; },
7351
+ Object.defineProperty(TableSelectableRowComponent.prototype, "isSelectionEnabled", {
7352
+ get: function () { return this._selectionEnabled; },
7351
7353
  /** Disables the selection functionality when false */
7352
- set: function (value) { this._enabled = value !== false; },
7354
+ set: function (value) { this._selectionEnabled = value !== false; },
7353
7355
  enumerable: false,
7354
7356
  configurable: true
7355
7357
  });
7356
7358
  /**Validate and populate the context as the table is dynamically built. Because the context is shared between the
7357
- * header and each of the rows, changes to it can be used to determine what is happening and hook up the correct
7358
- * subscriptions for selectAll. The user can provide an existing formArray for the rows and form control for the header,
7359
- * or it can just be the default empty ones created by the context class.
7360
- */
7359
+ * header and each of the rows, changes to it can be used to determine what is happening and hook up the correct
7360
+ * subscriptions for selectAll. The user can provide an existing formArray for the rows and form control for the header,
7361
+ * or it can just be the default empty ones created by the context class.
7362
+ */
7361
7363
  TableSelectableRowComponent.prototype.ngOnInit = function () {
7362
7364
  var _a, _b, _c;
7363
7365
  this.isHeader = this.rowIndex < 0;
7364
7366
  if (!this.context) {
7365
- console.error('ecTableSelectableRow requires a defined SelectableTableRowContext to be shared with all instances in one table.');
7366
7367
  }
7367
7368
  else {
7368
7369
  var rowCheckbox = (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.rowCheckboxes) === null || _b === void 0 ? void 0 : _b.at(this.rowIndex);
@@ -7383,7 +7384,7 @@
7383
7384
  this.formControl = this.context.rowCheckboxes.at(this.rowIndex);
7384
7385
  this.checkboxAttributeID = this.id + "_row" + this.rowIndex + "_ecCheckbox";
7385
7386
  }
7386
- if (changes.enabled && !this.enabled && ((_a = this.formControl) === null || _a === void 0 ? void 0 : _a.value) === true) {
7387
+ if (changes.isSelectionEnabled && !this.isSelectionEnabled && ((_a = this.formControl) === null || _a === void 0 ? void 0 : _a.value) === true) {
7387
7388
  this.formControl.setValue(false);
7388
7389
  }
7389
7390
  if (changes.isSelected && this.formControl) {
@@ -7407,16 +7408,8 @@
7407
7408
  * Handle shift and control select as well as checkbox click like windows explorer or the original bill lists do.
7408
7409
  */
7409
7410
  TableSelectableRowComponent.prototype.rowClicked = function (event) {
7410
- var _a, _b, _c;
7411
- if (!this.isHeader && this.enabled) {
7411
+ if (!this.isHeader && this.isSelectionEnabled && !this.isCheckboxDisabled) {
7412
7412
  var targetEl = event === null || event === void 0 ? void 0 : event.target;
7413
- var isCheckboxClick = (_c = (_b = (_a = targetEl === null || targetEl === void 0 ? void 0 : targetEl.classList) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === null || _c === void 0 ? void 0 : _c.includes('row-checkbox');
7414
- //normally clicking on a row checks only that row and unchecks everything else.
7415
- //If the user wants to instead add that row to the current selection, they can either hold the control key or
7416
- //use the row checkbox.
7417
- if (!event.ctrlKey && !isCheckboxClick) {
7418
- this.clearAllRows();
7419
- }
7420
7413
  //clicking on a row always toggles that row. Sometimes the shift-select will toggle it back
7421
7414
  this.formControl.setValue(!this.formControl.value);
7422
7415
  this.handleShiftSelect(event);
@@ -7436,7 +7429,7 @@
7436
7429
  else {
7437
7430
  this.context.rowAddedOrRemoved.next();
7438
7431
  //watch for the checkbox state to change on a child row and set the row isSelected class / highlight to match
7439
- //this way the rows match even if external code updates the form model
7432
+ //this way the rows match even if external code updates the form model
7440
7433
  (_a = this.formControl) === null || _a === void 0 ? void 0 : _a.valueChanges.pipe(operators.takeUntil(this.destroyed)).subscribe(function (value) {
7441
7434
  _this.isSelected = value;
7442
7435
  });
@@ -7484,18 +7477,19 @@
7484
7477
  TableSelectableRowComponent.decorators = [
7485
7478
  { type: i0.Component, args: [{
7486
7479
  selector: '[ecTableSelectableRow]',
7487
- template: "<!-- any elements of the existing table row that must go before the row selection checkbox can be marked with a class of before-checkbox -->\r\n<ng-content select=\".before-checkbox\"></ng-content>\r\n<ng-container *ngIf=\"enabled\">\r\n <th *ngIf=\"isHeader\"\r\n class=\"checkbox\"\r\n [ecTableLockedColumn]=\"lockedColOptions\">\r\n <ec-checkbox id=\"{{id}}_selectAll\"\r\n class=\"m-0\"\r\n *ngIf=\"context?.selectAllCheckbox\"\r\n [formModel]=\"context?.selectAllCheckbox\"\r\n [dependentCheckboxesGroup]=\"dependentCheckboxesReference\">\r\n </ec-checkbox>\r\n </th>\r\n <td *ngIf=\"!isHeader && formControl\"\r\n class=\"checkbox\"\r\n [ecTableLockedColumn]=\"lockedColOptions\">\r\n <ec-checkbox id=\"{{id}}_row{{rowIndex}}_checkbox\"\r\n [attr.id]=\"checkboxAttributeID\"\r\n class=\"m-0 row-checkbox\"\r\n [formModel]=\"formControl\">\r\n </ec-checkbox>\r\n </td>\r\n</ng-container>\r\n<!-- The rest of the table row -->\r\n<ng-content></ng-content>",
7480
+ template: "<!-- any elements of the existing table row that must go before the row selection checkbox can be marked with a class of before-checkbox -->\r\n<ng-content select=\".before-checkbox\"></ng-content>\r\n<ng-container *ngIf=\"isSelectionEnabled\">\r\n <th *ngIf=\"isHeader\"\r\n class=\"checkbox\"\r\n [ecTableLockedColumn]=\"lockedColOptions\">\r\n <ec-checkbox id=\"{{id}}_selectAll\"\r\n class=\"m-0\"\r\n *ngIf=\"context?.selectAllCheckbox\"\r\n [formModel]=\"context?.selectAllCheckbox\"\r\n [dependentCheckboxesGroup]=\"dependentCheckboxesReference\"\r\n [ignoreDisabledDependents]=\"false\">\r\n </ec-checkbox>\r\n </th>\r\n <td *ngIf=\"!isHeader && formControl\"\r\n class=\"checkbox\"\r\n [ecTableLockedColumn]=\"lockedColOptions\">\r\n <ec-checkbox id=\"{{id}}_row{{rowIndex}}_checkbox\"\r\n [readonly]=\"isCheckboxDisabled\"\r\n [attr.id]=\"checkboxAttributeID\"\r\n class=\"m-0 row-checkbox\"\r\n [formModel]=\"formControl\">\r\n </ec-checkbox>\r\n </td>\r\n</ng-container>\r\n<!-- The rest of the table row -->\r\n<ng-content></ng-content>",
7488
7481
  styles: [":host.is-enabled:not(.is-header){cursor:pointer}:host .checkbox{padding-left:1px;padding-right:1px;width:1.125rem}:host .checkbox:first-child{padding-left:.5rem;width:1.5625rem}:host.border-bottom-0 .checkbox{border-bottom:0}td.checkbox ec-checkbox ::ng-deep *{pointer-events:none}th.checkbox{vertical-align:var(--ec-vertical-align-checkbox-th,middle)}td.checkbox{vertical-align:var(--ec-vertical-align-checkbox-td,top)}"]
7489
7482
  },] }
7490
7483
  ];
7491
7484
  TableSelectableRowComponent.propDecorators = {
7492
7485
  id: [{ type: i0.HostBinding, args: ['attr.id',] }, { type: i0.Input }],
7493
- enabled: [{ type: i0.HostBinding, args: ['class.is-enabled',] }, { type: i0.Input, args: ['ecTableSelectableRow',] }],
7486
+ isSelectionEnabled: [{ type: i0.HostBinding, args: ['class.is-enabled',] }, { type: i0.Input, args: ['ecTableSelectableRow',] }],
7494
7487
  context: [{ type: i0.Input, args: ['selectionContext',] }],
7495
7488
  rowIndex: [{ type: i0.Input }],
7496
7489
  lockedColOptions: [{ type: i0.Input }],
7497
7490
  isSelected: [{ type: i0.HostBinding, args: ['class.is-selected',] }, { type: i0.Input }],
7498
7491
  isHeader: [{ type: i0.HostBinding, args: ['class.is-header',] }],
7492
+ isCheckboxDisabled: [{ type: i0.Input }],
7499
7493
  rowClicked: [{ type: i0.HostListener, args: ['click', ['$event'],] }]
7500
7494
  };
7501
7495
 
@@ -8859,6 +8853,8 @@
8859
8853
  * update this gets set to the values
8860
8854
  */
8861
8855
  this.selectedItems = [];
8856
+ /** True if there are selected items and at least one can be removed */
8857
+ this.selectedItemsClearable = false;
8862
8858
  /** Track by used for the searchable table rows */
8863
8859
  this.trackByIndex = function (index) { return index; };
8864
8860
  this.tableStatus = new Overlay('pending');
@@ -8899,8 +8895,30 @@
8899
8895
  * Called when the clear selection link button is clicked
8900
8896
  */
8901
8897
  ItemPickerComponent.prototype.onClearSelectionClick = function () {
8902
- this.selectionContext.selectedItemsMap = new Map();
8903
- this.selectionContext.rowCheckboxes.controls.forEach(function (control) { return control.setValue(false); });
8898
+ var e_1, _e;
8899
+ var _this = this;
8900
+ try {
8901
+ // Remove removable items from map
8902
+ // This is safe. See https://stackoverflow.com/questions/35940216/es6-is-it-dangerous-to-delete-elements-from-set-map-during-set-map-iteration
8903
+ for (var _f = __values(this.selectionContext.selectedItemsMap), _g = _f.next(); !_g.done; _g = _f.next()) {
8904
+ var _h = __read(_g.value, 2), key = _h[0], val = _h[1];
8905
+ if (!val.preventRemove) {
8906
+ this.selectionContext.selectedItemsMap.delete(key);
8907
+ }
8908
+ }
8909
+ }
8910
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
8911
+ finally {
8912
+ try {
8913
+ if (_g && !_g.done && (_e = _f.return)) _e.call(_f);
8914
+ }
8915
+ finally { if (e_1) throw e_1.error; }
8916
+ }
8917
+ this.selectionContext.rowCheckboxes.controls.forEach(function (control, index) {
8918
+ if (!_this.availableItems[index].preventRemove) {
8919
+ control.setValue(false);
8920
+ }
8921
+ });
8904
8922
  this.selectedItems = Array.from(this.selectionContext.selectedItemsMap.values());
8905
8923
  };
8906
8924
  /**
@@ -8944,6 +8962,7 @@
8944
8962
  }
8945
8963
  });
8946
8964
  _this.selectedItems = Array.from((_a = _this.selectionContext) === null || _a === void 0 ? void 0 : _a.selectedItemsMap.values());
8965
+ _this.selectedItemsClearable = _this.selectedItems.length > 0 && _this.selectedItems.some(function (i) { return !i.preventRemove; });
8947
8966
  });
8948
8967
  };
8949
8968
  /**
@@ -8989,7 +9008,7 @@
8989
9008
  ItemPickerComponent.decorators = [
8990
9009
  { type: i0.Component, args: [{
8991
9010
  selector: 'ec-item-picker',
8992
- template: "<div ecOverlay\r\n class=\"d-flex flex-grow card\"\r\n [status]=\"tableStatus?.status\"\r\n [message]=\"tableStatus?.message\"\r\n [displayAsMask]=\"true\">\r\n <ec-searchable-table id=\"{{id}}_searchableTable\"\r\n class=\"flex-grow\"\r\n [fillParentHeight]=\"true\"\r\n [hideHeader]=\"true\"\r\n [hideSearchControl]=\"true\"\r\n [removeCard]=\"true\"\r\n [pageable]=\"true\"\r\n [pageSize]=\"50\"\r\n [objectType]=\"itemName\"\r\n [formModel]=\"formModel\"\r\n [ready]=\"ready\"\r\n [getItems]=\"getItems\"\r\n [selectable]=\"true\"\r\n [noDataMessage]=\"noDataMessage\"\r\n [selectionContext]=\"selectionContext\"\r\n [status]=\"tableStatus\"\r\n (itemsChange)=\"onItemsChange($event)\"\r\n [style.--ec-flex-properties]=\"(availableItems.length || tableStatus.status === 'pending' || tableStatus.status === 'error' ) ? '1 1 auto' : '0 1 auto'\"\r\n [style.--ec-height-caption-footer]=\"'calc(2.5rem + 1px)'\"\r\n [tableLayoutFixed]=\"true\">\r\n <thead>\r\n <tr ecTableSelectableRow\r\n [selectionContext]=\"selectionContext\"\r\n class=\"border-bottom-0\">\r\n <ng-container *ngTemplateOutlet=\"internalizedAvailableHeaderTemplate;\"></ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let item of availableItems; index as rowIndex; trackBy: trackByIndex\">\r\n <tr ecTableSelectableRow\r\n [selectionContext]=\"selectionContext\"\r\n [rowIndex]=\"rowIndex\"\r\n [isSelected]=\"selectionContext?.selectedItemsMap.has(item.id)\"\r\n [style.--ec-vertical-align-checkbox-td]=\"'middle'\">\r\n <ng-container *ngTemplateOutlet=\"internalizedAvailableItemTemplate; context: {$implicit: item}\">\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </ec-searchable-table>\r\n\r\n <section class=\"flex-grow d-flex flex-column\">\r\n <ec-table [scrollable]=\"true\"\r\n class=\"flex-grow is-fixed\">\r\n <colgroup>\r\n <col>\r\n <col style=\"width: 2rem;\">\r\n </colgroup>\r\n <thead>\r\n <tr style=\"height: 3rem;\">\r\n <th colspan=\"2\"\r\n class=\"p-2 border-bottom-0\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"text-heading-2 font-color-primary flex-grow\">{{selectedTitle | translate}}</span>\r\n <a *ngIf=\"selectedItems.length\"\r\n id=\"{{id}}_clearSelection\"\r\n class=\"pl-2 ml-auto font-size-base\"\r\n href=\"javascript:void(0)\"\r\n (click)=\"onClearSelectionClick()\"\r\n translate>ClearSelection_TC</a>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"selectedItems.length\">\r\n <tr *ngFor=\"let item of selectedItems; last as isLast\"\r\n [class.border-bottom]=\"!isLast\">\r\n <td class=\"p-2\">\r\n <ng-container\r\n *ngTemplateOutlet=\"internalizedSelectedItemTemplate; context: {$implicit: item}\">\r\n </ng-container>\r\n </td>\r\n\r\n <td class=\"actions-col text-right\"\r\n style=\"vertical-align: middle;\">\r\n <ec-button id=\"{{id}}_removeSelected_{{item.id}}\"\r\n type=\"icon\"\r\n icon=\"ec-icon icon-cancel\"\r\n (clicked)=\"removeSelectedItem(item)\">\r\n </ec-button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr *ngIf=\"!selectedItems.length\">\r\n <td *ngIf=\"!noSelectedItemsMessage\"\r\n colspan=\"2\"\r\n class=\"p-2\"\r\n translate\r\n [translateParams]=\"{itemName: itemName | translate}\">ItemPickerNoItemsSelected_SC</td>\r\n <td *ngIf=\"noSelectedItemsMessage\"\r\n colspan=\"2\"\r\n class=\"p-2\"\r\n translate>{{noSelectedItemsMessage}}</td>\r\n </tr>\r\n </tbody>\r\n </ec-table>\r\n\r\n <footer *ngIf=\"selectedItems.length\"\r\n class=\"d-flex flex-shrink px-2 border-top align-items-center\"\r\n style=\"height: calc(2.5rem + 1px);\">\r\n <span class=\"ml-auto text-caption-1 font-color-hint\">\r\n {{selectedItems.length}} {{itemName | translate}}\r\n </span>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n\r\n\r\n<ng-template #defaultAvailableHeaderTemplate>\r\n <th class=\"text-heading-2 font-color-primary border-bottom-0\">{{availableTitle | translate}}</th>\r\n</ng-template>\r\n\r\n<ng-template #defaultAvailableItemTemplate\r\n let-item>\r\n <td>{{item.label}}</td>\r\n</ng-template>\r\n\r\n<ng-template #defaultSelectedItemTemplate\r\n let-item>\r\n {{item.label}}\r\n</ng-template>",
9011
+ template: "<div ecOverlay\r\n class=\"d-flex flex-grow card\"\r\n [status]=\"tableStatus?.status\"\r\n [message]=\"tableStatus?.message\"\r\n [displayAsMask]=\"true\">\r\n <ec-searchable-table id=\"{{id}}_searchableTable\"\r\n class=\"flex-grow\"\r\n [fillParentHeight]=\"true\"\r\n [hideHeader]=\"true\"\r\n [hideSearchControl]=\"true\"\r\n [removeCard]=\"true\"\r\n [pageable]=\"true\"\r\n [pageSize]=\"50\"\r\n [objectType]=\"itemName\"\r\n [formModel]=\"formModel\"\r\n [ready]=\"ready\"\r\n [getItems]=\"getItems\"\r\n [selectable]=\"true\"\r\n [noDataMessage]=\"noDataMessage\"\r\n [selectionContext]=\"selectionContext\"\r\n [status]=\"tableStatus\"\r\n (itemsChange)=\"onItemsChange($event)\"\r\n [style.--ec-flex-properties]=\"(availableItems.length || tableStatus.status === 'pending' || tableStatus.status === 'error' ) ? '1 1 auto' : '0 1 auto'\"\r\n [style.--ec-height-caption-footer]=\"'calc(2.5rem + 1px)'\"\r\n [tableLayoutFixed]=\"true\">\r\n <thead>\r\n <tr *ngIf=\"customAvailableHeaderTemplate\">\r\n <th [attr.colspan]=\"customAvailableHeaderNumberOfColumns\" class=\"text-heading-2 font-color-primary border-bottom-0\">{{availableTitle | translate}}</th>\r\n </tr>\r\n <tr ecTableSelectableRow\r\n [selectionContext]=\"selectionContext\"\r\n class=\"border-bottom-0\">\r\n <ng-container *ngTemplateOutlet=\"internalizedAvailableHeaderTemplate;\"></ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let item of availableItems; index as rowIndex; trackBy: trackByIndex\">\r\n <tr ecTableSelectableRow\r\n [selectionContext]=\"selectionContext\"\r\n [rowIndex]=\"rowIndex\"\r\n [isCheckboxDisabled]=\"item.preventRemove\"\r\n [isSelected]=\"selectionContext?.selectedItemsMap.has(item.id)\"\r\n [style.--ec-vertical-align-checkbox-td]=\"'middle'\">\r\n <!-- [defaultValue]=\"item.defaultSelected\" -->\r\n <ng-container *ngTemplateOutlet=\"internalizedAvailableItemTemplate; context: {$implicit: item}\">\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </ec-searchable-table>\r\n\r\n <section class=\"flex-grow d-flex flex-column\">\r\n <ec-table [scrollable]=\"true\"\r\n class=\"flex-grow is-fixed\">\r\n <colgroup>\r\n <col>\r\n <col style=\"width: 2rem;\">\r\n </colgroup>\r\n <thead>\r\n <tr style=\"height: 3rem;\">\r\n <th colspan=\"2\"\r\n class=\"p-2 border-bottom-0\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"text-heading-2 font-color-primary flex-grow\">{{selectedTitle | translate}}</span>\r\n <a *ngIf=\"selectedItemsClearable\"\r\n id=\"{{id}}_clearSelection\"\r\n class=\"pl-2 ml-auto font-size-base\"\r\n href=\"javascript:void(0)\"\r\n (click)=\"onClearSelectionClick()\"\r\n translate>ClearSelection_TC</a>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"selectedItems.length\">\r\n <tr *ngFor=\"let item of selectedItems; last as isLast\"\r\n [class.border-bottom]=\"!isLast\">\r\n <td class=\"p-2\">\r\n <ng-container\r\n *ngTemplateOutlet=\"internalizedSelectedItemTemplate; context: {$implicit: item}\">\r\n </ng-container>\r\n </td>\r\n\r\n <td class=\"actions-col text-right\"\r\n style=\"vertical-align: middle;\">\r\n <ec-button id=\"{{id}}_removeSelected_{{item.id}}\"\r\n *ngIf=\"!item.preventRemove\"\r\n type=\"icon\"\r\n icon=\"ec-icon icon-cancel\"\r\n (clicked)=\"removeSelectedItem(item)\">\r\n </ec-button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr *ngIf=\"!selectedItems.length\">\r\n <td *ngIf=\"!noSelectedItemsMessage\"\r\n colspan=\"2\"\r\n class=\"p-2\"\r\n translate\r\n [translateParams]=\"{itemName: itemName | translate}\">ItemPickerNoItemsSelected_SC</td>\r\n <td *ngIf=\"noSelectedItemsMessage\"\r\n colspan=\"2\"\r\n class=\"p-2\"\r\n translate>{{noSelectedItemsMessage}}</td>\r\n </tr>\r\n </tbody>\r\n </ec-table>\r\n\r\n <footer *ngIf=\"selectedItems.length\"\r\n class=\"d-flex flex-shrink px-2 border-top align-items-center\"\r\n style=\"height: calc(2.5rem + 1px);\">\r\n <span class=\"ml-auto text-caption-1 font-color-hint\">\r\n {{selectedItems.length}} {{itemName | translate}}\r\n </span>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n\r\n\r\n<ng-template #defaultAvailableHeaderTemplate>\r\n <th class=\"text-heading-2 font-color-primary border-bottom-0\">{{availableTitle | translate}}</th>\r\n</ng-template>\r\n\r\n<ng-template #defaultAvailableItemTemplate\r\n let-item>\r\n <td>{{item.label}}</td>\r\n</ng-template>\r\n\r\n<ng-template #defaultSelectedItemTemplate\r\n let-item>\r\n {{item.label}}\r\n</ng-template>",
8993
9012
  styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:flex}ec-searchable-table{border-right:2px solid #d2d7d9}"]
8994
9013
  },] }
8995
9014
  ];
@@ -9001,6 +9020,7 @@
9001
9020
  itemName: [{ type: i0.Input }],
9002
9021
  formModel: [{ type: i0.Input }],
9003
9022
  customAvailableHeaderTemplate: [{ type: i0.Input }],
9023
+ customAvailableHeaderNumberOfColumns: [{ type: i0.Input }],
9004
9024
  customAvailableItemTemplate: [{ type: i0.Input }],
9005
9025
  customSelectedItemTemplate: [{ type: i0.Input }],
9006
9026
  ready: [{ type: i0.Input }],
@@ -9013,6 +9033,28 @@
9013
9033
  defaultSelectedItemTemplate: [{ type: i0.ViewChild, args: ['defaultSelectedItemTemplate', { static: true },] }]
9014
9034
  };
9015
9035
 
9036
+ var HelpPopoverComponent = /** @class */ (function () {
9037
+ function HelpPopoverComponent() {
9038
+ this.id = '';
9039
+ this.text = '';
9040
+ this.contentPosition = 'top-left';
9041
+ }
9042
+ return HelpPopoverComponent;
9043
+ }());
9044
+ HelpPopoverComponent.decorators = [
9045
+ { type: i0.Component, args: [{
9046
+ selector: 'ec-help-popover',
9047
+ template: "<ec-popover id=\"{{id}}_popover\"\r\n icon=\"icon-help-circle\"\r\n [contentPosition]=\"contentPosition\"\r\n iconHoverClass=\"font-color-primary-light\">\r\n <div id=\"{{id}}_popoverContent\"\r\n class=\"help-popover-content text-body-1\"\r\n [class.is-right]=\"contentPosition == 'top-right' || contentPosition == 'bottom-right'\">\r\n <div *ngIf=\"text\"\r\n [innerHTML]=\"text | translate\"></div>\r\n <ng-content></ng-content>\r\n </div>\r\n</ec-popover>",
9048
+ styles: [".help-popover-content{background-color:#162f3b;color:#fff;max-width:15rem;padding:.375rem .5rem .375rem 1.75rem}.help-popover-content.is-right{padding:.375rem 1.75rem .375rem .5rem}"]
9049
+ },] }
9050
+ ];
9051
+ HelpPopoverComponent.ctorParameters = function () { return []; };
9052
+ HelpPopoverComponent.propDecorators = {
9053
+ id: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.id',] }],
9054
+ text: [{ type: i0.Input }],
9055
+ contentPosition: [{ type: i0.Input }]
9056
+ };
9057
+
9016
9058
  var ComponentsModule = /** @class */ (function () {
9017
9059
  function ComponentsModule() {
9018
9060
  }
@@ -9095,7 +9137,8 @@
9095
9137
  ResizableComponent,
9096
9138
  HighlightTextPipe,
9097
9139
  FormControlLabelComponent,
9098
- ItemPickerComponent
9140
+ ItemPickerComponent,
9141
+ HelpPopoverComponent
9099
9142
  ],
9100
9143
  imports: [
9101
9144
  common.CommonModule,
@@ -9172,7 +9215,8 @@
9172
9215
  ResizableComponent,
9173
9216
  HighlightTextPipe,
9174
9217
  FormControlLabelComponent,
9175
- ItemPickerComponent
9218
+ ItemPickerComponent,
9219
+ HelpPopoverComponent
9176
9220
  ]
9177
9221
  },] }
9178
9222
  ];
@@ -10335,6 +10379,7 @@
10335
10379
  exports.FormControlLabelComponent = FormControlLabelComponent;
10336
10380
  exports.FormGroupComponent = FormGroupComponent;
10337
10381
  exports.FormGroupHelper = FormGroupHelper;
10382
+ exports.HelpPopoverComponent = HelpPopoverComponent;
10338
10383
  exports.HierarchyBase = HierarchyBase;
10339
10384
  exports.HierarchyBaseTestInjectorFactory = HierarchyBaseTestInjectorFactory;
10340
10385
  exports.HierarchyItem = HierarchyItem;