novo-elements 6.0.0-next.6 → 6.0.0-next.7
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.
- package/bundles/novo-elements.umd.js +96 -36
- package/bundles/novo-elements.umd.js.map +1 -1
- package/bundles/novo-elements.umd.min.js +1 -1
- package/bundles/novo-elements.umd.min.js.map +1 -1
- package/elements/chips/Chips.scss +7 -3
- package/elements/data-table/data-table.component.scss +4 -1
- package/elements/dropdown/Dropdown.scss +1 -0
- package/elements/form/Form.scss +1 -0
- package/elements/form/extras/address/Address.scss +9 -13
- package/elements/select/Select.scss +1 -78
- package/elements/table/Table.scss +2 -2
- package/esm2015/src/elements/chips/Chips.js +3 -2
- package/esm2015/src/elements/common/option/option.component.js +10 -12
- package/esm2015/src/elements/common/overlay/Overlay.js +7 -1
- package/esm2015/src/elements/data-table/cell-headers/data-table-header-cell.component.js +19 -8
- package/esm2015/src/elements/date-picker/DatePickerInput.js +2 -2
- package/esm2015/src/elements/dropdown/Dropdown.js +4 -1
- package/esm2015/src/elements/form/ControlGroup.js +8 -2
- package/esm2015/src/elements/form/NovoFormGroup.js +2 -2
- package/esm2015/src/elements/layout/content/layout-content.component.js +4 -1
- package/esm2015/src/elements/select/Select.js +47 -13
- package/esm2015/src/elements/table/Table.js +3 -3
- package/esm2015/src/elements/table/extras/TableExtras.module.js +3 -2
- package/esm2015/src/elements/table/extras/table-filter/TableFilter.js +1 -2
- package/esm2015/src/elements/table/extras/th-sortable/ThSortable.js +1 -2
- package/esm2015/src/elements/time-picker/TimePickerInput.js +4 -1
- package/esm2015/src/services/novo-label-service.js +5 -1
- package/fesm2015/novo-elements.js +105 -39
- package/fesm2015/novo-elements.js.map +1 -1
- package/package.json +1 -1
- package/schematics/package.json +1 -1
- package/src/elements/common/option/option.component.d.ts +3 -1
- package/src/elements/data-table/cell-headers/data-table-header-cell.component.d.ts +1 -0
- package/src/elements/form/ControlGroup.d.ts +2 -0
- package/src/elements/layout/content/layout-content.component.d.ts +1 -0
- package/src/services/novo-label-service.d.ts +2 -0
|
@@ -20913,7 +20913,7 @@
|
|
|
20913
20913
|
}
|
|
20914
20914
|
Object.defineProperty(NovoFormGroup.prototype, "value", {
|
|
20915
20915
|
get: function () {
|
|
20916
|
-
return this.getRawValue();
|
|
20916
|
+
return this.getRawValue(); // The value property on Angular form groups do not include disabled form control values. Find way to address this.
|
|
20917
20917
|
},
|
|
20918
20918
|
set: function (v) {
|
|
20919
20919
|
this._value = v;
|
|
@@ -21019,6 +21019,7 @@
|
|
|
21019
21019
|
this.noItems = 'There are no items';
|
|
21020
21020
|
this.dateFormat = 'MM/dd/yyyy';
|
|
21021
21021
|
this.dateFormatPlaceholder = 'MM/DD/YYYY';
|
|
21022
|
+
this.localDatePlaceholder = 'mm/dd/yyyy';
|
|
21022
21023
|
this.timeFormatPlaceholderAM = 'hh:mm AM';
|
|
21023
21024
|
this.timeFormatPlaceholder24Hour = 'HH:mm';
|
|
21024
21025
|
this.timeFormatAM = 'AM';
|
|
@@ -21067,6 +21068,9 @@
|
|
|
21067
21068
|
NovoLabelService.prototype.dateFormatString = function () {
|
|
21068
21069
|
return this.dateFormat;
|
|
21069
21070
|
};
|
|
21071
|
+
NovoLabelService.prototype.localizedDatePlaceholder = function () {
|
|
21072
|
+
return this.localDatePlaceholder;
|
|
21073
|
+
};
|
|
21070
21074
|
NovoLabelService.prototype.tabbedGroupClearSuggestion = function (tabLabelPlural) {
|
|
21071
21075
|
return "Clear your search to see all " + tabLabelPlural + ".";
|
|
21072
21076
|
};
|
|
@@ -25437,9 +25441,12 @@
|
|
|
25437
25441
|
/** Emits when the state of the option changes and any parents have to be notified. */
|
|
25438
25442
|
this._stateChanges = new rxjs.Subject();
|
|
25439
25443
|
// (click) is overridden when defined by user.
|
|
25440
|
-
this.
|
|
25444
|
+
this._clickCapture = rxjs.fromEvent(this._element.nativeElement, 'click', { capture: true }).subscribe(function (evt) {
|
|
25441
25445
|
_this._handleDisabledClick(evt);
|
|
25442
25446
|
});
|
|
25447
|
+
this._clickPassive = rxjs.fromEvent(this._element.nativeElement, 'click').subscribe(function (evt) {
|
|
25448
|
+
setTimeout(function () { return _this._handlePassiveClick(evt); });
|
|
25449
|
+
});
|
|
25443
25450
|
}
|
|
25444
25451
|
Object.defineProperty(NovoOptionBase.prototype, "selectable", {
|
|
25445
25452
|
/** If there is no parent then nothing is managing the selection. */
|
|
@@ -25554,25 +25561,19 @@
|
|
|
25554
25561
|
return this.viewValue;
|
|
25555
25562
|
};
|
|
25556
25563
|
NovoOptionBase.prototype._handleDisabledClick = function (event) {
|
|
25557
|
-
console.log('Captured click');
|
|
25558
25564
|
if (this.disabled) {
|
|
25559
|
-
console.log('disabled');
|
|
25560
25565
|
event.preventDefault();
|
|
25561
25566
|
event.stopPropagation();
|
|
25562
25567
|
event.stopImmediatePropagation();
|
|
25563
25568
|
}
|
|
25564
|
-
|
|
25565
|
-
|
|
25566
|
-
|
|
25567
|
-
}
|
|
25568
|
-
else {
|
|
25569
|
-
console.log('selecting');
|
|
25569
|
+
};
|
|
25570
|
+
NovoOptionBase.prototype._handlePassiveClick = function (event) {
|
|
25571
|
+
if (!this.inert) {
|
|
25570
25572
|
this._selectViaInteraction();
|
|
25571
25573
|
}
|
|
25572
25574
|
};
|
|
25573
25575
|
/** Ensures the option is selected when activated from the keyboard. */
|
|
25574
25576
|
NovoOptionBase.prototype._handleKeydown = function (event) {
|
|
25575
|
-
console.log('KEY DOWN');
|
|
25576
25577
|
if (event.target instanceof HTMLInputElement && event.key === "Enter" /* Enter */) {
|
|
25577
25578
|
this._emitSelectionChangeEvent(!this.keepOpen);
|
|
25578
25579
|
}
|
|
@@ -25636,7 +25637,8 @@
|
|
|
25636
25637
|
};
|
|
25637
25638
|
NovoOptionBase.prototype.ngOnDestroy = function () {
|
|
25638
25639
|
this._stateChanges.complete();
|
|
25639
|
-
this.
|
|
25640
|
+
this._clickCapture.unsubscribe();
|
|
25641
|
+
this._clickPassive.unsubscribe();
|
|
25640
25642
|
};
|
|
25641
25643
|
/** Emits the selection change event. */
|
|
25642
25644
|
NovoOptionBase.prototype._emitSelectionChangeEvent = function (isUserInput) {
|
|
@@ -26380,6 +26382,12 @@
|
|
|
26380
26382
|
if (_this.overlayRef) {
|
|
26381
26383
|
_this.overlayRef.updatePosition();
|
|
26382
26384
|
_this.opening.emit(true);
|
|
26385
|
+
setTimeout(function () {
|
|
26386
|
+
// TODO: @charlesabarnes Remove this once we remove table
|
|
26387
|
+
if (_this.overlayRef) {
|
|
26388
|
+
_this.overlayRef.updatePosition();
|
|
26389
|
+
}
|
|
26390
|
+
});
|
|
26383
26391
|
}
|
|
26384
26392
|
});
|
|
26385
26393
|
};
|
|
@@ -26752,6 +26760,9 @@
|
|
|
26752
26760
|
}
|
|
26753
26761
|
});
|
|
26754
26762
|
}
|
|
26763
|
+
else if ("Escape" /* Escape */ === key) {
|
|
26764
|
+
this.closePanel();
|
|
26765
|
+
}
|
|
26755
26766
|
else {
|
|
26756
26767
|
var previouslyFocusedIndex = manager.activeItemIndex;
|
|
26757
26768
|
manager.onKeydown(event);
|
|
@@ -33330,7 +33341,8 @@
|
|
|
33330
33341
|
};
|
|
33331
33342
|
/** Emits change event to set the model value. */
|
|
33332
33343
|
NovoChipsElement.prototype._propagateChanges = function (fallbackValue) {
|
|
33333
|
-
|
|
33344
|
+
var _a;
|
|
33345
|
+
this.changed.emit({ value: ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) ? this.value : '', rawValue: this.items });
|
|
33334
33346
|
this.onModelChange(this.value);
|
|
33335
33347
|
};
|
|
33336
33348
|
/**
|
|
@@ -34977,7 +34989,6 @@
|
|
|
34977
34989
|
this.checkSortFilterState({ filter: this.state.filter, sort: this.state.sort }, true);
|
|
34978
34990
|
this.multiSelect = this.config.filterConfig && this.config.filterConfig.type ? this.config.filterConfig.type === 'multi-select' : false;
|
|
34979
34991
|
if (this.multiSelect) {
|
|
34980
|
-
console.log('is multiselect');
|
|
34981
34992
|
this.multiSelectedOptions = this.filter ? __spread(this.filter) : [];
|
|
34982
34993
|
}
|
|
34983
34994
|
};
|
|
@@ -35128,6 +35139,12 @@
|
|
|
35128
35139
|
}
|
|
35129
35140
|
}
|
|
35130
35141
|
};
|
|
35142
|
+
NovoDataTableCellHeader.prototype.handleEscapeKeydown = function (event) {
|
|
35143
|
+
if (!this.multiSelect) {
|
|
35144
|
+
this.error = false;
|
|
35145
|
+
this.dropdown.closePanel();
|
|
35146
|
+
}
|
|
35147
|
+
};
|
|
35131
35148
|
NovoDataTableCellHeader.prototype.clearOptionFilter = function () {
|
|
35132
35149
|
this.error = false;
|
|
35133
35150
|
if (this.optionFilter.length > 0) {
|
|
@@ -35175,7 +35192,6 @@
|
|
|
35175
35192
|
setTimeout(function () { return _this.filterInput.nativeElement.focus(); }, 0);
|
|
35176
35193
|
}
|
|
35177
35194
|
if (this.multiSelect && this.dropdown) {
|
|
35178
|
-
console.log('focussing');
|
|
35179
35195
|
this.dropdown._handleKeydown = function (event) {
|
|
35180
35196
|
_this.multiSelectOptionFilterHandleKeydown(event);
|
|
35181
35197
|
};
|
|
@@ -35247,7 +35263,7 @@
|
|
|
35247
35263
|
NovoDataTableCellHeader.decorators = [
|
|
35248
35264
|
{ type: i0.Component, args: [{
|
|
35249
35265
|
selector: '[novo-data-table-cell-config]',
|
|
35250
|
-
template: "\n <i class=\"bhi-{{ labelIcon }} label-icon\" *ngIf=\"labelIcon\" data-automation-id=\"novo-data-table-header-icon\"></i>\n <label data-automation-id=\"novo-data-table-label\">{{ label }}</label>\n <div>\n <novo-sort-button\n *ngIf=\"config.sortable\"\n data-automation-id=\"novo-data-table-sort\"\n tooltipPosition=\"left\"\n [tooltip]=\"labels.sort\"\n [attr.data-feature-id]=\"'novo-data-table-sort-' + this.id\"\n (sortChange)=\"sort()\"\n [value]=\"sortValue\"\n ></novo-sort-button>\n <novo-dropdown\n *ngIf=\"config.filterable\"\n side=\"right\"\n parentScrollSelector=\".novo-data-table-container\"\n containerClass=\"data-table-dropdown\"\n data-automation-id=\"novo-data-table-filter\"\n [multiple]=\"multiSelect\"\n >\n <novo-icon\n dropdownTrigger\n class=\"filter-button\"\n [class.filter-active]=\"filterActive\"\n [tooltip]=\"labels.filters\"\n [tooltipPosition]=\"'left'\"\n [attr.data-feature-id]=\"'novo-data-table-filter-' + this.id\"\n (click)=\"focusInput()\"\n >filter</novo-icon\n >\n <div class=\"header\">\n <novo-label>{{ labels.filters }}</novo-label>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n size=\"small\"\n icon=\"times\"\n (click)=\"clearFilter()\"\n *ngIf=\"filter !== null && filter !== undefined && filter !== ''\"\n data-automation-id=\"novo-data-table-filter-clear\"\n >\n {{ labels.clear }}\n </novo-button>\n </div>\n <ng-container [ngSwitch]=\"config.filterConfig.type\">\n <novo-optgroup *ngSwitchCase=\"'date'\">\n <ng-container *ngIf=\"!showCustomRange\">\n <novo-option\n [class.active]=\"activeDateFilter === option.label\"\n *ngFor=\"let option of config.filterConfig.options\"\n (click)=\"filterData(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + option.label\"\n >\n <span>{{ option.label }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"activeDateFilter === option.label\">check</novo-icon>\n </novo-option>\n </ng-container>\n <novo-option\n [class.active]=\"labels.customDateRange === activeDateFilter\"\n (click)=\"toggleCustomRange($event, true)\"\n *ngIf=\"config.filterConfig.allowCustomRange && !showCustomRange\"\n >\n <span>{{ labels.customDateRange }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"labels.customDateRange === activeDateFilter\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"showCustomRange\" keepOpen>\n <novo-stack>\n <div class=\"back-link\" (click)=\"toggleCustomRange($event, false)\">\n <i class=\"bhi-previous\"></i>{{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker
|
|
35266
|
+
template: "\n <i class=\"bhi-{{ labelIcon }} label-icon\" *ngIf=\"labelIcon\" data-automation-id=\"novo-data-table-header-icon\"></i>\n <label data-automation-id=\"novo-data-table-label\">{{ label }}</label>\n <div>\n <novo-sort-button\n *ngIf=\"config.sortable\"\n data-automation-id=\"novo-data-table-sort\"\n tooltipPosition=\"left\"\n [tooltip]=\"labels.sort\"\n [attr.data-feature-id]=\"'novo-data-table-sort-' + this.id\"\n (sortChange)=\"sort()\"\n [value]=\"sortValue\"\n ></novo-sort-button>\n <novo-dropdown\n *ngIf=\"config.filterable\"\n side=\"right\"\n parentScrollSelector=\".novo-data-table-container\"\n containerClass=\"data-table-dropdown\"\n data-automation-id=\"novo-data-table-filter\"\n [multiple]=\"multiSelect\"\n >\n <novo-icon\n dropdownTrigger\n class=\"filter-button\"\n [class.filter-active]=\"filterActive\"\n [tooltip]=\"labels.filters\"\n [tooltipPosition]=\"'left'\"\n [attr.data-feature-id]=\"'novo-data-table-filter-' + this.id\"\n (click)=\"focusInput()\"\n >filter</novo-icon\n >\n <div class=\"header\">\n <novo-label>{{ labels.filters }}</novo-label>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n size=\"small\"\n icon=\"times\"\n (click)=\"clearFilter()\"\n *ngIf=\"filter !== null && filter !== undefined && filter !== ''\"\n data-automation-id=\"novo-data-table-filter-clear\"\n >\n {{ labels.clear }}\n </novo-button>\n </div>\n <ng-container [ngSwitch]=\"config.filterConfig.type\">\n <novo-optgroup *ngSwitchCase=\"'date'\" (keydown.escape)=\"handleEscapeKeydown($event)\">\n <ng-container *ngIf=\"!showCustomRange\">\n <novo-option\n [class.active]=\"activeDateFilter === option.label\"\n *ngFor=\"let option of config.filterConfig.options\"\n (click)=\"filterData(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + option.label\"\n >\n <span>{{ option.label }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"activeDateFilter === option.label\">check</novo-icon>\n </novo-option>\n </ng-container>\n <novo-option\n [class.active]=\"labels.customDateRange === activeDateFilter\"\n (click)=\"toggleCustomRange($event, true)\"\n *ngIf=\"config.filterConfig.allowCustomRange && !showCustomRange\"\n >\n <span>{{ labels.customDateRange }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"labels.customDateRange === activeDateFilter\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"showCustomRange\" keepOpen>\n <novo-stack>\n <div class=\"back-link\" (click)=\"toggleCustomRange($event, false)\">\n <i class=\"bhi-previous\"></i>{{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker\n (onSelect)=\"filterData($event)\"\n [(ngModel)]=\"filter\"\n range=\"true\"\n (keydown.escape)=\"handleEscapeKeydown($event)\"\n ></novo-date-picker>\n </novo-stack>\n </novo-option>\n </novo-optgroup>\n <novo-optgroup *ngSwitchCase=\"'select'\">\n <novo-option\n [class.active]=\"filter === option\"\n *ngFor=\"let option of config.filterConfig.options\"\n (click)=\"filterData(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + (option?.label || option)\"\n >\n <span>{{ option?.label || option }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"option.hasOwnProperty('value') ? filter === option.value : filter === option\"\n >check</novo-icon\n >\n </novo-option>\n </novo-optgroup>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <novo-optgroup class=\"dropdown-list-filter\" (keydown)=\"multiSelectOptionFilterHandleKeydown($event)\">\n <novo-option class=\"filter-search\" inert>\n <novo-field flex>\n <input\n novoInput\n [(ngModel)]=\"optionFilter\"\n (ngModelChange)=\"multiSelectOptionFilter($event)\"\n #optionFilterInput\n data-automation-id=\"novo-data-table-multi-select-option-filter-input\"\n />\n <novo-icon novoSuffix>search</novo-icon>\n <novo-error class=\"error-text\" [hidden]=\"!error || !multiSelectHasVisibleOptions()\">{{\n labels.selectFilterOptions\n }}</novo-error>\n </novo-field>\n </novo-option>\n </novo-optgroup>\n <novo-optgroup class=\"dropdown-list-options\" (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-option\n *ngFor=\"let option of config.filterConfig.options\"\n [hidden]=\"multiSelectOptionIsHidden(option)\"\n (click)=\"toggleSelection(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + (option?.label || option)\"\n >\n <span>{{ option?.label || option }}</span>\n <novo-icon novoSuffix color=\"positive\">{{\n isSelected(option, multiSelectedOptions) ? 'checkbox-filled' : 'checkbox-empty'\n }}</novo-icon>\n </novo-option>\n </novo-optgroup>\n <novo-option class=\"filter-null-results\" [hidden]=\"multiSelectHasVisibleOptions()\">{{ labels.pickerEmpty }}</novo-option>\n </ng-container>\n <novo-optgroup *ngSwitchCase=\"'custom'\">\n <novo-option class=\"filter-search\" inert>\n <ng-container *ngTemplateOutlet=\"filterTemplate; context: { $implicit: config }\"></ng-container>\n </novo-option>\n </novo-optgroup>\n <novo-optgroup *ngSwitchDefault (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-option class=\"filter-search\" inert>\n <novo-field flex fullWidth>\n <input\n novoInput\n [type]=\"config.filterConfig.type\"\n [(ngModel)]=\"filter\"\n (ngModelChange)=\"filterData($event)\"\n #filterInput\n data-automation-id=\"novo-data-table-filter-input\"\n (keydown.escape)=\"handleEscapeKeydown($event)\"\n />\n <novo-icon novoSuffix>search</novo-icon>\n </novo-field>\n </novo-option>\n </novo-optgroup>\n </ng-container>\n <div class=\"footer\" *ngIf=\"multiSelect\">\n <novo-button theme=\"dialogue\" color=\"dark\" (click)=\"cancel()\" data-automation-id=\"novo-data-table-multi-select-cancel\">\n {{ labels.cancel }}\n </novo-button>\n <novo-button\n theme=\"dialogue\"\n color=\"positive\"\n (click)=\"filterMultiSelect()\"\n data-automation-id=\"novo-data-table-multi-select-filter\"\n >\n {{ labels.filters }}\n </novo-button>\n </div>\n </novo-dropdown>\n </div>\n <div class=\"spacer\"></div>\n <div class=\"data-table-header-resizable\" *ngIf=\"config.resizable\"><span (mousedown)=\"startResize($event)\"> </span></div>\n ",
|
|
35251
35267
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
35252
35268
|
},] }
|
|
35253
35269
|
];
|
|
@@ -35270,7 +35286,8 @@
|
|
|
35270
35286
|
filterTemplate: [{ type: i0.Input }],
|
|
35271
35287
|
resizable: [{ type: i0.HostBinding, args: ['class.resizable',] }],
|
|
35272
35288
|
column: [{ type: i0.Input, args: ['novo-data-table-cell-config',] }],
|
|
35273
|
-
multiSelectOptionFilterHandleKeydown: [{ type: i0.HostListener, args: ['keydown', ['$event'],] }]
|
|
35289
|
+
multiSelectOptionFilterHandleKeydown: [{ type: i0.HostListener, args: ['keydown', ['$event'],] }],
|
|
35290
|
+
handleEscapeKeydown: [{ type: i0.HostListener, args: ['keydown.escape', ['$event'],] }]
|
|
35274
35291
|
};
|
|
35275
35292
|
|
|
35276
35293
|
var DataTableSource = /** @class */ (function (_super) {
|
|
@@ -36978,7 +36995,7 @@
|
|
|
36978
36995
|
this.blurEvent = new i0.EventEmitter();
|
|
36979
36996
|
this.focusEvent = new i0.EventEmitter();
|
|
36980
36997
|
this.changeEvent = new i0.EventEmitter();
|
|
36981
|
-
this.placeholder = this.labels.
|
|
36998
|
+
this.placeholder = this.labels.localizedDatePlaceholder();
|
|
36982
36999
|
}
|
|
36983
37000
|
NovoDatePickerInputElement.prototype.ngOnInit = function () {
|
|
36984
37001
|
this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
|
|
@@ -38155,7 +38172,7 @@
|
|
|
38155
38172
|
/** Function that maps an option's control value to its display value in the trigger. */
|
|
38156
38173
|
_this.displayWith = null;
|
|
38157
38174
|
/** * Function to compare the option values with the selected values. */
|
|
38158
|
-
_this.compareWith = function (o1, o2) { return o1 === o2; };
|
|
38175
|
+
_this.compareWith = function (o1, o2) { return o1 === o2 || o1 === o2.id || (!Helpers.isEmpty(o1.id) && !Helpers.isEmpty(o2.id) && o1.id === o2.id); };
|
|
38159
38176
|
_this.header = {
|
|
38160
38177
|
open: false,
|
|
38161
38178
|
valid: true,
|
|
@@ -38278,8 +38295,16 @@
|
|
|
38278
38295
|
this._initializeSelection();
|
|
38279
38296
|
// Listen to selection changes to select and deselect options
|
|
38280
38297
|
this._selectionModel.changed.pipe(operators.takeUntil(this._destroy)).subscribe(function (event) {
|
|
38281
|
-
event.added.forEach(function (option) {
|
|
38282
|
-
|
|
38298
|
+
event.added.forEach(function (option) {
|
|
38299
|
+
if (option.select) {
|
|
38300
|
+
option.select();
|
|
38301
|
+
}
|
|
38302
|
+
});
|
|
38303
|
+
event.removed.forEach(function (option) {
|
|
38304
|
+
if (option.deselect) {
|
|
38305
|
+
option.deselect();
|
|
38306
|
+
}
|
|
38307
|
+
});
|
|
38283
38308
|
});
|
|
38284
38309
|
// Listen to QueryList changes
|
|
38285
38310
|
rxjs.merge(this.contentOptions.changes, this.viewOptions.changes)
|
|
@@ -38321,7 +38346,11 @@
|
|
|
38321
38346
|
*/
|
|
38322
38347
|
NovoSelectElement.prototype._setSelectionByValue = function (value) {
|
|
38323
38348
|
var _this = this;
|
|
38324
|
-
this._selectionModel.selected.forEach(function (option) {
|
|
38349
|
+
this._selectionModel.selected.forEach(function (option) {
|
|
38350
|
+
if (option.setInactiveStyles) {
|
|
38351
|
+
option.setInactiveStyles();
|
|
38352
|
+
}
|
|
38353
|
+
});
|
|
38325
38354
|
this._selectionModel.clear();
|
|
38326
38355
|
if (this.multiple && value) {
|
|
38327
38356
|
value.forEach(function (currentValue) { return _this._selectValue(currentValue); });
|
|
@@ -38355,11 +38384,25 @@
|
|
|
38355
38384
|
if (_this._selectionModel.isSelected(option)) {
|
|
38356
38385
|
return false;
|
|
38357
38386
|
}
|
|
38358
|
-
return
|
|
38387
|
+
return !Helpers.isEmpty(value) && !Helpers.isEmpty(option.value) && _this.compareWith(option.value, value);
|
|
38359
38388
|
});
|
|
38360
38389
|
if (correspondingOption) {
|
|
38361
38390
|
this._selectionModel.select(correspondingOption);
|
|
38362
38391
|
}
|
|
38392
|
+
else if (value && !correspondingOption) {
|
|
38393
|
+
// Double Check option not already added.
|
|
38394
|
+
var legacyOption = this.filteredOptions.find(function (it) { return it.value === value; });
|
|
38395
|
+
if (!legacyOption) {
|
|
38396
|
+
// Add a disabled option to the list and select it
|
|
38397
|
+
this.filteredOptions.push({
|
|
38398
|
+
disabled: true,
|
|
38399
|
+
tooltip: 'Value is not provided in list of valid options.',
|
|
38400
|
+
label: (value === null || value === void 0 ? void 0 : value.label) || value,
|
|
38401
|
+
value: value,
|
|
38402
|
+
});
|
|
38403
|
+
this.ref.detectChanges();
|
|
38404
|
+
}
|
|
38405
|
+
}
|
|
38363
38406
|
return correspondingOption;
|
|
38364
38407
|
};
|
|
38365
38408
|
NovoSelectElement.prototype.select = function (option, i, fireEvents) {
|
|
@@ -38405,9 +38448,13 @@
|
|
|
38405
38448
|
this._watchSelectionEvents();
|
|
38406
38449
|
};
|
|
38407
38450
|
NovoSelectElement.prototype._getDisplayValue = function (option) {
|
|
38408
|
-
if (!option)
|
|
38451
|
+
if (!option) {
|
|
38409
38452
|
return '';
|
|
38410
|
-
|
|
38453
|
+
}
|
|
38454
|
+
var toDisplay = option.viewValue;
|
|
38455
|
+
if (this.displayWith) {
|
|
38456
|
+
toDisplay = this.displayWith(option.value);
|
|
38457
|
+
}
|
|
38411
38458
|
// Simply falling back to an empty string if the display value is falsy does not work properly.
|
|
38412
38459
|
// The display value can also be the number zero and shouldn't fall back to an empty string.
|
|
38413
38460
|
var displayValue = toDisplay != null ? toDisplay : '';
|
|
@@ -38487,6 +38534,9 @@
|
|
|
38487
38534
|
}
|
|
38488
38535
|
});
|
|
38489
38536
|
}
|
|
38537
|
+
else if ("Escape" /* Escape */ === key) {
|
|
38538
|
+
this.closePanel();
|
|
38539
|
+
}
|
|
38490
38540
|
else {
|
|
38491
38541
|
var previouslyFocusedIndex = manager.activeItemIndex;
|
|
38492
38542
|
manager.onKeydown(event);
|
|
@@ -38618,11 +38668,11 @@
|
|
|
38618
38668
|
}
|
|
38619
38669
|
else {
|
|
38620
38670
|
this.filteredOptions = (this.options || [])
|
|
38621
|
-
.
|
|
38622
|
-
return
|
|
38671
|
+
.map(function (item) {
|
|
38672
|
+
return Object.assign(Object.assign({}, item), { disabled: item.readOnly || item.disabled });
|
|
38623
38673
|
})
|
|
38624
|
-
.map(function (
|
|
38625
|
-
return Object.assign(Object.assign({},
|
|
38674
|
+
.map(function (item) {
|
|
38675
|
+
return Object.assign(Object.assign({}, item), { active: false });
|
|
38626
38676
|
});
|
|
38627
38677
|
}
|
|
38628
38678
|
};
|
|
@@ -38677,7 +38727,7 @@
|
|
|
38677
38727
|
{ provide: NovoFieldControl, useExisting: NovoSelectElement },
|
|
38678
38728
|
{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoSelectElement },
|
|
38679
38729
|
],
|
|
38680
|
-
template: "\n <div class=\"novo-select-trigger\" #dropdownElement (click)=\"togglePanel(); (false)\" tabIndex=\"{{ disabled ? -1 : 0 }}\" type=\"button\">\n <span class=\"novo-select-placeholder\" *ngIf=\"empty\">{{ placeholder }}</span>\n <span class=\"novo-select-display-value\" *ngIf=\"!empty\">{{ displayValue }}</span>\n <i class=\"bhi-collapse\"></i>\n </div>\n <novo-overlay-template\n [parent]=\"elementRef\"\n [position]=\"position\"\n [width]=\"overlayWidth\"\n [height]=\"overlayHeight\"\n (closing)=\"dropdown.nativeElement.focus()\"\n >\n <div #panel class=\"novo-select-list\" tabIndex=\"-1\" [class.has-header]=\"headerConfig\" [class.active]=\"panelOpen\">\n <novo-option *ngIf=\"headerConfig\" class=\"select-header\" [class.open]=\"header.open\">\n <novo-button *ngIf=\"!header.open\" icon=\"add-thin\" (click)=\"toggleHeader($event); (false)\" tabIndex=\"-1\" class=\"header\">\n {{ headerConfig.label }}\n </novo-button>\n <div *ngIf=\"header.open\" [ngClass]=\"{ active: header.open }\">\n <input\n autofocus\n type=\"text\"\n [placeholder]=\"headerConfig.placeholder\"\n [attr.id]=\"name\"\n autocomplete=\"off\"\n [value]=\"header.value\"\n [ngClass]=\"{ invalid: !header.valid }\"\n />\n <footer>\n <novo-button (click)=\"toggleHeader($event, false)\">{{ labels.cancel }}</novo-button>\n <novo-button (click)=\"saveHeader()\" class=\"primary\">{{ labels.save }}</novo-button>\n </footer>\n </div>\n </novo-option>\n <!-- Declarative Content Goes Here -->\n <ng-content></ng-content>\n <!-- Data Driven Content Goes Here -->\n <ng-container *ngFor=\"let option of filteredOptions; let i = index\">\n <novo-option\n *ngIf=\"!option.divider; else divider\"\n class=\"select-item\"\n [
|
|
38730
|
+
template: "\n <div class=\"novo-select-trigger\" #dropdownElement (click)=\"togglePanel(); (false)\" tabIndex=\"{{ disabled ? -1 : 0 }}\" type=\"button\">\n <span class=\"novo-select-placeholder\" *ngIf=\"empty\">{{ placeholder }}</span>\n <span class=\"novo-select-display-value\" *ngIf=\"!empty\">{{ displayValue }}</span>\n <i class=\"bhi-collapse\"></i>\n </div>\n <novo-overlay-template\n [parent]=\"elementRef\"\n [position]=\"position\"\n [width]=\"overlayWidth\"\n [height]=\"overlayHeight\"\n (closing)=\"dropdown.nativeElement.focus()\"\n >\n <div #panel class=\"novo-select-list\" tabIndex=\"-1\" [class.has-header]=\"headerConfig\" [class.active]=\"panelOpen\">\n <novo-option *ngIf=\"headerConfig\" class=\"select-header\" [class.open]=\"header.open\">\n <novo-button *ngIf=\"!header.open\" icon=\"add-thin\" (click)=\"toggleHeader($event); (false)\" tabIndex=\"-1\" class=\"header\">\n {{ headerConfig.label }}\n </novo-button>\n <div *ngIf=\"header.open\" [ngClass]=\"{ active: header.open }\">\n <input\n autofocus\n type=\"text\"\n [placeholder]=\"headerConfig.placeholder\"\n [attr.id]=\"name\"\n autocomplete=\"off\"\n [value]=\"header.value\"\n [ngClass]=\"{ invalid: !header.valid }\"\n />\n <footer>\n <novo-button (click)=\"toggleHeader($event, false)\">{{ labels.cancel }}</novo-button>\n <novo-button (click)=\"saveHeader()\" class=\"primary\">{{ labels.save }}</novo-button>\n </footer>\n </div>\n </novo-option>\n <!-- Declarative Content Goes Here -->\n <ng-content></ng-content>\n <!-- Data Driven Content Goes Here -->\n <ng-container *ngFor=\"let option of filteredOptions; let i = index\">\n <novo-option\n *ngIf=\"!option.divider; else divider\"\n class=\"select-item\"\n [disabled]=\"option.disabled\"\n [class.active]=\"option.active\"\n [attr.data-automation-value]=\"option.label\"\n [value]=\"option.value\"\n [tooltip]=\"option.tooltip\"\n [tooltipPosition]=\"option.tooltipPosition || 'right'\"\n >\n <span [innerHtml]=\"highlight(option.label, filterTerm)\"></span> <i *ngIf=\"option.active\" class=\"bhi-check\"></i>\n </novo-option>\n <ng-template #divider>\n <novo-divider class=\"select-item-divider\" [class.with-label]=\"option.label\" [class.without-label]=\"!option.label\">\n {{ option?.label }}\n </novo-divider>\n </ng-template>\n </ng-container>\n </div>\n </novo-overlay-template>\n "
|
|
38681
38731
|
},] }
|
|
38682
38732
|
];
|
|
38683
38733
|
NovoSelectElement.ctorParameters = function () { return [
|
|
@@ -41335,6 +41385,9 @@
|
|
|
41335
41385
|
NovoTimePickerInputElement.prototype.dispatchOnChange = function (newValue, skip) {
|
|
41336
41386
|
if (skip === void 0) { skip = false; }
|
|
41337
41387
|
if (newValue !== this.value) {
|
|
41388
|
+
if (this.value instanceof Date && newValue instanceof Date && this.value.getTime() === newValue.getTime()) {
|
|
41389
|
+
return;
|
|
41390
|
+
}
|
|
41338
41391
|
this._onChange(newValue);
|
|
41339
41392
|
!skip && this.writeValue(newValue);
|
|
41340
41393
|
}
|
|
@@ -43574,6 +43627,10 @@
|
|
|
43574
43627
|
this._remove = false;
|
|
43575
43628
|
this._edit = false;
|
|
43576
43629
|
this._collapsible = false;
|
|
43630
|
+
// Edit icon at the end of each row (no bhi- prefix)
|
|
43631
|
+
this.editIcon = 'edit';
|
|
43632
|
+
// Remove icon at the end of each row (no bhi- prefix)
|
|
43633
|
+
this.removeIcon = 'delete-o';
|
|
43577
43634
|
this.onRemove = new i0.EventEmitter();
|
|
43578
43635
|
this.onEdit = new i0.EventEmitter();
|
|
43579
43636
|
this.onAdd = new i0.EventEmitter();
|
|
@@ -43855,7 +43912,7 @@
|
|
|
43855
43912
|
NovoControlGroup.decorators = [
|
|
43856
43913
|
{ type: i0.Component, args: [{
|
|
43857
43914
|
selector: 'novo-control-group',
|
|
43858
|
-
template: "<h6 class=\"novo-section-header\" *ngIf=\"label\">\n <span (click)=\"toggle($event)\" [class.clickable]=\"collapsible\">\n <i *ngIf=\"icon && !collapsible\" [ngClass]=\"icon\" [attr.data-automation-id]=\"'novo-control-group-icon-' + key\"></i>\n <i *ngIf=\"collapsible\" class=\"bhi-next\" [class.toggled]=\"toggled\"\n [attr.data-automation-id]=\"'novo-control-group-collapse-' + key\"></i>\n <span [attr.data-automation-id]=\"'novo-control-group-label-' + key\">{{ label }}</span>\n </span>\n <label class=\"novo-control-group-description\" *ngIf=\"description\"\n [attr.data-automation-id]=\"'novo-control-group-description-' + key\">{{ description }}</label>\n</h6>\n<div class=\"novo-control-group-controls\" [class.vertical]=\"vertical\" [class.horizontal]=\"!vertical\"\n [class.hidden]=\"collapsible && !toggled\">\n\n <ng-template #defaultTemplate let-index=\"index\" let-form=\"form\" let-key=\"key\">\n <div class=\"novo-control-group-control\">\n <div *ngFor=\"let c of controls\" class=\"novo-control-container {{c.key}}\"\n [class.is-label]=\"c.controlType === 'read-only'\" [style.max-width.px]=\"c.width\">\n <novo-control (change)=\"onChange()\" [form]=\"(form?.controls)[key]['controls'][index]\" [control]=\"c\"\n [condensed]=\"!vertical || c.controlType === 'read-only'\"></novo-control>\n </div>\n <div class=\"novo-control-container last\" *ngIf=\"edit && !vertical\">\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].edit\" type=\"button\"\n *ngIf=\"edit && !vertical\" theme=\"icon\" icon=\"
|
|
43915
|
+
template: "<h6 class=\"novo-section-header\" *ngIf=\"label\">\n <span (click)=\"toggle($event)\" [class.clickable]=\"collapsible\">\n <i *ngIf=\"icon && !collapsible\" [ngClass]=\"icon\" [attr.data-automation-id]=\"'novo-control-group-icon-' + key\"></i>\n <i *ngIf=\"collapsible\" class=\"bhi-next\" [class.toggled]=\"toggled\"\n [attr.data-automation-id]=\"'novo-control-group-collapse-' + key\"></i>\n <span [attr.data-automation-id]=\"'novo-control-group-label-' + key\">{{ label }}</span>\n </span>\n <label class=\"novo-control-group-description\" *ngIf=\"description\"\n [attr.data-automation-id]=\"'novo-control-group-description-' + key\">{{ description }}</label>\n</h6>\n<div class=\"novo-control-group-controls\" [class.vertical]=\"vertical\" [class.horizontal]=\"!vertical\"\n [class.hidden]=\"collapsible && !toggled\">\n\n <ng-template #defaultTemplate let-index=\"index\" let-form=\"form\" let-key=\"key\">\n <div class=\"novo-control-group-control\">\n <div *ngFor=\"let c of controls\" class=\"novo-control-container {{c.key}}\"\n [class.is-label]=\"c.controlType === 'read-only'\" [style.max-width.px]=\"c.width\">\n <novo-control (change)=\"onChange()\" [form]=\"(form?.controls)[key]['controls'][index]\" [control]=\"c\"\n [condensed]=\"!vertical || c.controlType === 'read-only'\"></novo-control>\n </div>\n <div class=\"novo-control-container edit last\" *ngIf=\"edit && !vertical\">\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].edit\" type=\"button\"\n *ngIf=\"edit && !vertical\" theme=\"icon\" icon=\"editIcon\"\n (click)=\"editControl(index)\" [attr.data-automation-id]=\"'novo-control-group-edit-' + key\" index=\"-1\">\n </novo-button>\n </div>\n <div class=\"novo-control-container remove last\" *ngIf=\"remove && !vertical\">\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].remove\" type=\"button\"\n *ngIf=\"remove && !vertical\" theme=\"icon\"\n icon=\"removeIcon\" (click)=\"removeControl(index)\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"\n index=\"-1\">\n </novo-button>\n </div>\n </div>\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].edit\" type=\"button\"\n *ngIf=\"edit && vertical\"\n theme=\"icon\" icon=\"editIcon\"\n (click)=\"editControl(index)\" [attr.data-automation-id]=\"'novo-control-group-edit-' + key\" index=\"-1\">\n </novo-button>\n <novo-button class=\"control-group-action\" [disabled]=\"!disabledArray[index].remove\" type=\"button\"\n *ngIf=\"remove && vertical\" theme=\"icon\"\n icon=\"removeIcon\" (click)=\"removeControl(index)\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"\n index=\"-1\">\n </novo-button>\n </ng-template>\n\n <ng-template #defaultColumnLabelTemplate let-form=\"form\" let-key=\"key\">\n <div *ngFor=\"let label of controlLabels\"\n class=\"novo-control-group-control-label {{ label.key }}\"\n [class.novo-control-group-control-hidden]=\"label.hidden\"\n [style.max-width.px]=\"label.width\" [class.column-required]=\"label.required\">\n <span [attr.data-automation-id]=\"'novo-control-group-label-' + label.value\">{{ label.value }}</span>\n </div>\n <div class=\"novo-control-group-control-label edit last\" *ngIf=\"edit\"\n [attr.data-automation-id]=\"'novo-control-group-edit-' + key\"></div>\n <div class=\"novo-control-group-control-label remove last\" *ngIf=\"remove\"\n [attr.data-automation-id]=\"'novo-control-group-delete-' + key\"></div>\n </ng-template>\n\n <ng-container *ngIf=\"!vertical && (form?.controls)[key] && (form?.controls)[key]['controls'].length !== 0\">\n <div class=\"novo-control-group-labels\"\n *ngIf=\"!vertical && (form?.controls)[key] && (form?.controls)[key]['controls'].length !== 0\">\n <ng-template [ngTemplateOutlet]=\"columnLabelTemplate || defaultColumnLabelTemplate\"\n [ngTemplateOutletContext]=\"{ form: form, key: key, controlLabels: controlLabels }\">\n </ng-template>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(form?.controls)[key]\">\n <div class=\"novo-control-group-row\"\n *ngFor=\"let control of (form?.controls)[key]['controls']; let index = index\">\n <ng-template [ngTemplateOutlet]=\"rowTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ form: form, formGroup: control, index: index, key: key, controls: controls }\">\n </ng-template>\n </div>\n </ng-container>\n\n <div class=\"novo-control-group-empty\"\n *ngIf=\"(form?.controls)[key] && (form?.controls)[key]['controls'].length === 0\"\n [attr.data-automation-id]=\"'novo-control-group-empty-' + key\">\n {{ emptyMessage }}\n </div>\n\n <div *ngIf=\"add\" class=\"novo-control-group-footer\">\n <novo-button type=\"button\" theme=\"dialogue\" icon=\"add-thin\" side=\"left\" (click)=\"onClickAdd()\"\n [attr.data-automation-id]=\"'novo-control-group-bottom-add-' + key\" index=\"-1\">\n {{ add?.label }}\n </novo-button>\n <!-- <novo-button *ngIf=\"editState==='editing'\" type=\"button\" theme=\"dialogue\" icon=\"close\" side=\"left\"\n (click)=\"onClickCancel()\" [attr.data-automation-id]=\"'novo-control-group-bottom-cancel-' + key\"\n index=\"-1\">\n {{ 'cancel' }}\n </novo-button>\n <novo-button *ngIf=\"editState==='editing'\" type=\"button\" theme=\"dialogue\" icon=\"check\" side=\"left\"\n (click)=\"onClickSave()\" [attr.data-automation-id]=\"'novo-control-group-bottom-save-' + key\"\n index=\"-1\">\n {{ add?.label }}\n </novo-button> -->\n </div>\n</div>",
|
|
43859
43916
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
43860
43917
|
host: {
|
|
43861
43918
|
'[class.novo-control-group-appearance-card]': "appearance=='card'",
|
|
@@ -43883,6 +43940,8 @@
|
|
|
43883
43940
|
description: [{ type: i0.Input }],
|
|
43884
43941
|
emptyMessage: [{ type: i0.Input }],
|
|
43885
43942
|
icon: [{ type: i0.Input }],
|
|
43943
|
+
editIcon: [{ type: i0.Input }],
|
|
43944
|
+
removeIcon: [{ type: i0.Input }],
|
|
43886
43945
|
initialValue: [{ type: i0.Input }],
|
|
43887
43946
|
canEdit: [{ type: i0.Input }],
|
|
43888
43947
|
canRemove: [{ type: i0.Input }],
|
|
@@ -45740,6 +45799,9 @@
|
|
|
45740
45799
|
_this._changeDetectorRef.markForCheck();
|
|
45741
45800
|
});
|
|
45742
45801
|
};
|
|
45802
|
+
NovoLayoutContent.prototype.getHostElement = function () {
|
|
45803
|
+
return this.elementRef.nativeElement;
|
|
45804
|
+
};
|
|
45743
45805
|
return NovoLayoutContent;
|
|
45744
45806
|
}(i1.CdkScrollable));
|
|
45745
45807
|
NovoLayoutContent.decorators = [
|
|
@@ -52098,7 +52160,6 @@
|
|
|
52098
52160
|
}
|
|
52099
52161
|
};
|
|
52100
52162
|
TableFilter.prototype.onClick = function (event) {
|
|
52101
|
-
console.log('hmmm');
|
|
52102
52163
|
Helpers.swallowEvent(event);
|
|
52103
52164
|
};
|
|
52104
52165
|
return TableFilter;
|
|
@@ -52279,7 +52340,6 @@
|
|
|
52279
52340
|
}
|
|
52280
52341
|
ThSortable.prototype.onToggleSort = function (event) {
|
|
52281
52342
|
if (event) {
|
|
52282
|
-
console.log('sorting');
|
|
52283
52343
|
// event.preventDefault();
|
|
52284
52344
|
}
|
|
52285
52345
|
if (this.config && this.column && this.config.sorting !== false && this.column.sorting !== false) {
|
|
@@ -52318,7 +52378,7 @@
|
|
|
52318
52378
|
}());
|
|
52319
52379
|
NovoTableExtrasModule.decorators = [
|
|
52320
52380
|
{ type: i0.NgModule, args: [{
|
|
52321
|
-
imports: [common.CommonModule, forms.FormsModule, NovoSelectModule, NovoDropdownModule, NovoButtonModule],
|
|
52381
|
+
imports: [common.CommonModule, forms.FormsModule, NovoSelectModule, NovoDropdownModule, NovoButtonModule, NovoCommonModule],
|
|
52322
52382
|
declarations: [
|
|
52323
52383
|
NovoTableHeaderElement,
|
|
52324
52384
|
NovoTableFooterElement,
|
|
@@ -52528,6 +52588,7 @@
|
|
|
52528
52588
|
});
|
|
52529
52589
|
NovoTableElement.prototype.onDropdownToggled = function (event, column) {
|
|
52530
52590
|
this.toggledDropdownMap[column] = event;
|
|
52591
|
+
this.cdr.markForCheck();
|
|
52531
52592
|
};
|
|
52532
52593
|
NovoTableElement.prototype.focusInput = function () {
|
|
52533
52594
|
if (this.filterInputs && this.filterInputs.length) {
|
|
@@ -52582,7 +52643,6 @@
|
|
|
52582
52643
|
return tableFormRows.controls[i];
|
|
52583
52644
|
};
|
|
52584
52645
|
NovoTableElement.prototype.onFilterClick = function (column, filter) {
|
|
52585
|
-
console.log('clicking filter', filter);
|
|
52586
52646
|
if (filter.range && !column.calendarShow) {
|
|
52587
52647
|
column.calenderShow = true;
|
|
52588
52648
|
return;
|
|
@@ -53173,7 +53233,7 @@
|
|
|
53173
53233
|
'[class.novo-table-loading]': 'loading',
|
|
53174
53234
|
},
|
|
53175
53235
|
// directives: [],
|
|
53176
|
-
template: "\n <header *ngIf=\"columns.length\">\n <ng-content select=\"novo-table-header\"></ng-content>\n <div class=\"header-actions\">\n <novo-pagination\n *ngIf=\"config.paging && !(dataProvider.isEmpty() && !dataProvider.isFiltered())\"\n [rowOptions]=\"config.paging.rowOptions\"\n [disablePageSelection]=\"config.paging.disablePageSelection\"\n [(page)]=\"dataProvider.page\"\n [(itemsPerPage)]=\"dataProvider.pageSize\"\n [totalItems]=\"dataProvider.total\"\n (onPageChange)=\"onPageChange($event)\"\n >\n </novo-pagination>\n <ng-content select=\"novo-table-actions\"></ng-content>\n </div>\n </header>\n <div class=\"novo-table-loading-overlay\" *ngIf=\"loading || dataProvider.isLoading()\">\n <novo-loading></novo-loading>\n </div>\n <novo-toast *ngIf=\"toast\" [theme]=\"toast?.theme\" [icon]=\"toast?.icon\" [message]=\"toast?.message\"></novo-toast>\n <div class=\"table-container\" *ngIf=\"!grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast\">\n <novo-form hideHeader=\"true\" [form]=\"tableForm\">\n <table class=\"table table-striped dataTable\" [class.table-details]=\"config.hasDetails\" role=\"grid\">\n <!-- skipSortAndFilterClear is a hack right now, will be removed once Canvas is refactored -->\n <thead *ngIf=\"columns.length && (!dataProvider.isEmpty() || dataProvider.isFiltered() || skipSortAndFilterClear || editing)\">\n <tr role=\"row\">\n <!-- DETAILS -->\n <th class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button\n theme=\"icon\"\n icon=\"next\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"!config.expandAll\"\n data-automation-id=\"expand-all\"\n ></novo-button>\n <novo-button\n theme=\"icon\"\n icon=\"sort-desc\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"config.expandAll\"\n data-automation-id=\"collapse-all\"\n ></novo-button>\n </th>\n <!-- CHECKBOX -->\n <th class=\"row-actions checkbox mass-action\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"master\"\n [indeterminate]=\"pageSelected.length > 0 && pageSelected.length < pagedData.length\"\n (ngModelChange)=\"selectPage($event)\"\n data-automation-id=\"select-all-checkbox\"\n [tooltip]=\"master ? labels.deselectAll : labels.selectAllOnPage\"\n tooltipPosition=\"right\"\n ></novo-checkbox>\n </th>\n <!-- TABLE HEADERS -->\n <th\n *ngFor=\"let column of columns\"\n [ngClass]=\"{\n 'mass-action': config?.rowSelectionStyle === 'checkbox',\n actions: column?.actions?.items?.length > 0,\n preview: column?.name === 'preview'\n }\"\n [novoThOrderable]=\"column\"\n (onOrderChange)=\"onOrderChange($event)\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <div class=\"th-group\" [attr.data-automation-id]=\"column.id || column.name\" *ngIf=\"!column.hideHeader\">\n <!-- LABEL & SORT ARROWS -->\n <div\n class=\"th-title\"\n [ngClass]=\"config.sorting !== false && column.sorting !== false ? 'sortable' : ''\"\n [novoThSortable]=\"config\"\n [column]=\"column\"\n (onSortChange)=\"onSortChange($event)\"\n >\n <label>{{ column.title || column.label }}</label>\n <div\n class=\"table-sort-icons\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.sort\"\n [ngClass]=\"column.sort || ''\"\n *ngIf=\"config.sorting !== false && column.sorting !== false\"\n >\n <i class=\"bhi-arrow-up\"></i>\n <i class=\"bhi-arrow-down\"></i>\n </div>\n </div>\n <!-- FILTER DROP-DOWN -->\n <novo-dropdown\n side=\"right\"\n *ngIf=\"config.filtering !== false && column.filtering !== false\"\n class=\"column-filters\"\n (toggled)=\"onDropdownToggled($event, column.name)\"\n parentScrollSelector=\".table-container\"\n containerClass=\"table-dropdown\"\n >\n <novo-button\n type=\"button\"\n theme=\"icon\"\n icon=\"filter\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.filters\"\n [class.filtered]=\"column.filter || column.filter === false\"\n (click)=\"focusInput()\"\n ></novo-button>\n <!-- FILTER OPTIONS LIST -->\n <novo-optgroup\n *ngIf=\"\n (column?.options?.length || column?.originalOptions?.length) &&\n column?.type !== 'date' &&\n toggledDropdownMap[column.name]\n \"\n >\n <novo-option class=\"filter-search\" inert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n icon=\"times\"\n (click)=\"onFilterClear(column)\"\n *ngIf=\"column.filter || column.filter === false\"\n >\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n *ngIf=\"!!column.allowCustomTextOption\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterKeywords($event)\"\n [(ngModel)]=\"column.freetextFilter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n <novo-option\n [ngClass]=\"{ active: isFilterActive(column, option) }\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [attr.data-automation-id]=\"getOptionDataAutomationId(option)\"\n >\n <span>{{ option?.label || option }}</span> <i class=\"bhi-check\" *ngIf=\"isFilterActive(column, option)\"></i>\n </novo-option>\n </novo-optgroup>\n <!-- FILTER SEARCH INPUT -->\n <novo-optgroup *ngIf=\"!(column?.options?.length || column?.originalOptions?.length) && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" inert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterChange($event)\"\n [(ngModel)]=\"column.filter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n </novo-optgroup>\n <!-- FILTER DATE OPTIONS -->\n <novo-optgroup *ngIf=\"column?.options?.length && column?.type === 'date' && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" *ngIf=\"!column.calenderShow\" inert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n </novo-option>\n <novo-option\n [class.active]=\"isFilterActive(column, option)\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [keepOpen]=\"option.range\"\n [hidden]=\"column.calenderShow\"\n [attr.data-automation-id]=\"option?.label || option\"\n >\n {{ option?.label || option }}\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"isFilterActive(column, option)\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"column.calenderShow\" keepOpen inert>\n <novo-stack>\n <div class=\"back-link\" (click)=\"column.calenderShow = false\">\n <i class=\"bhi-previous\"></i>{{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker\n (onSelect)=\"onCalenderSelect(column, $event)\"\n [(ngModel)]=\"column.filter\"\n mode=\"range\"\n ></novo-date-picker>\n </novo-stack>\n </novo-option>\n </novo-optgroup>\n </novo-dropdown>\n </div>\n </th>\n </tr>\n </thead>\n <!-- TABLE DATA -->\n <tbody *ngIf=\"!dataProvider.isEmpty() || editing\">\n <tr\n class=\"table-selection-row\"\n *ngIf=\"config.rowSelectionStyle === 'checkbox' && showSelectAllMessage && config.selectAllEnabled\"\n data-automation-id=\"table-selection-row\"\n >\n <td colspan=\"100%\">\n {{ labels.selectedRecords(selected.length) }}\n <a (click)=\"selectAll(true)\" data-automation-id=\"all-matching-records\">{{ labels.totalRecords(dataProvider.total) }}</a>\n </td>\n </tr>\n <ng-template ngFor let-row=\"$implicit\" let-i=\"index\" [ngForOf]=\"rows\">\n <tr\n class=\"table-row\"\n [ngClass]=\"row.customClass || ''\"\n [id]=\"name + '-' + row[rowIdentifier]\"\n [attr.data-automation-id]=\"row.id\"\n (click)=\"rowClickHandler(row)\"\n [class.active]=\"row.id === activeId\"\n >\n <td class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button theme=\"icon\" icon=\"next\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"!row._expanded\"></novo-button>\n <novo-button theme=\"icon\" icon=\"sort-desc\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"row._expanded\"></novo-button>\n </td>\n <td class=\"row-actions checkbox\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"row._selected\"\n (ngModelChange)=\"rowSelectHandler(row)\"\n data-automation-id=\"select-row-checkbox\"\n ></novo-checkbox>\n </td>\n <td\n *ngFor=\"let column of columns\"\n [attr.data-automation-id]=\"column.id || column.name\"\n [class.novo-form-row]=\"editable\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <novo-table-cell\n *ngIf=\"row._editing && !row._editing[column.name]\"\n [hasEditor]=\"editable\"\n [column]=\"column\"\n [row]=\"row\"\n [form]=\"getRowControlForm(i)\"\n ></novo-table-cell>\n <novo-control\n *ngIf=\"row._editing && row._editing[column.name]\"\n condensed=\"true\"\n [form]=\"getRowControlForm(i)\"\n [control]=\"row.controls[column.name]\"\n ></novo-control>\n </td>\n </tr>\n <tr\n class=\"details-row\"\n *ngIf=\"config.hasDetails\"\n [hidden]=\"!row._expanded\"\n [attr.data-automation-id]=\"'details-row-' + row.id\"\n >\n <td class=\"row-actions\"></td>\n <td [attr.colspan]=\"config.rowSelectionStyle === 'checkbox' ? columns.length + 1 : columns.length\">\n <novo-row-details [data]=\"row\" [renderer]=\"config.detailsRenderer\"></novo-row-details>\n </td>\n </tr>\n </ng-template>\n </tbody>\n <!-- NO TABLE DATA PLACEHOLDER -->\n <tbody\n class=\"table-message\"\n *ngIf=\"dataProvider.isEmpty() && !dataProvider.isFiltered() && !editing\"\n data-automation-id=\"empty-table\"\n >\n <tr>\n <td colspan=\"100%\">\n <div #emptymessage><ng-content select=\"[table-empty-message]\"></ng-content></div>\n <div class=\"table-empty-message\" *ngIf=\"emptymessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.emptyTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- NO MATCHING RECORDS -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.isEmpty() && dataProvider.isFiltered()\" data-automation-id=\"empty-table\">\n <tr>\n <td colspan=\"100%\">\n <div #nomatchmessage><ng-content select=\"[table-no-matching-records-message]\"></ng-content></div>\n <div class=\"no-matching-records\" *ngIf=\"nomatchmessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMatchingRecordsMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- TABLE DATA ERROR PLACEHOLDER -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.hasErrors()\" data-automation-id=\"table-errors\">\n <tr>\n <td colspan=\"100%\">\n <div #errormessage><ng-content select=\"[table-error-message]\"></ng-content></div>\n <div class=\"table-error-message\" *ngIf=\"errormessage.childNodes.length == 0\">\n <h4><i class=\"bhi-caution\"></i> {{ labels.erroredTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"!config.footers\" [ngClass]=\"dataProvider.length % 2 == 0 ? 'odd' : 'even'\">\n <tr>\n <td colspan=\"100%\">\n <ng-content select=\"novo-table-footer\"></ng-content>\n </td>\n </tr>\n </tfoot>\n <tfoot *ngFor=\"let footer of footers; let i = index\" class=\"novo-table-total-footer\">\n <tr>\n <td *ngFor=\"let column of columns\" [attr.data-automation-id]=\"(column.id || column.name) + '-total-' + i\">\n {{ footer[column.name] }}\n </td>\n </tr>\n </tfoot>\n </table>\n </novo-form>\n </div>\n "
|
|
53236
|
+
template: "\n <header *ngIf=\"columns.length\">\n <ng-content select=\"novo-table-header\"></ng-content>\n <div class=\"header-actions\">\n <novo-pagination\n *ngIf=\"config.paging && !(dataProvider.isEmpty() && !dataProvider.isFiltered())\"\n [rowOptions]=\"config.paging.rowOptions\"\n [disablePageSelection]=\"config.paging.disablePageSelection\"\n [(page)]=\"dataProvider.page\"\n [(itemsPerPage)]=\"dataProvider.pageSize\"\n [totalItems]=\"dataProvider.total\"\n (onPageChange)=\"onPageChange($event)\"\n >\n </novo-pagination>\n <ng-content select=\"novo-table-actions\"></ng-content>\n </div>\n </header>\n <div class=\"novo-table-loading-overlay\" *ngIf=\"loading || dataProvider.isLoading()\">\n <novo-loading></novo-loading>\n </div>\n <novo-toast *ngIf=\"toast\" [theme]=\"toast?.theme\" [icon]=\"toast?.icon\" [message]=\"toast?.message\"></novo-toast>\n <div class=\"table-container\" *ngIf=\"!grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast\">\n <novo-form hideHeader=\"true\" [form]=\"tableForm\">\n <table class=\"table table-striped dataTable\" [class.table-details]=\"config.hasDetails\" role=\"grid\">\n <!-- skipSortAndFilterClear is a hack right now, will be removed once Canvas is refactored -->\n <thead *ngIf=\"columns.length && (!dataProvider.isEmpty() || dataProvider.isFiltered() || skipSortAndFilterClear || editing)\">\n <tr role=\"row\">\n <!-- DETAILS -->\n <th class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button\n theme=\"icon\"\n icon=\"next\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"!config.expandAll\"\n data-automation-id=\"expand-all\"\n ></novo-button>\n <novo-button\n theme=\"icon\"\n icon=\"sort-desc\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"config.expandAll\"\n data-automation-id=\"collapse-all\"\n ></novo-button>\n </th>\n <!-- CHECKBOX -->\n <th class=\"row-actions checkbox mass-action\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"master\"\n [indeterminate]=\"pageSelected.length > 0 && pageSelected.length < pagedData.length\"\n (ngModelChange)=\"selectPage($event)\"\n data-automation-id=\"select-all-checkbox\"\n [tooltip]=\"master ? labels.deselectAll : labels.selectAllOnPage\"\n tooltipPosition=\"right\"\n ></novo-checkbox>\n </th>\n <!-- TABLE HEADERS -->\n <th\n *ngFor=\"let column of columns\"\n [ngClass]=\"{\n 'mass-action': config?.rowSelectionStyle === 'checkbox',\n actions: column?.actions?.items?.length > 0,\n preview: column?.name === 'preview'\n }\"\n [novoThOrderable]=\"column\"\n (onOrderChange)=\"onOrderChange($event)\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <div class=\"th-group\" [attr.data-automation-id]=\"column.id || column.name\" *ngIf=\"!column.hideHeader\">\n <!-- LABEL & SORT ARROWS -->\n <div\n class=\"th-title\"\n [ngClass]=\"config.sorting !== false && column.sorting !== false ? 'sortable' : ''\"\n [novoThSortable]=\"config\"\n [column]=\"column\"\n (onSortChange)=\"onSortChange($event)\"\n >\n <label>{{ column.title || column.label }}</label>\n <div\n class=\"table-sort-icons\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.sort\"\n [ngClass]=\"column.sort || ''\"\n *ngIf=\"config.sorting !== false && column.sorting !== false\"\n >\n <i class=\"bhi-arrow-up\"></i>\n <i class=\"bhi-arrow-down\"></i>\n </div>\n </div>\n <!-- FILTER DROP-DOWN -->\n <novo-dropdown\n side=\"default\"\n *ngIf=\"config.filtering !== false && column.filtering !== false\"\n class=\"column-filters\"\n (toggled)=\"onDropdownToggled($event, column.name)\"\n parentScrollSelector=\".table-container\"\n containerClass=\"table-dropdown\"\n >\n <novo-button\n type=\"button\"\n theme=\"icon\"\n icon=\"filter\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.filters\"\n [class.filtered]=\"column.filter || column.filter === false\"\n (click)=\"focusInput()\"\n ></novo-button>\n <!-- FILTER OPTIONS LIST -->\n <novo-optgroup\n *ngIf=\"\n (column?.options?.length || column?.originalOptions?.length) &&\n column?.type !== 'date' &&\n toggledDropdownMap[column.name]\n \"\n >\n <novo-option class=\"filter-search\" inert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n icon=\"times\"\n (click)=\"onFilterClear(column)\"\n *ngIf=\"column.filter || column.filter === false\"\n >\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n *ngIf=\"!!column.allowCustomTextOption\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterKeywords($event)\"\n [(ngModel)]=\"column.freetextFilter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n <novo-option\n [ngClass]=\"{ active: isFilterActive(column, option) }\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [attr.data-automation-id]=\"getOptionDataAutomationId(option)\"\n >\n <span>{{ option?.label || option }}</span> <i class=\"bhi-check\" *ngIf=\"isFilterActive(column, option)\"></i>\n </novo-option>\n </novo-optgroup>\n <!-- FILTER SEARCH INPUT -->\n <novo-optgroup *ngIf=\"!(column?.options?.length || column?.originalOptions?.length) && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" inert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterChange($event)\"\n [(ngModel)]=\"column.filter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n </novo-optgroup>\n <!-- FILTER DATE OPTIONS -->\n <novo-optgroup *ngIf=\"column?.options?.length && column?.type === 'date' && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" *ngIf=\"!column.calenderShow\" inert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n </novo-option>\n <novo-option\n [class.active]=\"isFilterActive(column, option)\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [keepOpen]=\"option.range\"\n [hidden]=\"column.calenderShow\"\n [attr.data-automation-id]=\"option?.label || option\"\n >\n {{ option?.label || option }}\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"isFilterActive(column, option)\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"column.calenderShow\" keepOpen inert>\n <novo-stack>\n <div class=\"back-link\" (click)=\"column.calenderShow = false\">\n <i class=\"bhi-previous\"></i>{{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker\n (onSelect)=\"onCalenderSelect(column, $event)\"\n [(ngModel)]=\"column.filter\"\n mode=\"range\"\n ></novo-date-picker>\n </novo-stack>\n </novo-option>\n </novo-optgroup>\n </novo-dropdown>\n </div>\n </th>\n </tr>\n </thead>\n <!-- TABLE DATA -->\n <tbody *ngIf=\"!dataProvider.isEmpty() || editing\">\n <tr\n class=\"table-selection-row\"\n *ngIf=\"config.rowSelectionStyle === 'checkbox' && showSelectAllMessage && config.selectAllEnabled\"\n data-automation-id=\"table-selection-row\"\n >\n <td colspan=\"100%\">\n {{ labels.selectedRecords(selected.length) }}\n <a (click)=\"selectAll(true)\" data-automation-id=\"all-matching-records\">{{ labels.totalRecords(dataProvider.total) }}</a>\n </td>\n </tr>\n <ng-template ngFor let-row=\"$implicit\" let-i=\"index\" [ngForOf]=\"rows\">\n <tr\n class=\"table-row\"\n [ngClass]=\"row.customClass || ''\"\n [id]=\"name + '-' + row[rowIdentifier]\"\n [attr.data-automation-id]=\"row.id\"\n (click)=\"rowClickHandler(row)\"\n [class.active]=\"row.id === activeId\"\n >\n <td class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button theme=\"icon\" icon=\"next\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"!row._expanded\"></novo-button>\n <novo-button theme=\"icon\" icon=\"sort-desc\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"row._expanded\"></novo-button>\n </td>\n <td class=\"row-actions checkbox\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"row._selected\"\n (ngModelChange)=\"rowSelectHandler(row)\"\n data-automation-id=\"select-row-checkbox\"\n ></novo-checkbox>\n </td>\n <td\n *ngFor=\"let column of columns\"\n [attr.data-automation-id]=\"column.id || column.name\"\n [class.novo-form-row]=\"editable\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <novo-table-cell\n *ngIf=\"row._editing && !row._editing[column.name]\"\n [hasEditor]=\"editable\"\n [column]=\"column\"\n [row]=\"row\"\n [form]=\"getRowControlForm(i)\"\n ></novo-table-cell>\n <novo-control\n *ngIf=\"row._editing && row._editing[column.name]\"\n condensed=\"true\"\n [form]=\"getRowControlForm(i)\"\n [control]=\"row.controls[column.name]\"\n ></novo-control>\n </td>\n </tr>\n <tr\n class=\"details-row\"\n *ngIf=\"config.hasDetails\"\n [hidden]=\"!row._expanded\"\n [attr.data-automation-id]=\"'details-row-' + row.id\"\n >\n <td class=\"row-actions\"></td>\n <td [attr.colspan]=\"config.rowSelectionStyle === 'checkbox' ? columns.length + 1 : columns.length\">\n <novo-row-details [data]=\"row\" [renderer]=\"config.detailsRenderer\"></novo-row-details>\n </td>\n </tr>\n </ng-template>\n </tbody>\n <!-- NO TABLE DATA PLACEHOLDER -->\n <tbody\n class=\"table-message\"\n *ngIf=\"dataProvider.isEmpty() && !dataProvider.isFiltered() && !editing\"\n data-automation-id=\"empty-table\"\n >\n <tr>\n <td colspan=\"100%\">\n <div #emptymessage><ng-content select=\"[table-empty-message]\"></ng-content></div>\n <div class=\"table-empty-message\" *ngIf=\"emptymessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.emptyTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- NO MATCHING RECORDS -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.isEmpty() && dataProvider.isFiltered()\" data-automation-id=\"empty-table\">\n <tr>\n <td colspan=\"100%\">\n <div #nomatchmessage><ng-content select=\"[table-no-matching-records-message]\"></ng-content></div>\n <div class=\"no-matching-records\" *ngIf=\"nomatchmessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMatchingRecordsMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- TABLE DATA ERROR PLACEHOLDER -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.hasErrors()\" data-automation-id=\"table-errors\">\n <tr>\n <td colspan=\"100%\">\n <div #errormessage><ng-content select=\"[table-error-message]\"></ng-content></div>\n <div class=\"table-error-message\" *ngIf=\"errormessage.childNodes.length == 0\">\n <h4><i class=\"bhi-caution\"></i> {{ labels.erroredTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"!config.footers\" [ngClass]=\"dataProvider.length % 2 == 0 ? 'odd' : 'even'\">\n <tr>\n <td colspan=\"100%\">\n <ng-content select=\"novo-table-footer\"></ng-content>\n </td>\n </tr>\n </tfoot>\n <tfoot *ngFor=\"let footer of footers; let i = index\" class=\"novo-table-total-footer\">\n <tr>\n <td *ngFor=\"let column of columns\" [attr.data-automation-id]=\"(column.id || column.name) + '-total-' + i\">\n {{ footer[column.name] }}\n </td>\n </tr>\n </tfoot>\n </table>\n </novo-form>\n </div>\n "
|
|
53177
53237
|
},] }
|
|
53178
53238
|
];
|
|
53179
53239
|
NovoTableElement.ctorParameters = function () { return [
|