@impartner/design-components 2.1.1 → 2.2.0

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 (55) hide show
  1. package/esm2022/lib/alert/alert.component.mjs +11 -4
  2. package/esm2022/lib/datetime-picker/components/datetime-picker/datetime-picker.component.mjs +10 -10
  3. package/esm2022/lib/datetime-picker/constants/datetime-picker-defaults.mjs +2 -2
  4. package/esm2022/lib/file-upload/file-upload.module.mjs +14 -6
  5. package/esm2022/lib/form-field/controls/select/select.component.mjs +4 -1
  6. package/esm2022/lib/modal/modal.component.mjs +9 -3
  7. package/esm2022/lib/progress-bar/progress-bar.component.mjs +19 -3
  8. package/esm2022/lib/table/components/bulk-actions/bulk-actions.component.mjs +6 -1
  9. package/esm2022/lib/table/constants/table.constants.mjs +1 -2
  10. package/esm2022/lib/table/containers/table.component.mjs +91 -20
  11. package/esm2022/lib/table/directives/collapse-monitor.directive.mjs +42 -0
  12. package/esm2022/lib/table/directives/index.mjs +2 -1
  13. package/esm2022/lib/table/directives/table-inject-component.directive.mjs +1 -1
  14. package/esm2022/lib/table/directives/table.directive.mjs +24 -4
  15. package/esm2022/lib/table/index.mjs +2 -2
  16. package/esm2022/lib/table/interfaces/cell-renderer.interface.mjs +1 -1
  17. package/esm2022/lib/table/interfaces/collapsible-row-content-context.interface.mjs +2 -0
  18. package/esm2022/lib/table/interfaces/index.mjs +3 -1
  19. package/esm2022/lib/table/interfaces/sort-by-payload.interface.mjs +1 -1
  20. package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +1 -1
  21. package/esm2022/lib/table/interfaces/table-event-payload.interface.mjs +1 -1
  22. package/esm2022/lib/table/interfaces/table-row-action-payload.interface.mjs +1 -1
  23. package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +1 -1
  24. package/esm2022/lib/table/interfaces/table-row-collapse-change.interface.mjs +2 -0
  25. package/esm2022/lib/table/interfaces/table-row-item.interface.mjs +1 -1
  26. package/esm2022/lib/table/table.module.mjs +12 -7
  27. package/esm2022/lib/text-highlight/text-highlight.component.mjs +9 -4
  28. package/fesm2022/impartner-design-components.mjs +226 -45
  29. package/fesm2022/impartner-design-components.mjs.map +1 -1
  30. package/lib/alert/alert.component.d.ts +5 -1
  31. package/lib/datetime-picker/components/datetime-picker/datetime-picker.component.d.ts +3 -3
  32. package/lib/datetime-picker/constants/datetime-picker-defaults.d.ts +1 -1
  33. package/lib/file-upload/file-upload.module.d.ts +1 -1
  34. package/lib/modal/modal.component.d.ts +5 -1
  35. package/lib/progress-bar/progress-bar.component.d.ts +10 -1
  36. package/lib/table/components/bulk-actions/bulk-actions.component.d.ts +5 -0
  37. package/lib/table/constants/table.constants.d.ts +0 -1
  38. package/lib/table/containers/table.component.d.ts +58 -13
  39. package/lib/table/directives/collapse-monitor.directive.d.ts +12 -0
  40. package/lib/table/directives/index.d.ts +1 -0
  41. package/lib/table/directives/table-inject-component.directive.d.ts +2 -2
  42. package/lib/table/directives/table.directive.d.ts +11 -3
  43. package/lib/table/index.d.ts +1 -1
  44. package/lib/table/interfaces/cell-renderer.interface.d.ts +10 -3
  45. package/lib/table/interfaces/collapsible-row-content-context.interface.d.ts +39 -0
  46. package/lib/table/interfaces/index.d.ts +2 -0
  47. package/lib/table/interfaces/sort-by-payload.interface.d.ts +6 -0
  48. package/lib/table/interfaces/table-column-defs.type.d.ts +30 -6
  49. package/lib/table/interfaces/table-event-payload.interface.d.ts +8 -1
  50. package/lib/table/interfaces/table-row-action-payload.interface.d.ts +8 -1
  51. package/lib/table/interfaces/table-row-action.interface.d.ts +10 -2
  52. package/lib/table/interfaces/table-row-collapse-change.interface.d.ts +11 -0
  53. package/lib/table/interfaces/table-row-item.interface.d.ts +3 -4
  54. package/lib/table/table.module.d.ts +18 -17
  55. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, Input, NgModule, ViewEncapsulation, ViewChild, HostBinding, Directive, InjectionToken, Host, Optional, SkipSelf, Inject, ChangeDetectionStrategy, ContentChild, ContentChildren, inject, EventEmitter, Output, Self, booleanAttribute, numberAttribute, Attribute, ChangeDetectorRef, NgZone, ElementRef, ViewChildren, TemplateRef, HostListener, Pipe, DestroyRef } from '@angular/core';
2
+ import { Injectable, Component, Input, NgModule, ViewEncapsulation, ViewChild, HostBinding, Directive, InjectionToken, Host, Optional, SkipSelf, Inject, ChangeDetectionStrategy, ContentChild, ContentChildren, inject, EventEmitter, Output, Self, booleanAttribute, numberAttribute, Attribute, ChangeDetectorRef, NgZone, ElementRef, ViewChildren, signal, TemplateRef, HostListener, Pipe, DestroyRef } from '@angular/core';
3
3
  import { BehaviorSubject, map, distinctUntilChanged, shareReplay, Subject, takeUntil, merge, tap, startWith, combineLatest, switchMap, take, defer, debounceTime, filter, fromEvent } from 'rxjs';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule, NgClass, AsyncPipe, DatePipe, PercentPipe, DecimalPipe, TranslationWidth } from '@angular/common';
@@ -11,7 +11,7 @@ import { debounceTime as debounceTime$1 } from 'rxjs/operators';
11
11
  import sanitizeHtml from 'sanitize-html';
12
12
  import { nanoid } from 'nanoid';
13
13
  import * as i3 from '@ng-bootstrap/ng-bootstrap';
14
- import { NgbDropdownItem, NgbDropdown, NgbDropdownModule, NgbDatepickerI18n, NgbDate, NgbCalendar, NgbDatepickerMonth, NgbDateAdapter, NgbDatepicker, NgbDatepickerModule, NgbTimepickerModule, NgbTimeAdapter, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';
14
+ import { NgbDropdownItem, NgbDropdown, NgbDropdownModule, NgbCollapse, NgbCollapseModule, NgbDatepickerI18n, NgbDate, NgbCalendar, NgbDatepickerMonth, NgbDateAdapter, NgbDatepicker, NgbDatepickerModule, NgbTimepickerModule, NgbTimeAdapter, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';
15
15
 
16
16
  const FontAwesomeIconThemes = ['solid', 'regular', 'light'];
17
17
  const FontAwesomeIcons = [
@@ -3177,9 +3177,14 @@ class TextHighlightComponent {
3177
3177
  this.result = [];
3178
3178
  }
3179
3179
  ngOnChanges() {
3180
- const escapedText = this._escapeTextForRegExp(this.search);
3181
- const regEx = new RegExp(`(${escapedText})`, `g${this.exact ? '' : 'i'}`);
3182
- this.result = this.text.split(regEx);
3180
+ if (this.search) {
3181
+ const escapedText = this._escapeTextForRegExp(this.search);
3182
+ const regEx = new RegExp(`(${escapedText})`, `g${this.exact ? '' : 'i'}`);
3183
+ this.result = this.text.split(regEx);
3184
+ }
3185
+ else {
3186
+ this.result = [this.text];
3187
+ }
3183
3188
  }
3184
3189
  _escapeTextForRegExp(text) {
3185
3190
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
@@ -3525,7 +3530,6 @@ const ROWS_PER_PAGE_GROUP = [
3525
3530
  label: '100'
3526
3531
  }
3527
3532
  ];
3528
- const SORT_COLUMN_INDEX = 0;
3529
3533
  const DEBOUNCE_TIME = 500;
3530
3534
 
3531
3535
  const IS_SELECTED_PROPERTY = 'isSelected';
@@ -5252,6 +5256,8 @@ class _SelectComponentBase extends __SelectComponentBase {
5252
5256
  if (this.ngControl) {
5253
5257
  this.ngControl.valueAccessor = this;
5254
5258
  }
5259
+ // idempotent assignment - respects arbitrary ID set via attr if present, otherwise falls back to auto UUID;
5260
+ // also triggers stateChanges pulse for parent form-field component
5255
5261
  this.id = this.id;
5256
5262
  this.tabIndex = parseInt(tabIndex ?? '') || 0;
5257
5263
  }
@@ -5405,6 +5411,7 @@ class _SelectComponentBase extends __SelectComponentBase {
5405
5411
  clearSelection() {
5406
5412
  this.value = null;
5407
5413
  this.focus();
5414
+ this._propagateChanges();
5408
5415
  }
5409
5416
  handleSearchSubmit(evt) {
5410
5417
  evt.preventDefault();
@@ -7261,6 +7268,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7261
7268
  type: Output
7262
7269
  }] } });
7263
7270
 
7271
+ /**
7272
+ * A container component for projecting displays and controls for performing bulk actions upon one
7273
+ * or more selected table rows. Elements to be projected should be decorated with `[selectedTotal]`
7274
+ * and `[bulkAction]` attributes.
7275
+ */
7264
7276
  class TableBulkActionsComponent {
7265
7277
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableBulkActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7266
7278
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: TableBulkActionsComponent, selector: "impdc-table-bulk-actions", ngImport: i0, template: "<div class=\"table-bulk-actions\">\n <div class=\"selected-total\">\n <ng-content select=\"[selectedTotal]\"></ng-content>\n </div>\n <div class=\"bulk-actions\">\n <ng-content select=\"[bulkAction]\"></ng-content>\n </div>\n</div>\n", styles: [".table-bulk-actions{display:flex;flex-direction:row;align-items:center;font-weight:400}.table-bulk-actions .selected-total{border-right:1px solid var(--impd-color-gray-200, \"#e5e7eb\");padding-right:1.6rem}.table-bulk-actions .bulk-actions{padding-left:1.6rem;display:flex;flex-direction:row;gap:1.6rem}\n"] }); }
@@ -7342,9 +7354,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7342
7354
  type: Input
7343
7355
  }] } });
7344
7356
 
7357
+ class CollapseMonitorDirective {
7358
+ constructor() {
7359
+ this._ngbCollapse = inject(NgbCollapse);
7360
+ this.collapsed = signal(true);
7361
+ this.ngbCollapsing = signal(true);
7362
+ this.collapseChange = new EventEmitter();
7363
+ // eagerly assert true as soon as *something* is expected to be shown, then assert false when we know we've fully collapsed
7364
+ this._ngbCollapse.ngbCollapseChange.subscribe(value => {
7365
+ this.ngbCollapsing.set(value);
7366
+ if (!value) {
7367
+ this.collapsed.set(value);
7368
+ this.collapseChange.emit(value);
7369
+ }
7370
+ });
7371
+ this._ngbCollapse.hidden.subscribe(() => {
7372
+ this.collapsed.set(true);
7373
+ this.collapseChange.emit(true);
7374
+ });
7375
+ }
7376
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CollapseMonitorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7377
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.1", type: CollapseMonitorDirective, selector: "[impdcCollapseMonitor]", outputs: { collapseChange: "collapseChange" }, exportAs: ["impdcCollapseMonitor"], hostDirectives: [{ directive: i3.NgbCollapse, inputs: ["ngbCollapse", "impdcCollapseMonitor"] }], ngImport: i0 }); }
7378
+ }
7379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CollapseMonitorDirective, decorators: [{
7380
+ type: Directive,
7381
+ args: [{
7382
+ exportAs: 'impdcCollapseMonitor',
7383
+ selector: '[impdcCollapseMonitor]',
7384
+ hostDirectives: [
7385
+ {
7386
+ directive: NgbCollapse,
7387
+ inputs: ['ngbCollapse: impdcCollapseMonitor']
7388
+ }
7389
+ ]
7390
+ }]
7391
+ }], ctorParameters: () => [], propDecorators: { collapseChange: [{
7392
+ type: Output
7393
+ }] } });
7394
+
7345
7395
  /**
7346
- * The `TableDirective` (`<table impdcTable`) that adds Hex styling to a `table` element.
7347
- * To use, import `TableModule` or another module that imports and exports that module from `@impartner/design-components`.
7396
+ * `TableDirective` (`table[impdcTable]`) is a directive that adds Hex styling to a `table` element.
7348
7397
  */
7349
7398
  class TableDirective {
7350
7399
  constructor() {
@@ -7352,13 +7401,24 @@ class TableDirective {
7352
7401
  * Stripes every other row in a slightly darker background color.
7353
7402
  */
7354
7403
  this.striped = false;
7404
+ /**
7405
+ * Whether table rows should apply hover styles when hovered over via cursor.
7406
+ */
7407
+ this.hover = false;
7408
+ /**
7409
+ * The layout algorithm to be used when rendering the table.
7410
+ */
7411
+ this.layout = 'auto';
7355
7412
  this.classTable = true;
7356
7413
  }
7357
7414
  get classTableStriped() {
7358
7415
  return this.striped;
7359
7416
  }
7417
+ get classTableHover() {
7418
+ return this.hover;
7419
+ }
7360
7420
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7361
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.1", type: TableDirective, selector: "table[impdcTable]", inputs: { striped: "striped" }, host: { properties: { "class.table": "this.classTable", "class.table-striped": "this.classTableStriped" } }, ngImport: i0 }); }
7421
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.1", type: TableDirective, selector: "table[impdcTable]", inputs: { striped: "striped", hover: "hover", layout: "layout" }, host: { properties: { "style.table-layout": "this.layout", "class.table": "this.classTable", "class.table-striped": "this.classTableStriped", "class.table-hover": "this.classTableHover" } }, ngImport: i0 }); }
7362
7422
  }
7363
7423
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableDirective, decorators: [{
7364
7424
  type: Directive,
@@ -7367,12 +7427,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7367
7427
  }]
7368
7428
  }], propDecorators: { striped: [{
7369
7429
  type: Input
7430
+ }], hover: [{
7431
+ type: Input
7432
+ }], layout: [{
7433
+ type: HostBinding,
7434
+ args: ['style.table-layout']
7435
+ }, {
7436
+ type: Input
7370
7437
  }], classTable: [{
7371
7438
  type: HostBinding,
7372
7439
  args: ['class.table']
7373
7440
  }], classTableStriped: [{
7374
7441
  type: HostBinding,
7375
7442
  args: ['class.table-striped']
7443
+ }], classTableHover: [{
7444
+ type: HostBinding,
7445
+ args: ['class.table-hover']
7376
7446
  }] } });
7377
7447
 
7378
7448
  class TableInjectComponentDirective {
@@ -7461,9 +7531,14 @@ class TableComponent {
7461
7531
  }
7462
7532
  /** @ignore */
7463
7533
  get tableSpan() {
7464
- return this.canSelectRows
7465
- ? this.columnDefs.length + 1
7466
- : this.columnDefs.length;
7534
+ let cols = this.columnDefs.length;
7535
+ if (this.canSelectRows) {
7536
+ cols++;
7537
+ }
7538
+ if (this.collapsibleTemplate) {
7539
+ cols++;
7540
+ }
7541
+ return cols;
7467
7542
  }
7468
7543
  constructor(_datePipe, _percentPipe, _decmialPipe, _changeDetectorRef, _branded) {
7469
7544
  this._datePipe = _datePipe;
@@ -7487,6 +7562,14 @@ class TableComponent {
7487
7562
  * Whether the table is striped.
7488
7563
  */
7489
7564
  this.striped = true;
7565
+ /**
7566
+ * Whether table rows should apply hover styles when hovered over via cursor.
7567
+ */
7568
+ this.hover = true;
7569
+ /**
7570
+ * The layout algorithm to be used when rendering the table.
7571
+ */
7572
+ this.layout = 'auto';
7490
7573
  /**
7491
7574
  * The placeholder text and empty value display text for `<impdc-select>` instances in cells with a `ITableColumnDef` `columnType` = `SingleSelect` or `MultiSelect`.
7492
7575
  */
@@ -7494,7 +7577,7 @@ class TableComponent {
7494
7577
  /**
7495
7578
  * The `columnDefs` index of the currently sorted column.
7496
7579
  */
7497
- this.sortColumnIndex = SORT_COLUMN_INDEX;
7580
+ this.sortColumnIndex = 0;
7498
7581
  /**
7499
7582
  * The direction of the currently sorted column.
7500
7583
  */
@@ -7503,6 +7586,18 @@ class TableComponent {
7503
7586
  * The table row data as an array of `ITableRowItem`.
7504
7587
  */
7505
7588
  this.tableData = [];
7589
+ /**
7590
+ * An optional template for content that may be rendered below a row in an collapsible view. Value can either be an Angular template or a function that can evaluated
7591
+ * to resolve to a template. The template will be rendered with a provided `ICollapsibleRowContentContext` object as template context, with the current `ITableRowData`
7592
+ * implicitly available as a default template key.
7593
+ */
7594
+ this.collapsibleTemplate = null;
7595
+ /**
7596
+ * The clickable control that will trigger expansion and collapse of content when using `collapsibleTemplate` functionality.
7597
+ * When set to `button`, the collapsible content's state can only be toggled from a clickable button at the start of the row.
7598
+ * When set to `row`, the entire row will become a clickable trigger.
7599
+ */
7600
+ this.collapsibleTrigger = 'button';
7506
7601
  /**
7507
7602
  * Event emitted when one or multiple rows are selected. Emits `(string | number)[]` payload.
7508
7603
  */
@@ -7519,15 +7614,19 @@ class TableComponent {
7519
7614
  * Event emitted when a row action is clicked. Emits an `ITableRowActionPayload` payload.
7520
7615
  */
7521
7616
  this.rowActionClick = new EventEmitter();
7522
- /** @ignore */
7523
- this.paginationComponent = undefined;
7524
- /** @ignore */
7525
- this.bulkActions = undefined;
7526
7617
  /**
7527
- * Event emitted when a row input value is changed. Emitted cells of `columnType` `SinglSelect`, `MultiSelect`, `Input`, `Boolean` or `Icon`.
7618
+ * Event emitted when a row input value is changed. Emitted cells of `columnType` `SingleSelect`, `MultiSelect`, `Input`, `Boolean` or `Icon`.
7528
7619
  * Not emitted if column definition property `disabled` = `true`. Emits `ITableEventPayload` payload.
7529
7620
  */
7530
7621
  this.inputChange = new EventEmitter();
7622
+ /**
7623
+ * Event emitted when a row with collapsible content has its collapse state changed.
7624
+ */
7625
+ this.rowCollapseChange = new EventEmitter();
7626
+ /** @ignore */
7627
+ this.paginationComponent = undefined;
7628
+ /** @ignore */
7629
+ this.bulkActions = undefined;
7531
7630
  /** @ignore */
7532
7631
  this.cellType = TableColumnType;
7533
7632
  /** @ignore */
@@ -7556,6 +7655,7 @@ class TableComponent {
7556
7655
  }
7557
7656
  }
7558
7657
  }
7658
+ /** @ignore */
7559
7659
  getMailToValue(columnIndex, currentRow) {
7560
7660
  const { columnType, truncated: truncated } = this._getColumnDefByIndex(columnIndex);
7561
7661
  let value = this._getValue(columnIndex, currentRow);
@@ -7565,6 +7665,7 @@ class TableComponent {
7565
7665
  value = value ? `mailto:${value}` : value;
7566
7666
  return String(value);
7567
7667
  }
7668
+ /** @ignore */
7568
7669
  getStringValue(columnIndex, currentRow) {
7569
7670
  const value = this.getValue(columnIndex, currentRow);
7570
7671
  if (Array.isArray(value)) {
@@ -7572,6 +7673,7 @@ class TableComponent {
7572
7673
  }
7573
7674
  return String(value);
7574
7675
  }
7676
+ /** @ignore */
7575
7677
  getValue(columnIndex, currentRow) {
7576
7678
  const { columnType, truncated: truncated } = this._getColumnDefByIndex(columnIndex);
7577
7679
  let value = this._getValue(columnIndex, currentRow);
@@ -7633,6 +7735,7 @@ class TableComponent {
7633
7735
  }
7634
7736
  return String(value);
7635
7737
  }
7738
+ /** @ignore */
7636
7739
  getRawValue(columnIndex, currentRow) {
7637
7740
  const { field } = this._getColumnDefByIndex(columnIndex);
7638
7741
  if (!field) {
@@ -7640,19 +7743,24 @@ class TableComponent {
7640
7743
  }
7641
7744
  return currentRow[field] || '';
7642
7745
  }
7746
+ /** @ignore */
7643
7747
  getCellColor(columnDefinition, item) {
7644
7748
  return TableThemeHelper.getCellColor(columnDefinition, item);
7645
7749
  }
7750
+ /** @ignore */
7646
7751
  getTheme(columnDefinition, item) {
7647
7752
  return (TableThemeHelper.getTheme(columnDefinition, item) ||
7648
7753
  ComponentTheme.Primary);
7649
7754
  }
7755
+ /** @ignore */
7650
7756
  isSortedColumn(columnIndex) {
7651
7757
  return columnIndex === this.sortColumnIndex;
7652
7758
  }
7759
+ /** @ignore */
7653
7760
  isRowSelected(id) {
7654
7761
  return this.selectedRowIds.includes(id);
7655
7762
  }
7763
+ /** @ignore */
7656
7764
  handleSelectAll(event) {
7657
7765
  if (!this.canSelectAllRows || !this.tableData) {
7658
7766
  return;
@@ -7667,6 +7775,7 @@ class TableComponent {
7667
7775
  this.allSelected = this.selectedRowIds.length >= this.tableData.length;
7668
7776
  this.rowSelect.emit(this.selectedRowIds);
7669
7777
  }
7778
+ /** @ignore */
7670
7779
  handleSort(columnIndex) {
7671
7780
  if (columnIndex === this.sortColumnIndex) {
7672
7781
  this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';
@@ -7682,6 +7791,7 @@ class TableComponent {
7682
7791
  direction: this.sortDirection
7683
7792
  });
7684
7793
  }
7794
+ /** @ignore */
7685
7795
  handleRowSelect(event, rowId) {
7686
7796
  if (!this.canSelectRows) {
7687
7797
  return;
@@ -7701,6 +7811,7 @@ class TableComponent {
7701
7811
  this.allSelected = this.selectedRowIds.length >= this.tableData.length;
7702
7812
  this.rowSelect.emit(this.selectedRowIds);
7703
7813
  }
7814
+ /** @ignore */
7704
7815
  handleCellValueChange(columnIndex, rowIndex, value) {
7705
7816
  const { field, columnType } = this._getColumnDefByIndex(columnIndex);
7706
7817
  let currentValue = value;
@@ -7716,12 +7827,16 @@ class TableComponent {
7716
7827
  });
7717
7828
  this._changeDetectorRef.detectChanges();
7718
7829
  }
7719
- handleLinkClick(columnIndex, item) {
7830
+ /** @ignore */
7831
+ handleLinkClick(columnIndex, item, event) {
7832
+ event.preventDefault();
7833
+ event.stopPropagation();
7720
7834
  this.linkClick.emit({
7721
7835
  item,
7722
7836
  columnIndex
7723
7837
  });
7724
7838
  }
7839
+ /** @ignore */
7725
7840
  handleActionClick(columnIndex, item, actionApiName) {
7726
7841
  this.rowActionClick.emit({
7727
7842
  item,
@@ -7732,6 +7847,21 @@ class TableComponent {
7732
7847
  columnDefIsActions(columnDef) {
7733
7848
  return columnDef.columnType === TableColumnType.Actions;
7734
7849
  }
7850
+ tryToggleCollapse(collapsibleForRowResult, ngbCollapse, event, source) {
7851
+ if (collapsibleForRowResult.template &&
7852
+ (this.collapsibleTrigger === 'row' || this.collapsibleTrigger === source)) {
7853
+ ngbCollapse.toggle();
7854
+ event.stopPropagation();
7855
+ }
7856
+ }
7857
+ getCollapsibleTemplateForRow(row) {
7858
+ return {
7859
+ template: this.collapsibleTemplate &&
7860
+ typeof this.collapsibleTemplate === 'function'
7861
+ ? this.collapsibleTemplate(row)
7862
+ : this.collapsibleTemplate
7863
+ };
7864
+ }
7735
7865
  _getColumnDefByIndex(columnIndex) {
7736
7866
  return this.columnDefs[columnIndex];
7737
7867
  }
@@ -7748,11 +7878,11 @@ class TableComponent {
7748
7878
  }
7749
7879
  }
7750
7880
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableComponent, deps: [{ token: i1.DatePipe }, { token: i1.PercentPipe }, { token: i1.DecimalPipe }, { token: i0.ChangeDetectorRef }, { token: BrandedDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
7751
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.1", type: TableComponent, selector: "impdc-table", inputs: { loading: "loading", columnDefs: "columnDefs", striped: "striped", canSelectRows: "canSelectRows", canSelectAllRows: "canSelectAllRows", selectPlaceholder: "selectPlaceholder", sortColumnIndex: "sortColumnIndex", sortDirection: "sortDirection", tableData: "tableData", selectedRowIds: "selectedRowIds", customCellComponents: "customCellComponents" }, outputs: { rowSelect: "rowSelect", sortBy: "sortBy", linkClick: "linkClick", rowActionClick: "rowActionClick", inputChange: "inputChange" }, queries: [{ propertyName: "paginationComponent", first: true, predicate: PaginationComponent, descendants: true }, { propertyName: "bulkActions", first: true, predicate: TableBulkActionsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (tableData) {\n<table impdcTable [striped]=\"striped\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (canSelectRows) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row; let rowIndex = $index) {\n <tr>\n @if (canSelectRows) {\n <td>\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row)\">\n @if (!branded) {\n <a>\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a target=\"_blank\" [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded [attr.href]=\"getMailToValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n allowClear=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"\n handleActionClick(colIndex, row, $event)\n \"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n", styles: [".bulk-action-container{display:flex;flex-direction:row;border:1px solid var(--impd-color-gray-200);border-top-left-radius:.6rem;border-top-right-radius:.6rem;border-bottom:0px}.bulk-action-container .bulk-action-checkbox{padding:1.6rem 2rem}.bulk-action-container .bulk-actions{display:flex;flex-direction:row;gap:.4rem}.col-no-padding{padding:0!important}.data-loading{height:var(--impd-size-80);vertical-align:middle;text-align:center}.no-data{vertical-align:middle;text-align:center}.select-row{display:flex;height:var(--impd-size-4);align-items:center;justify-items:end;border-radius:var(--impd-border-radius-default)}.heading-with-checkbox{padding-left:5px;padding-right:10px}.actions-column{width:.1%;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: BrandedDirective, selector: "[impdcBranded]" }, { kind: "component", type: IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "component", type: CheckboxComponent, selector: "impdc-checkbox", inputs: ["tabIndex", "id", "label", "description", "isSwitch", "switchIcons", "inline", "layout", "checked", "indeterminate", "disabled", "errorStateMatcher", "required"], outputs: ["change", "indeterminateChange"], exportAs: ["impdcCheckControl"] }, { kind: "component", type: SelectOptionComponent, selector: "impdc-select-option", inputs: ["value", "label", "disabled"] }, { kind: "component", type: SelectComponent, selector: "impdc-select", inputs: ["disabled", "tabIndex", "search", "placeholder", "required", "compareWith", "dropdownContainer", "errorStateMatcher", "allowClear", "multiple", "multipleDisplay"], outputs: ["selectionChange", "valueChange", "searchTextChanges"], exportAs: ["impdcSelect"] }, { kind: "directive", type: InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SpinnerComponent, selector: "impdc-spinner, div[impdc-spinner]", inputs: ["accessibilityText"] }, { kind: "component", type: BadgeComponent, selector: "impdc-badge, [impdc-badge]", inputs: ["text", "icon", "theme", "size", "hideBg", "rounded", "dismissable"], outputs: ["dismiss"] }, { kind: "directive", type: TableDirective, selector: "table[impdcTable]", inputs: ["striped"] }, { kind: "component", type: ColumnHeadingComponent, selector: "impdc-column-heading", inputs: ["isSortable", "columnIndex", "sortColumnIndex", "direction", "text"], outputs: ["sort"] }, { kind: "directive", type: TableInjectComponentDirective, selector: "[impdcTableInjectComponent]", inputs: ["columnDef", "value", "rowItem", "customCellComponents"] }, { kind: "component", type: RowActionsComponent, selector: "impdc-row-actions", inputs: ["columnDef", "rowItem", "lastColumn"], outputs: ["actionClick"] }] }); }
7881
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.1", type: TableComponent, selector: "impdc-table", inputs: { loading: "loading", columnDefs: "columnDefs", striped: "striped", hover: "hover", layout: "layout", canSelectRows: "canSelectRows", canSelectAllRows: "canSelectAllRows", selectPlaceholder: "selectPlaceholder", sortColumnIndex: "sortColumnIndex", sortDirection: "sortDirection", tableData: "tableData", selectedRowIds: "selectedRowIds", customCellComponents: "customCellComponents", collapsibleTemplate: "collapsibleTemplate", collapsibleTrigger: "collapsibleTrigger" }, outputs: { rowSelect: "rowSelect", sortBy: "sortBy", linkClick: "linkClick", rowActionClick: "rowActionClick", inputChange: "inputChange", rowCollapseChange: "rowCollapseChange" }, queries: [{ propertyName: "paginationComponent", first: true, predicate: PaginationComponent, descendants: true }, { propertyName: "bulkActions", first: true, predicate: TableBulkActionsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (tableData) {\n<table\n impdcTable\n [striped]=\"striped && !collapsibleTemplate\"\n [layout]=\"layout\"\n [hover]=\"hover\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (collapsibleTemplate) {\n <th\n scope=\"col\"\n [class.heading-below-bulk-actions]=\"!!bulkActions\"\n class=\"impdc-table-collapsible-content-row-button-container\"></th>\n } @if (canSelectRows) {\n <th\n scope=\"col\"\n class=\"impdc-table-selectable-row-toggle-container\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row.id; let rowIndex = $index; let\n rowFirst = $first; let rowLast = $last; let rowEven = $even; let rowOdd =\n $odd) { @if (getCollapsibleTemplateForRow(row); as\n collapsibleTemplateForRow) {\n <tr\n [class.impdc-table-collapsible-row-trigger]=\"collapsibleTrigger === 'row'\"\n [class.table-active]=\"isRowSelected(row.id)\"\n (click)=\"\n tryToggleCollapse(collapsibleTemplateForRow, ngbCollapse, $event, 'row')\n \">\n @if (collapsibleTemplate) {\n <td\n class=\"impdc-table-collapsible-content-row-button-container\"\n [class.opened]=\"!collapseMonitor.ngbCollapsing()\">\n @if (collapsibleTemplateForRow.template) {\n <div>\n <button\n type=\"button\"\n (click)=\"\n tryToggleCollapse(\n collapsibleTemplateForRow,\n ngbCollapse,\n $event,\n 'button'\n )\n \"\n class=\"impdc-table-collapsible-content-row-button btn btn-link\">\n <span\n class=\"far fa-chevron-right\"\n [class.fa-rotate-90]=\"!collapseMonitor.ngbCollapsing()\"></span>\n </button>\n </div>\n }\n </td>\n } @if (canSelectRows) {\n <td class=\"impdc-table-selectable-row-toggle-container\">\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"\n (click)=\"$event.stopPropagation()\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row, $event)\">\n @if (!branded) {\n <a class=\"link-primary\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n [attr.href]=\"getMailToValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \"\n (click)=\"$event.stopPropagation()\" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"\n (click)=\"$event.stopPropagation()\"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n allowClear=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \"\n (click)=\"$event.stopPropagation()\">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \"\n (click)=\"$event.stopPropagation()\">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"handleActionClick(colIndex, row, $event)\"\n (click)=\"$event.stopPropagation()\"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n <tr\n class=\"impdc-table-collapsible-content-row\"\n [class.opened]=\"!collapseMonitor.ngbCollapsing()\">\n <td class=\"w-100 p-0\" [attr.colspan]=\"tableSpan\">\n <div\n class=\"impdc-table-collapsible-content-container\"\n #ngbCollapse=\"ngbCollapse\"\n #collapseMonitor=\"impdcCollapseMonitor\"\n [impdcCollapseMonitor]=\"true\"\n (collapseChange)=\"rowCollapseChange.emit({ row, collapsed: $event })\">\n @if (collapsibleTemplateForRow.template) {\n <div>\n <ng-container\n *ngTemplateOutlet=\"\n collapsibleTemplateForRow.template;\n context: {\n $implicit: row,\n collapsed: collapseMonitor.collapsed(),\n selected: isRowSelected(row.id),\n index: rowIndex,\n first: !!rowFirst,\n last: !!rowLast,\n even: !!rowEven,\n odd: !!rowOdd\n }\n \"></ng-container>\n </div>\n }\n </div>\n </td>\n </tr>\n } } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n", styles: [".bulk-action-container{display:flex;flex-direction:row;border:1px solid var(--impd-color-gray-200);border-top-left-radius:.6rem;border-top-right-radius:.6rem;border-bottom:0px}.bulk-action-container .bulk-action-checkbox{padding:1.6rem 2rem}.bulk-action-container .bulk-actions{display:flex;flex-direction:row;gap:.4rem}.col-no-padding{padding:0!important}.data-loading{height:var(--impd-size-80);vertical-align:middle;text-align:center}.no-data{vertical-align:middle;text-align:center}.select-row{display:flex;height:var(--impd-size-4);align-items:center;justify-items:end;border-radius:var(--impd-border-radius-default)}.heading-with-checkbox{padding-left:5px;padding-right:10px}.actions-column{width:.1%;white-space:nowrap}tr.impdc-table-collapsible-content-row:has(>td>div.impdc-table-collapsible-content-container.collapse:not(.show)){display:none}tr:has(td.impdc-table-collapsible-content-row-button-container),tr.impdc-table-collapsible-content-row{transition:background-color .35s ease-in-out}tr:has(td.impdc-table-collapsible-content-row-button-container.opened),tr.impdc-table-collapsible-content-row.opened{background-color:var(--impd-color-gray-50)}tr.impdc-table-collapsible-row-trigger{cursor:pointer}table ::ng-deep tbody>tr>td.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>td.impdc-table-selectable-row-toggle-container,table ::ng-deep thead>tr>th.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>th.impdc-table-selectable-row-toggle-container{padding-left:var(--impd-size-5);padding-right:var(--impd-size-1);width:var(--impd-size-10)}table ::ng-deep tbody>tr>td.impdc-table-collapsible-content-row-button-container,table ::ng-deep tr>td.impdc-table-collapsible-content-row-button-container,table ::ng-deep thead>tr>th.impdc-table-collapsible-content-row-button-container,table ::ng-deep tr>th.impdc-table-collapsible-content-row-button-container{padding-left:var(--impd-size-5);padding-right:0;width:var(--impd-size-10)}table ::ng-deep tbody>tr>td.impdc-table-collapsible-content-row-button-container:empty,table ::ng-deep tr>td.impdc-table-collapsible-content-row-button-container:empty,table ::ng-deep thead>tr>th.impdc-table-collapsible-content-row-button-container:empty,table ::ng-deep tr>th.impdc-table-collapsible-content-row-button-container:empty{padding:0}table ::ng-deep tbody>tr>td.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>td.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container,table ::ng-deep thead>tr>th.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>th.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container{padding-left:var(--impd-size-3);width:var(--impd-size-8)}.impdc-table-collapsible-content-row-button{align-items:center;border-radius:var(--impd-border-radius-2xl);color:var(--impd-color-gray-700)!important;display:flex;height:var(--impd-size-5);justify-content:center;padding:0;width:var(--impd-size-5);box-shadow:none}.impdc-table-collapsible-content-row-button:hover,.impdc-table-collapsible-content-row-button:focus,.impdc-table-collapsible-content-row-button:active{background-color:var(--impd-color-gray-100)}.impdc-table-collapsible-content-row-button impdc-icon{line-height:1}.impdc-table-collapsible-content-row-button>span.fa-chevron-right{font-size:1.6rem;transition:transform .35s}table.table-striped>tbody>tr:nth-of-type(4n+3)>*{--impartner-hex-table-bg-type: var(--impd-color-gray-50)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: BrandedDirective, selector: "[impdcBranded]" }, { kind: "component", type: IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "component", type: CheckboxComponent, selector: "impdc-checkbox", inputs: ["tabIndex", "id", "label", "description", "isSwitch", "switchIcons", "inline", "layout", "checked", "indeterminate", "disabled", "errorStateMatcher", "required"], outputs: ["change", "indeterminateChange"], exportAs: ["impdcCheckControl"] }, { kind: "component", type: SelectOptionComponent, selector: "impdc-select-option", inputs: ["value", "label", "disabled"] }, { kind: "component", type: SelectComponent, selector: "impdc-select", inputs: ["disabled", "tabIndex", "search", "placeholder", "required", "compareWith", "dropdownContainer", "errorStateMatcher", "allowClear", "multiple", "multipleDisplay"], outputs: ["selectionChange", "valueChange", "searchTextChanges"], exportAs: ["impdcSelect"] }, { kind: "directive", type: InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SpinnerComponent, selector: "impdc-spinner, div[impdc-spinner]", inputs: ["accessibilityText"] }, { kind: "component", type: BadgeComponent, selector: "impdc-badge, [impdc-badge]", inputs: ["text", "icon", "theme", "size", "hideBg", "rounded", "dismissable"], outputs: ["dismiss"] }, { kind: "directive", type: CollapseMonitorDirective, selector: "[impdcCollapseMonitor]", outputs: ["collapseChange"], exportAs: ["impdcCollapseMonitor"] }, { kind: "directive", type: TableDirective, selector: "table[impdcTable]", inputs: ["striped", "hover", "layout"] }, { kind: "component", type: ColumnHeadingComponent, selector: "impdc-column-heading", inputs: ["isSortable", "columnIndex", "sortColumnIndex", "direction", "text"], outputs: ["sort"] }, { kind: "directive", type: TableInjectComponentDirective, selector: "[impdcTableInjectComponent]", inputs: ["columnDef", "value", "rowItem", "customCellComponents"] }, { kind: "component", type: RowActionsComponent, selector: "impdc-row-actions", inputs: ["columnDef", "rowItem", "lastColumn"], outputs: ["actionClick"] }] }); }
7752
7882
  }
7753
7883
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableComponent, decorators: [{
7754
7884
  type: Component,
7755
- args: [{ selector: 'impdc-table', template: "@if (tableData) {\n<table impdcTable [striped]=\"striped\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (canSelectRows) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row; let rowIndex = $index) {\n <tr>\n @if (canSelectRows) {\n <td>\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row)\">\n @if (!branded) {\n <a>\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a target=\"_blank\" [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded [attr.href]=\"getMailToValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n allowClear=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"\n handleActionClick(colIndex, row, $event)\n \"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n", styles: [".bulk-action-container{display:flex;flex-direction:row;border:1px solid var(--impd-color-gray-200);border-top-left-radius:.6rem;border-top-right-radius:.6rem;border-bottom:0px}.bulk-action-container .bulk-action-checkbox{padding:1.6rem 2rem}.bulk-action-container .bulk-actions{display:flex;flex-direction:row;gap:.4rem}.col-no-padding{padding:0!important}.data-loading{height:var(--impd-size-80);vertical-align:middle;text-align:center}.no-data{vertical-align:middle;text-align:center}.select-row{display:flex;height:var(--impd-size-4);align-items:center;justify-items:end;border-radius:var(--impd-border-radius-default)}.heading-with-checkbox{padding-left:5px;padding-right:10px}.actions-column{width:.1%;white-space:nowrap}\n"] }]
7885
+ args: [{ selector: 'impdc-table', template: "@if (tableData) {\n<table\n impdcTable\n [striped]=\"striped && !collapsibleTemplate\"\n [layout]=\"layout\"\n [hover]=\"hover\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (collapsibleTemplate) {\n <th\n scope=\"col\"\n [class.heading-below-bulk-actions]=\"!!bulkActions\"\n class=\"impdc-table-collapsible-content-row-button-container\"></th>\n } @if (canSelectRows) {\n <th\n scope=\"col\"\n class=\"impdc-table-selectable-row-toggle-container\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row.id; let rowIndex = $index; let\n rowFirst = $first; let rowLast = $last; let rowEven = $even; let rowOdd =\n $odd) { @if (getCollapsibleTemplateForRow(row); as\n collapsibleTemplateForRow) {\n <tr\n [class.impdc-table-collapsible-row-trigger]=\"collapsibleTrigger === 'row'\"\n [class.table-active]=\"isRowSelected(row.id)\"\n (click)=\"\n tryToggleCollapse(collapsibleTemplateForRow, ngbCollapse, $event, 'row')\n \">\n @if (collapsibleTemplate) {\n <td\n class=\"impdc-table-collapsible-content-row-button-container\"\n [class.opened]=\"!collapseMonitor.ngbCollapsing()\">\n @if (collapsibleTemplateForRow.template) {\n <div>\n <button\n type=\"button\"\n (click)=\"\n tryToggleCollapse(\n collapsibleTemplateForRow,\n ngbCollapse,\n $event,\n 'button'\n )\n \"\n class=\"impdc-table-collapsible-content-row-button btn btn-link\">\n <span\n class=\"far fa-chevron-right\"\n [class.fa-rotate-90]=\"!collapseMonitor.ngbCollapsing()\"></span>\n </button>\n </div>\n }\n </td>\n } @if (canSelectRows) {\n <td class=\"impdc-table-selectable-row-toggle-container\">\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"\n (click)=\"$event.stopPropagation()\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row, $event)\">\n @if (!branded) {\n <a class=\"link-primary\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n [attr.href]=\"getMailToValue(colIndex, row)\"\n (click)=\"$event.stopPropagation()\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \"\n (click)=\"$event.stopPropagation()\" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"\n (click)=\"$event.stopPropagation()\"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n allowClear=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \"\n (click)=\"$event.stopPropagation()\">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \"\n (click)=\"$event.stopPropagation()\">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"handleActionClick(colIndex, row, $event)\"\n (click)=\"$event.stopPropagation()\"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n <tr\n class=\"impdc-table-collapsible-content-row\"\n [class.opened]=\"!collapseMonitor.ngbCollapsing()\">\n <td class=\"w-100 p-0\" [attr.colspan]=\"tableSpan\">\n <div\n class=\"impdc-table-collapsible-content-container\"\n #ngbCollapse=\"ngbCollapse\"\n #collapseMonitor=\"impdcCollapseMonitor\"\n [impdcCollapseMonitor]=\"true\"\n (collapseChange)=\"rowCollapseChange.emit({ row, collapsed: $event })\">\n @if (collapsibleTemplateForRow.template) {\n <div>\n <ng-container\n *ngTemplateOutlet=\"\n collapsibleTemplateForRow.template;\n context: {\n $implicit: row,\n collapsed: collapseMonitor.collapsed(),\n selected: isRowSelected(row.id),\n index: rowIndex,\n first: !!rowFirst,\n last: !!rowLast,\n even: !!rowEven,\n odd: !!rowOdd\n }\n \"></ng-container>\n </div>\n }\n </div>\n </td>\n </tr>\n } } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n", styles: [".bulk-action-container{display:flex;flex-direction:row;border:1px solid var(--impd-color-gray-200);border-top-left-radius:.6rem;border-top-right-radius:.6rem;border-bottom:0px}.bulk-action-container .bulk-action-checkbox{padding:1.6rem 2rem}.bulk-action-container .bulk-actions{display:flex;flex-direction:row;gap:.4rem}.col-no-padding{padding:0!important}.data-loading{height:var(--impd-size-80);vertical-align:middle;text-align:center}.no-data{vertical-align:middle;text-align:center}.select-row{display:flex;height:var(--impd-size-4);align-items:center;justify-items:end;border-radius:var(--impd-border-radius-default)}.heading-with-checkbox{padding-left:5px;padding-right:10px}.actions-column{width:.1%;white-space:nowrap}tr.impdc-table-collapsible-content-row:has(>td>div.impdc-table-collapsible-content-container.collapse:not(.show)){display:none}tr:has(td.impdc-table-collapsible-content-row-button-container),tr.impdc-table-collapsible-content-row{transition:background-color .35s ease-in-out}tr:has(td.impdc-table-collapsible-content-row-button-container.opened),tr.impdc-table-collapsible-content-row.opened{background-color:var(--impd-color-gray-50)}tr.impdc-table-collapsible-row-trigger{cursor:pointer}table ::ng-deep tbody>tr>td.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>td.impdc-table-selectable-row-toggle-container,table ::ng-deep thead>tr>th.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>th.impdc-table-selectable-row-toggle-container{padding-left:var(--impd-size-5);padding-right:var(--impd-size-1);width:var(--impd-size-10)}table ::ng-deep tbody>tr>td.impdc-table-collapsible-content-row-button-container,table ::ng-deep tr>td.impdc-table-collapsible-content-row-button-container,table ::ng-deep thead>tr>th.impdc-table-collapsible-content-row-button-container,table ::ng-deep tr>th.impdc-table-collapsible-content-row-button-container{padding-left:var(--impd-size-5);padding-right:0;width:var(--impd-size-10)}table ::ng-deep tbody>tr>td.impdc-table-collapsible-content-row-button-container:empty,table ::ng-deep tr>td.impdc-table-collapsible-content-row-button-container:empty,table ::ng-deep thead>tr>th.impdc-table-collapsible-content-row-button-container:empty,table ::ng-deep tr>th.impdc-table-collapsible-content-row-button-container:empty{padding:0}table ::ng-deep tbody>tr>td.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>td.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container,table ::ng-deep thead>tr>th.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container,table ::ng-deep tr>th.impdc-table-collapsible-content-row-button-container+.impdc-table-selectable-row-toggle-container{padding-left:var(--impd-size-3);width:var(--impd-size-8)}.impdc-table-collapsible-content-row-button{align-items:center;border-radius:var(--impd-border-radius-2xl);color:var(--impd-color-gray-700)!important;display:flex;height:var(--impd-size-5);justify-content:center;padding:0;width:var(--impd-size-5);box-shadow:none}.impdc-table-collapsible-content-row-button:hover,.impdc-table-collapsible-content-row-button:focus,.impdc-table-collapsible-content-row-button:active{background-color:var(--impd-color-gray-100)}.impdc-table-collapsible-content-row-button impdc-icon{line-height:1}.impdc-table-collapsible-content-row-button>span.fa-chevron-right{font-size:1.6rem;transition:transform .35s}table.table-striped>tbody>tr:nth-of-type(4n+3)>*{--impartner-hex-table-bg-type: var(--impd-color-gray-50)}\n"] }]
7756
7886
  }], ctorParameters: () => [{ type: i1.DatePipe }, { type: i1.PercentPipe }, { type: i1.DecimalPipe }, { type: i0.ChangeDetectorRef }, { type: BrandedDirective, decorators: [{
7757
7887
  type: Optional
7758
7888
  }, {
@@ -7763,6 +7893,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7763
7893
  type: Input
7764
7894
  }], striped: [{
7765
7895
  type: Input
7896
+ }], hover: [{
7897
+ type: Input
7898
+ }], layout: [{
7899
+ type: Input
7766
7900
  }], canSelectRows: [{
7767
7901
  type: Input
7768
7902
  }], canSelectAllRows: [{
@@ -7779,6 +7913,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7779
7913
  type: Input
7780
7914
  }], customCellComponents: [{
7781
7915
  type: Input
7916
+ }], collapsibleTemplate: [{
7917
+ type: Input
7918
+ }], collapsibleTrigger: [{
7919
+ type: Input
7782
7920
  }], rowSelect: [{
7783
7921
  type: Output
7784
7922
  }], sortBy: [{
@@ -7787,14 +7925,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7787
7925
  type: Output
7788
7926
  }], rowActionClick: [{
7789
7927
  type: Output
7928
+ }], inputChange: [{
7929
+ type: Output
7930
+ }], rowCollapseChange: [{
7931
+ type: Output
7790
7932
  }], paginationComponent: [{
7791
7933
  type: ContentChild,
7792
7934
  args: [PaginationComponent]
7793
7935
  }], bulkActions: [{
7794
7936
  type: ContentChild,
7795
7937
  args: [TableBulkActionsComponent]
7796
- }], inputChange: [{
7797
- type: Output
7798
7938
  }] } });
7799
7939
 
7800
7940
  class SpinnerModule {
@@ -7814,7 +7954,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7814
7954
  class TableModule {
7815
7955
  constructor() { }
7816
7956
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7817
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: TableModule, declarations: [TableDirective,
7957
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: TableModule, declarations: [CollapseMonitorDirective,
7958
+ TableDirective,
7818
7959
  TableComponent,
7819
7960
  ColumnHeadingComponent,
7820
7961
  TableInjectComponentDirective,
@@ -7828,7 +7969,8 @@ class TableModule {
7828
7969
  SpinnerModule,
7829
7970
  BadgeModule,
7830
7971
  BrandingModule,
7831
- NgbDropdownModule], exports: [ButtonModule,
7972
+ NgbDropdownModule,
7973
+ NgbCollapseModule], exports: [ButtonModule,
7832
7974
  TableDirective,
7833
7975
  ColumnHeadingComponent,
7834
7976
  TableBulkActionsComponent,
@@ -7847,7 +7989,8 @@ class TableModule {
7847
7989
  SpinnerModule,
7848
7990
  BadgeModule,
7849
7991
  BrandingModule,
7850
- NgbDropdownModule, ButtonModule,
7992
+ NgbDropdownModule,
7993
+ NgbCollapseModule, ButtonModule,
7851
7994
  PaginationModule,
7852
7995
  IconModule,
7853
7996
  BrandingModule] }); }
@@ -7865,9 +8008,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
7865
8008
  SpinnerModule,
7866
8009
  BadgeModule,
7867
8010
  BrandingModule,
7868
- NgbDropdownModule
8011
+ NgbDropdownModule,
8012
+ NgbCollapseModule
7869
8013
  ],
7870
8014
  declarations: [
8015
+ CollapseMonitorDirective,
7871
8016
  TableDirective,
7872
8017
  TableComponent,
7873
8018
  ColumnHeadingComponent,
@@ -7968,6 +8113,10 @@ class ModalComponent {
7968
8113
  * Shows a backdrop behind the Modal.
7969
8114
  */
7970
8115
  this.backdrop = true;
8116
+ /**
8117
+ * When `true`, Modal will not automatically render a fallback "accept" button in the footer.
8118
+ */
8119
+ this.noFallback = false;
7971
8120
  /**
7972
8121
  * Event emitted when the Modal content is dismissed.
7973
8122
  */
@@ -8109,7 +8258,7 @@ class ModalComponent {
8109
8258
  this._closed$.next();
8110
8259
  }
8111
8260
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ModalComponent, deps: [{ token: InteractionService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
8112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: ModalComponent, selector: "impdc-modal", inputs: { show: "show", theme: "theme", size: "size", iconName: "iconName", iconTheme: "iconTheme", titleText: "titleText", acceptText: "acceptText", dismissable: "dismissable", fade: "fade", backdrop: "backdrop" }, outputs: { dismiss: "dismiss", deny: "deny", accept: "accept" }, host: { attributes: { "tabindex": "-1" }, properties: { "class.fade": "fade", "class.in": "fade && shown", "class.show": "shown", "class.dismissable": "dismissable" }, classAttribute: "impdc modal" }, viewQueries: [{ propertyName: "_dialogElementRef", first: true, predicate: ["dialogElement"], descendants: true }, { propertyName: "dismissEl", first: true, predicate: ["dismissEl"], descendants: true }, { propertyName: "denyEl", first: true, predicate: ["denyEl"], descendants: true }, { propertyName: "acceptEl", first: true, predicate: ["acceptEl"], descendants: true }], ngImport: i0, template: "<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n", styles: [":host{-webkit-user-select:none;user-select:none}:host .modal-icon{display:inline-flex;justify-content:center;align-items:center;height:40px;width:40px;color:var(--impd-color-gray-500);background:var(--impd-color-gray-100);border-radius:50%;flex-shrink:0}:host .modal-icon .fa,:host .modal-icon .fa-brands,:host .modal-icon .fa-duotone,:host .modal-icon .fa-light,:host .modal-icon .fa-regular,:host .modal-icon .fa-solid,:host .modal-icon .fa-thin,:host .modal-icon .fab,:host .modal-icon .fad,:host .modal-icon .fal,:host .modal-icon .far,:host .modal-icon .fas,:host .modal-icon .fat{line-height:var(--impartner-hex-modal-title-line-height)}:host.fade.in{background-color:transparent}:host.show{display:block;opacity:1}:host:not(.show),:host.hide,:host .hide{display:none}:host.dismissable{cursor:pointer}:host.dismissable .modal-dialog{cursor:default}:host .modal-dialog{cursor:default;-webkit-user-select:auto;user-select:auto}:host .modal-theme-simple .modal-header,:host .modal-theme-destructive .modal-header{border:0;padding-bottom:0}:host .modal-theme-simple .modal-body,:host .modal-theme-destructive .modal-body{padding:calc(var(--impartner-hex-modal-padding) * .5) var(--impartner-hex-modal-padding) var(--impartner-hex-modal-padding)}:host .modal-theme-simple .modal-footer,:host .modal-theme-destructive .modal-footer{border:0;padding-top:0}:host .modal-theme-working .modal-footer{padding:calc(var(--impartner-hex-modal-padding) * .5 - var(--impartner-hex-modal-footer-gap) * .5) calc(var(--impartner-hex-modal-padding) - var(--impartner-hex-modal-footer-gap) * .5)}:host .modal-theme-destructive .modal-content{display:grid;grid-template-areas:\"modal-icon modal-header\" \"modal-icon modal-body\" \"modal-footer modal-footer\";grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto}:host .modal-theme-destructive .modal-content>.modal-icon{grid-area:modal-icon;margin:var(--impartner-hex-modal-header-padding);margin-right:0;margin-bottom:0}:host .modal-theme-destructive .modal-content>.modal-header{grid-area:modal-header;padding-left:16px;margin-top:8px;justify-content:unset}:host .modal-theme-destructive .modal-content>.modal-body{grid-area:modal-body;padding-left:16px}:host .modal-theme-destructive .modal-content>.modal-footer{grid-area:modal-footer}:host .modal-theme-destructive .modal-icon{color:var(--impd-color-red-600);background:var(--impd-color-red-100)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "component", type: IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
8261
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: ModalComponent, selector: "impdc-modal", inputs: { show: "show", theme: "theme", size: "size", iconName: "iconName", iconTheme: "iconTheme", titleText: "titleText", acceptText: "acceptText", dismissable: "dismissable", fade: "fade", backdrop: "backdrop", noFallback: "noFallback" }, outputs: { dismiss: "dismiss", deny: "deny", accept: "accept" }, host: { attributes: { "tabindex": "-1" }, properties: { "class.fade": "fade", "class.in": "fade && shown", "class.show": "shown", "class.dismissable": "dismissable" }, classAttribute: "impdc modal" }, viewQueries: [{ propertyName: "_dialogElementRef", first: true, predicate: ["dialogElement"], descendants: true }, { propertyName: "dismissEl", first: true, predicate: ["dismissEl"], descendants: true }, { propertyName: "denyEl", first: true, predicate: ["denyEl"], descendants: true }, { propertyName: "acceptEl", first: true, predicate: ["acceptEl"], descendants: true }], ngImport: i0, template: "<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!noFallback && !acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n", styles: [":host{-webkit-user-select:none;user-select:none}:host .modal-icon{display:inline-flex;justify-content:center;align-items:center;height:40px;width:40px;color:var(--impd-color-gray-500);background:var(--impd-color-gray-100);border-radius:50%;flex-shrink:0}:host .modal-icon .fa,:host .modal-icon .fa-brands,:host .modal-icon .fa-duotone,:host .modal-icon .fa-light,:host .modal-icon .fa-regular,:host .modal-icon .fa-solid,:host .modal-icon .fa-thin,:host .modal-icon .fab,:host .modal-icon .fad,:host .modal-icon .fal,:host .modal-icon .far,:host .modal-icon .fas,:host .modal-icon .fat{line-height:var(--impartner-hex-modal-title-line-height)}:host.fade.in{background-color:transparent}:host.show{display:block;opacity:1}:host:not(.show),:host.hide,:host .hide{display:none}:host.dismissable{cursor:pointer}:host.dismissable .modal-dialog{cursor:default}:host .modal-dialog{cursor:default;-webkit-user-select:auto;user-select:auto}:host .modal-theme-simple .modal-header,:host .modal-theme-destructive .modal-header{border:0;padding-bottom:0}:host .modal-theme-simple .modal-body,:host .modal-theme-destructive .modal-body{padding:calc(var(--impartner-hex-modal-padding) * .5) var(--impartner-hex-modal-padding) var(--impartner-hex-modal-padding)}:host .modal-theme-simple .modal-footer,:host .modal-theme-destructive .modal-footer{border:0;padding-top:0}:host .modal-theme-working .modal-footer{padding:calc(var(--impartner-hex-modal-padding) * .5 - var(--impartner-hex-modal-footer-gap) * .5) calc(var(--impartner-hex-modal-padding) - var(--impartner-hex-modal-footer-gap) * .5)}:host .modal-theme-destructive .modal-content{display:grid;grid-template-areas:\"modal-icon modal-header\" \"modal-icon modal-body\" \"modal-footer modal-footer\";grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto}:host .modal-theme-destructive .modal-content>.modal-icon{grid-area:modal-icon;margin:var(--impartner-hex-modal-header-padding);margin-right:0;margin-bottom:0}:host .modal-theme-destructive .modal-content>.modal-header{grid-area:modal-header;padding-left:16px;margin-top:8px;justify-content:unset}:host .modal-theme-destructive .modal-content>.modal-body{grid-area:modal-body;padding-left:16px}:host .modal-theme-destructive .modal-content>.modal-footer{grid-area:modal-footer}:host .modal-theme-destructive .modal-icon{color:var(--impd-color-red-600);background:var(--impd-color-red-100)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "component", type: IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
8113
8262
  }
8114
8263
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ModalComponent, decorators: [{
8115
8264
  type: Component,
@@ -8120,7 +8269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
8120
8269
  '[class.show]': 'shown',
8121
8270
  '[class.dismissable]': 'dismissable',
8122
8271
  tabindex: '-1'
8123
- }, template: "<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n", styles: [":host{-webkit-user-select:none;user-select:none}:host .modal-icon{display:inline-flex;justify-content:center;align-items:center;height:40px;width:40px;color:var(--impd-color-gray-500);background:var(--impd-color-gray-100);border-radius:50%;flex-shrink:0}:host .modal-icon .fa,:host .modal-icon .fa-brands,:host .modal-icon .fa-duotone,:host .modal-icon .fa-light,:host .modal-icon .fa-regular,:host .modal-icon .fa-solid,:host .modal-icon .fa-thin,:host .modal-icon .fab,:host .modal-icon .fad,:host .modal-icon .fal,:host .modal-icon .far,:host .modal-icon .fas,:host .modal-icon .fat{line-height:var(--impartner-hex-modal-title-line-height)}:host.fade.in{background-color:transparent}:host.show{display:block;opacity:1}:host:not(.show),:host.hide,:host .hide{display:none}:host.dismissable{cursor:pointer}:host.dismissable .modal-dialog{cursor:default}:host .modal-dialog{cursor:default;-webkit-user-select:auto;user-select:auto}:host .modal-theme-simple .modal-header,:host .modal-theme-destructive .modal-header{border:0;padding-bottom:0}:host .modal-theme-simple .modal-body,:host .modal-theme-destructive .modal-body{padding:calc(var(--impartner-hex-modal-padding) * .5) var(--impartner-hex-modal-padding) var(--impartner-hex-modal-padding)}:host .modal-theme-simple .modal-footer,:host .modal-theme-destructive .modal-footer{border:0;padding-top:0}:host .modal-theme-working .modal-footer{padding:calc(var(--impartner-hex-modal-padding) * .5 - var(--impartner-hex-modal-footer-gap) * .5) calc(var(--impartner-hex-modal-padding) - var(--impartner-hex-modal-footer-gap) * .5)}:host .modal-theme-destructive .modal-content{display:grid;grid-template-areas:\"modal-icon modal-header\" \"modal-icon modal-body\" \"modal-footer modal-footer\";grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto}:host .modal-theme-destructive .modal-content>.modal-icon{grid-area:modal-icon;margin:var(--impartner-hex-modal-header-padding);margin-right:0;margin-bottom:0}:host .modal-theme-destructive .modal-content>.modal-header{grid-area:modal-header;padding-left:16px;margin-top:8px;justify-content:unset}:host .modal-theme-destructive .modal-content>.modal-body{grid-area:modal-body;padding-left:16px}:host .modal-theme-destructive .modal-content>.modal-footer{grid-area:modal-footer}:host .modal-theme-destructive .modal-icon{color:var(--impd-color-red-600);background:var(--impd-color-red-100)}\n"] }]
8272
+ }, template: "<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!noFallback && !acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n", styles: [":host{-webkit-user-select:none;user-select:none}:host .modal-icon{display:inline-flex;justify-content:center;align-items:center;height:40px;width:40px;color:var(--impd-color-gray-500);background:var(--impd-color-gray-100);border-radius:50%;flex-shrink:0}:host .modal-icon .fa,:host .modal-icon .fa-brands,:host .modal-icon .fa-duotone,:host .modal-icon .fa-light,:host .modal-icon .fa-regular,:host .modal-icon .fa-solid,:host .modal-icon .fa-thin,:host .modal-icon .fab,:host .modal-icon .fad,:host .modal-icon .fal,:host .modal-icon .far,:host .modal-icon .fas,:host .modal-icon .fat{line-height:var(--impartner-hex-modal-title-line-height)}:host.fade.in{background-color:transparent}:host.show{display:block;opacity:1}:host:not(.show),:host.hide,:host .hide{display:none}:host.dismissable{cursor:pointer}:host.dismissable .modal-dialog{cursor:default}:host .modal-dialog{cursor:default;-webkit-user-select:auto;user-select:auto}:host .modal-theme-simple .modal-header,:host .modal-theme-destructive .modal-header{border:0;padding-bottom:0}:host .modal-theme-simple .modal-body,:host .modal-theme-destructive .modal-body{padding:calc(var(--impartner-hex-modal-padding) * .5) var(--impartner-hex-modal-padding) var(--impartner-hex-modal-padding)}:host .modal-theme-simple .modal-footer,:host .modal-theme-destructive .modal-footer{border:0;padding-top:0}:host .modal-theme-working .modal-footer{padding:calc(var(--impartner-hex-modal-padding) * .5 - var(--impartner-hex-modal-footer-gap) * .5) calc(var(--impartner-hex-modal-padding) - var(--impartner-hex-modal-footer-gap) * .5)}:host .modal-theme-destructive .modal-content{display:grid;grid-template-areas:\"modal-icon modal-header\" \"modal-icon modal-body\" \"modal-footer modal-footer\";grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto}:host .modal-theme-destructive .modal-content>.modal-icon{grid-area:modal-icon;margin:var(--impartner-hex-modal-header-padding);margin-right:0;margin-bottom:0}:host .modal-theme-destructive .modal-content>.modal-header{grid-area:modal-header;padding-left:16px;margin-top:8px;justify-content:unset}:host .modal-theme-destructive .modal-content>.modal-body{grid-area:modal-body;padding-left:16px}:host .modal-theme-destructive .modal-content>.modal-footer{grid-area:modal-footer}:host .modal-theme-destructive .modal-icon{color:var(--impd-color-red-600);background:var(--impd-color-red-100)}\n"] }]
8124
8273
  }], ctorParameters: () => [{ type: InteractionService }, { type: i0.ElementRef }], propDecorators: { _dialogElementRef: [{
8125
8274
  type: ViewChild,
8126
8275
  args: ['dialogElement']
@@ -8144,6 +8293,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
8144
8293
  type: Input
8145
8294
  }], backdrop: [{
8146
8295
  type: Input
8296
+ }], noFallback: [{
8297
+ type: Input
8147
8298
  }], dismissEl: [{
8148
8299
  type: ViewChild,
8149
8300
  args: ['dismissEl', { static: false }]
@@ -8257,6 +8408,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
8257
8408
  * To use, import `ProgressBarModule` or another module that imports and exports that module from `@impartner/design-components`.
8258
8409
  */
8259
8410
  class ProgressBarComponent {
8411
+ get textClass() {
8412
+ return this.darkText ? 'dark-progress-text' : 'light-progress-text';
8413
+ }
8260
8414
  constructor() {
8261
8415
  /**
8262
8416
  * The left/subject text of the Progress Bar.
@@ -8266,21 +8420,33 @@ class ProgressBarComponent {
8266
8420
  * The right/status text of the Progress Bar.
8267
8421
  */
8268
8422
  this.statusText = '';
8423
+ /**
8424
+ * The color of the progress bar
8425
+ */
8426
+ this.barColor = '';
8427
+ /**
8428
+ * The color of the label and status
8429
+ */
8430
+ this.darkText = true;
8269
8431
  /**
8270
8432
  * The current value of the Progress Bar represented as a number between 0 and 100.
8271
8433
  */
8272
8434
  this.progressPercentage = 0;
8273
8435
  }
8274
8436
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8275
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: ProgressBarComponent, selector: "impdc-progress-bar", inputs: { labelText: "labelText", statusText: "statusText", progressPercentage: "progressPercentage" }, ngImport: i0, template: "<div class=\"progress-container\">\n <div class=\"progress-text\">\n <div class=\"text-left\">\n {{ labelText }}\n </div>\n <div class=\"text-right\">\n {{ statusText }}\n </div>\n </div>\n <div class=\"bar-bg\">\n <div\n class=\"bar\"\n role=\"progressbar\"\n [style.width.%]=\"progressPercentage\"\n [attr.aria-valuenow]=\"progressPercentage\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n</div>\n", styles: [".progress-container{min-width:50rem;width:100%;display:flex;flex-direction:column}.progress-container .progress-text{color:#000;display:flex;flex-direction:row;font-size:1.4rem}.progress-container .text-left{flex-grow:1}.progress-container .bar-bg{height:.6rem;overflow:hidden;border-top-right-radius:.6rem;border-bottom-right-radius:.6rem;background-color:#e5e7eb}.progress-container .bar{height:.6rem;overflow:hidden;background-color:#1d4ed8}\n"] }); }
8437
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: ProgressBarComponent, selector: "impdc-progress-bar", inputs: { labelText: "labelText", statusText: "statusText", barColor: "barColor", darkText: "darkText", progressPercentage: "progressPercentage" }, ngImport: i0, template: "<div class=\"progress-container\">\n <div class=\"progress-text\" [ngClass]=\"textClass\">\n <div class=\"text-left\">\n {{ labelText }}\n </div>\n <div class=\"text-right\">\n {{ statusText }}\n </div>\n </div>\n <div class=\"bar-bg\">\n <div\n [ngStyle]=\"{ 'background-color': barColor }\"\n class=\"bar\"\n role=\"progressbar\"\n [style.width.%]=\"progressPercentage\"\n [attr.aria-valuenow]=\"progressPercentage\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n</div>\n", styles: [".progress-container{width:100%;display:flex;flex-direction:column}.progress-container .progress-text{color:#000;display:flex;flex-direction:row;font-size:1.4rem;padding:0 .2rem .5rem}.progress-container .dark-progress-text{color:var(--impartner-hex-gray-900)}.progress-container .light-progress-text{color:var(--impartner-hex-gray-600)}.progress-container .text-left{flex-grow:1}.progress-container .bar-bg{height:1rem;overflow:hidden;border-bottom-right-radius:.6rem;background-color:#e5e7eb;border-radius:6rem}.progress-container .bar{height:1rem;overflow:hidden;background-color:#1d4ed8;border-radius:6rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
8276
8438
  }
8277
8439
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ProgressBarComponent, decorators: [{
8278
8440
  type: Component,
8279
- args: [{ selector: 'impdc-progress-bar', template: "<div class=\"progress-container\">\n <div class=\"progress-text\">\n <div class=\"text-left\">\n {{ labelText }}\n </div>\n <div class=\"text-right\">\n {{ statusText }}\n </div>\n </div>\n <div class=\"bar-bg\">\n <div\n class=\"bar\"\n role=\"progressbar\"\n [style.width.%]=\"progressPercentage\"\n [attr.aria-valuenow]=\"progressPercentage\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n</div>\n", styles: [".progress-container{min-width:50rem;width:100%;display:flex;flex-direction:column}.progress-container .progress-text{color:#000;display:flex;flex-direction:row;font-size:1.4rem}.progress-container .text-left{flex-grow:1}.progress-container .bar-bg{height:.6rem;overflow:hidden;border-top-right-radius:.6rem;border-bottom-right-radius:.6rem;background-color:#e5e7eb}.progress-container .bar{height:.6rem;overflow:hidden;background-color:#1d4ed8}\n"] }]
8441
+ args: [{ selector: 'impdc-progress-bar', template: "<div class=\"progress-container\">\n <div class=\"progress-text\" [ngClass]=\"textClass\">\n <div class=\"text-left\">\n {{ labelText }}\n </div>\n <div class=\"text-right\">\n {{ statusText }}\n </div>\n </div>\n <div class=\"bar-bg\">\n <div\n [ngStyle]=\"{ 'background-color': barColor }\"\n class=\"bar\"\n role=\"progressbar\"\n [style.width.%]=\"progressPercentage\"\n [attr.aria-valuenow]=\"progressPercentage\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n</div>\n", styles: [".progress-container{width:100%;display:flex;flex-direction:column}.progress-container .progress-text{color:#000;display:flex;flex-direction:row;font-size:1.4rem;padding:0 .2rem .5rem}.progress-container .dark-progress-text{color:var(--impartner-hex-gray-900)}.progress-container .light-progress-text{color:var(--impartner-hex-gray-600)}.progress-container .text-left{flex-grow:1}.progress-container .bar-bg{height:1rem;overflow:hidden;border-bottom-right-radius:.6rem;background-color:#e5e7eb;border-radius:6rem}.progress-container .bar{height:1rem;overflow:hidden;background-color:#1d4ed8;border-radius:6rem}\n"] }]
8280
8442
  }], ctorParameters: () => [], propDecorators: { labelText: [{
8281
8443
  type: Input
8282
8444
  }], statusText: [{
8283
8445
  type: Input
8446
+ }], barColor: [{
8447
+ type: Input
8448
+ }], darkText: [{
8449
+ type: Input
8284
8450
  }], progressPercentage: [{
8285
8451
  type: Input
8286
8452
  }] } });
@@ -8500,6 +8666,10 @@ class AlertComponent {
8500
8666
  * Removes the Alert icon provided by the theme or projected into the icon area using the `icon` directive.
8501
8667
  */
8502
8668
  this.hideIcon = false;
8669
+ /**
8670
+ * Removes the Alert border and background colors to only style icon and text according to theme.
8671
+ */
8672
+ this.borderless = false;
8503
8673
  /**
8504
8674
  * Allows the Alert to be dismissed.
8505
8675
  */
@@ -8521,7 +8691,8 @@ class AlertComponent {
8521
8691
  : '';
8522
8692
  const inlineClass = this.inline ? ' alert-inline' : '';
8523
8693
  const dismissibleClass = this.dismissible ? ' alert-dismissible' : '';
8524
- return themeClass + inlineClass + dismissibleClass;
8694
+ const borderless = this.borderless ? ' borderless' : '';
8695
+ return themeClass + inlineClass + dismissibleClass + borderless;
8525
8696
  }
8526
8697
  get themeIconName() {
8527
8698
  return this.theme === 'warning'
@@ -8542,11 +8713,11 @@ class AlertComponent {
8542
8713
  this.dismiss.emit();
8543
8714
  }
8544
8715
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8545
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div class=\"alert-content\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <ng-content></ng-content>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
8716
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", borderless: "borderless", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}.impdc.alert.borderless{border:none;background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
8546
8717
  }
8547
8718
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, decorators: [{
8548
8719
  type: Component,
8549
- args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div class=\"alert-content\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <ng-content></ng-content>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"] }]
8720
+ args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}.impdc.alert.borderless{border:none;background-color:transparent}\n"] }]
8550
8721
  }], propDecorators: { theme: [{
8551
8722
  type: Input
8552
8723
  }], show: [{
@@ -8559,6 +8730,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
8559
8730
  type: Input
8560
8731
  }], hideIcon: [{
8561
8732
  type: Input
8733
+ }], borderless: [{
8734
+ type: Input
8562
8735
  }], dismissible: [{
8563
8736
  type: Input
8564
8737
  }], dismiss: [{
@@ -8973,7 +9146,10 @@ class FileUploadModule {
8973
9146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8974
9147
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, declarations: [FileDropDirective,
8975
9148
  FileUploadComponent,
8976
- HumanReadableByteSizePipe], imports: [CommonModule, FormsModule, ButtonModule, IconModule], exports: [IconModule, FileDropDirective, FileUploadComponent] }); }
9149
+ HumanReadableByteSizePipe], imports: [CommonModule, FormsModule, ButtonModule, IconModule], exports: [IconModule,
9150
+ FileDropDirective,
9151
+ FileUploadComponent,
9152
+ HumanReadableByteSizePipe] }); }
8977
9153
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, imports: [CommonModule, FormsModule, ButtonModule, IconModule, IconModule] }); }
8978
9154
  }
8979
9155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, decorators: [{
@@ -8985,7 +9161,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
8985
9161
  FileUploadComponent,
8986
9162
  HumanReadableByteSizePipe
8987
9163
  ],
8988
- exports: [IconModule, FileDropDirective, FileUploadComponent]
9164
+ exports: [
9165
+ IconModule,
9166
+ FileDropDirective,
9167
+ FileUploadComponent,
9168
+ HumanReadableByteSizePipe
9169
+ ]
8989
9170
  }]
8990
9171
  }], ctorParameters: () => [] });
8991
9172
 
@@ -9300,7 +9481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
9300
9481
  }]
9301
9482
  }] } });
9302
9483
 
9303
- const DEFAULT_USE_MERIDIAN_LABEL = 'Use 24-hour format';
9484
+ const DEFAULT_USE_24HR_TIME_LABEL = 'Use 24-hour format';
9304
9485
  const DEFAULT_MIN_DATE = {
9305
9486
  year: 1900,
9306
9487
  month: 1,
@@ -9448,7 +9629,7 @@ class DatetimePickerComponent extends _DatetimePickerComponentBase {
9448
9629
  this.formGroup = inject(FormBuilder).group({
9449
9630
  date: new FormControl(null),
9450
9631
  time: new FormControl(null),
9451
- useMeridian: new FormControl(true, { nonNullable: true })
9632
+ use24hrTime: new FormControl(false, { nonNullable: true })
9452
9633
  });
9453
9634
  this.cvaOnChange = (_) => { };
9454
9635
  this.cvaOnTouched = () => { };
@@ -9458,7 +9639,7 @@ class DatetimePickerComponent extends _DatetimePickerComponentBase {
9458
9639
  /**
9459
9640
  * Label to be displayed with time controls to allow the user to input 24-hour or meridian-based (AM, PM) time.
9460
9641
  */
9461
- this.meridianToggleLabel = DEFAULT_USE_MERIDIAN_LABEL;
9642
+ this.meridianToggleLabel = DEFAULT_USE_24HR_TIME_LABEL;
9462
9643
  /**
9463
9644
  * Set whether to display controls for selecting a time value in addition to the date.
9464
9645
  */
@@ -9600,11 +9781,11 @@ class DatetimePickerComponent extends _DatetimePickerComponentBase {
9600
9781
  return this._focused;
9601
9782
  }
9602
9783
  /* Internals */
9603
- get useMeridian() {
9604
- return this.formGroup.getRawValue().useMeridian;
9784
+ get use24hrTime() {
9785
+ return this.formGroup.getRawValue().use24hrTime;
9605
9786
  }
9606
- get useMeridianLabelText() {
9607
- return this.meridianToggleLabel?.trim() || DEFAULT_USE_MERIDIAN_LABEL;
9787
+ get use24hrTimeLabelText() {
9788
+ return this.meridianToggleLabel?.trim() || DEFAULT_USE_24HR_TIME_LABEL;
9608
9789
  }
9609
9790
  handleFocusOut(evt) {
9610
9791
  if (!evt.relatedTarget ||
@@ -9651,7 +9832,7 @@ class DatetimePickerComponent extends _DatetimePickerComponentBase {
9651
9832
  provide: ImpdcFormFieldControl,
9652
9833
  useExisting: DatetimePickerComponent
9653
9834
  }
9654
- ], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: NgbDatepicker, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"useMeridianLabelText\"\n formControlName=\"useMeridian\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"useMeridian\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n", styles: [":host{display:block}ngb-datepicker{border:0}ngb-timepicker{font-size:var(--impd-font-size-sm)}::ng-deep .ngb-dp-header{display:none}::ng-deep .ngb-tp-spacer{width:var(--impd-size-4)}.impdc-datetime-picker--datepicker,.impdc-datetime-picker--timepicker{max-width:312px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgbDatepickerModule }, { kind: "component", type: i3.NgbDatepicker, selector: "ngb-datepicker", inputs: ["contentTemplate", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "maxDate", "minDate", "navigation", "outsideDays", "showWeekNumbers", "startDate", "weekdays"], outputs: ["navigate", "dateSelect"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: NgbTimepickerModule }, { kind: "component", type: i3.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "component", type: DatepickerTemplateHostComponent, selector: "impdc-datepicker-template-host" }, { kind: "ngmodule", type: ImpdcFormsModule }, { kind: "directive", type: RootFormGroupDirective, selector: "[formGroup]" }, { kind: "component", type: CheckboxComponent, selector: "impdc-checkbox", inputs: ["tabIndex", "id", "label", "description", "isSwitch", "switchIcons", "inline", "layout", "checked", "indeterminate", "disabled", "errorStateMatcher", "required"], outputs: ["change", "indeterminateChange"], exportAs: ["impdcCheckControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9835
+ ], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: NgbDatepicker, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"use24hrTimeLabelText\"\n formControlName=\"use24hrTime\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"!use24hrTime\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n", styles: [":host{display:block}ngb-datepicker{border:0}ngb-timepicker{font-size:var(--impd-font-size-sm)}::ng-deep .ngb-dp-header{display:none}::ng-deep .ngb-tp-spacer{width:var(--impd-size-4)}.impdc-datetime-picker--datepicker,.impdc-datetime-picker--timepicker{max-width:312px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgbDatepickerModule }, { kind: "component", type: i3.NgbDatepicker, selector: "ngb-datepicker", inputs: ["contentTemplate", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "maxDate", "minDate", "navigation", "outsideDays", "showWeekNumbers", "startDate", "weekdays"], outputs: ["navigate", "dateSelect"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: NgbTimepickerModule }, { kind: "component", type: i3.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "component", type: DatepickerTemplateHostComponent, selector: "impdc-datepicker-template-host" }, { kind: "ngmodule", type: ImpdcFormsModule }, { kind: "directive", type: RootFormGroupDirective, selector: "[formGroup]" }, { kind: "component", type: CheckboxComponent, selector: "impdc-checkbox", inputs: ["tabIndex", "id", "label", "description", "isSwitch", "switchIcons", "inline", "layout", "checked", "indeterminate", "disabled", "errorStateMatcher", "required"], outputs: ["change", "indeterminateChange"], exportAs: ["impdcCheckControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9655
9836
  }
9656
9837
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerComponent, decorators: [{
9657
9838
  type: Component,
@@ -9681,7 +9862,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
9681
9862
  provide: ImpdcFormFieldControl,
9682
9863
  useExisting: DatetimePickerComponent
9683
9864
  }
9684
- ], template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"useMeridianLabelText\"\n formControlName=\"useMeridian\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"useMeridian\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n", styles: [":host{display:block}ngb-datepicker{border:0}ngb-timepicker{font-size:var(--impd-font-size-sm)}::ng-deep .ngb-dp-header{display:none}::ng-deep .ngb-tp-spacer{width:var(--impd-size-4)}.impdc-datetime-picker--datepicker,.impdc-datetime-picker--timepicker{max-width:312px}\n"] }]
9865
+ ], template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"use24hrTimeLabelText\"\n formControlName=\"use24hrTime\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"!use24hrTime\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n", styles: [":host{display:block}ngb-datepicker{border:0}ngb-timepicker{font-size:var(--impd-font-size-sm)}::ng-deep .ngb-dp-header{display:none}::ng-deep .ngb-tp-spacer{width:var(--impd-size-4)}.impdc-datetime-picker--datepicker,.impdc-datetime-picker--timepicker{max-width:312px}\n"] }]
9685
9866
  }], ctorParameters: () => [{ type: ErrorStateMatcher }, { type: undefined, decorators: [{
9686
9867
  type: Optional
9687
9868
  }, {