@eagami/ui 5.71.2 → 5.72.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.
@@ -15067,6 +15067,8 @@ var MenuComponent = class MenuComponent {
15067
15067
  triggerEl = signal(void 0, ...ngDevMode ? [{ debugName: "triggerEl" }] : /* istanbul ignore next */ []);
15068
15068
  asContextMenu = signal(false, ...ngDevMode ? [{ debugName: "asContextMenu" }] : /* istanbul ignore next */ []);
15069
15069
  anchorPoint = signal(null, ...ngDevMode ? [{ debugName: "anchorPoint" }] : /* istanbul ignore next */ []);
15070
+ openedWith = signal(void 0, ...ngDevMode ? [{ debugName: "openedWith" }] : /* istanbul ignore next */ []);
15071
+ triggerData = this.openedWith.asReadonly();
15070
15072
  activeItemId = signal(null, ...ngDevMode ? [{ debugName: "activeItemId" }] : /* istanbul ignore next */ []);
15071
15073
  constructor() {
15072
15074
  effect(() => {
@@ -15093,12 +15095,14 @@ var MenuComponent = class MenuComponent {
15093
15095
  if (this.disabled()) return;
15094
15096
  this.asContextMenu.set(false);
15095
15097
  this.anchorPoint.set(null);
15098
+ this.openedWith.set(void 0);
15096
15099
  this.show(triggerEl);
15097
15100
  }
15098
- openAsContextMenu(anchorEl, point = null) {
15101
+ openAsContextMenu(anchorEl, point = null, data = void 0) {
15099
15102
  if (this.disabled()) return;
15100
15103
  this.asContextMenu.set(true);
15101
15104
  this.anchorPoint.set(point);
15105
+ this.openedWith.set(data);
15102
15106
  this.show(anchorEl);
15103
15107
  }
15104
15108
  show(triggerEl) {
@@ -15393,6 +15397,95 @@ function fromKeyboard(event) {
15393
15397
  if (typeof PointerEvent !== "undefined" && event instanceof PointerEvent) return event.pointerType === "";
15394
15398
  return event.button === 0 && event.buttons === 0;
15395
15399
  }
15400
+ const LONG_PRESS_TOLERANCE_PX = 10;
15401
+ function watchLongPress(element, onLongPress) {
15402
+ let pointerId = null;
15403
+ let start = null;
15404
+ let startTarget = null;
15405
+ let timer = null;
15406
+ let claimed = false;
15407
+ const stopTimer = () => {
15408
+ if (timer !== null) {
15409
+ clearTimeout(timer);
15410
+ timer = null;
15411
+ }
15412
+ };
15413
+ const endPress = () => {
15414
+ stopTimer();
15415
+ pointerId = null;
15416
+ start = null;
15417
+ startTarget = null;
15418
+ };
15419
+ const swallowClick = (event) => {
15420
+ event.preventDefault();
15421
+ event.stopPropagation();
15422
+ disarmClick();
15423
+ };
15424
+ const disarmClick = () => {
15425
+ window.removeEventListener("click", swallowClick, true);
15426
+ window.removeEventListener("pointerdown", disarmClick, true);
15427
+ window.removeEventListener("keydown", disarmClick, true);
15428
+ };
15429
+ const armClick = () => {
15430
+ disarmClick();
15431
+ window.addEventListener("click", swallowClick, true);
15432
+ window.addEventListener("pointerdown", disarmClick, true);
15433
+ window.addEventListener("keydown", disarmClick, true);
15434
+ };
15435
+ const onPointerDown = (event) => {
15436
+ if (event.pointerType !== "touch" || !event.isPrimary) return;
15437
+ endPress();
15438
+ claimed = false;
15439
+ pointerId = event.pointerId;
15440
+ start = {
15441
+ x: event.clientX,
15442
+ y: event.clientY
15443
+ };
15444
+ startTarget = event.target;
15445
+ timer = setTimeout(() => {
15446
+ timer = null;
15447
+ if (start && onLongPress(start, startTarget)) {
15448
+ claimed = true;
15449
+ armClick();
15450
+ window.getSelection()?.removeAllRanges();
15451
+ }
15452
+ }, 500);
15453
+ };
15454
+ const onPointerMove = (event) => {
15455
+ if (event.pointerId !== pointerId || !start) return;
15456
+ if (Math.hypot(event.clientX - start.x, event.clientY - start.y) > LONG_PRESS_TOLERANCE_PX) stopTimer();
15457
+ };
15458
+ const onPointerEnd = (event) => {
15459
+ if (event.pointerId === pointerId) endPress();
15460
+ };
15461
+ const onContextMenu = (event) => {
15462
+ if (pointerId === null || !(event.target instanceof Node)) return;
15463
+ if (!element.contains(event.target)) return;
15464
+ if (claimed) {
15465
+ event.preventDefault();
15466
+ event.stopImmediatePropagation();
15467
+ } else stopTimer();
15468
+ };
15469
+ const onSelectStart = (event) => {
15470
+ if (claimed && pointerId !== null) event.preventDefault();
15471
+ };
15472
+ element.addEventListener("pointerdown", onPointerDown);
15473
+ element.addEventListener("pointermove", onPointerMove);
15474
+ element.addEventListener("pointerup", onPointerEnd);
15475
+ element.addEventListener("pointercancel", onPointerEnd);
15476
+ element.addEventListener("selectstart", onSelectStart);
15477
+ window.addEventListener("contextmenu", onContextMenu, true);
15478
+ return () => {
15479
+ endPress();
15480
+ disarmClick();
15481
+ element.removeEventListener("pointerdown", onPointerDown);
15482
+ element.removeEventListener("pointermove", onPointerMove);
15483
+ element.removeEventListener("pointerup", onPointerEnd);
15484
+ element.removeEventListener("pointercancel", onPointerEnd);
15485
+ element.removeEventListener("selectstart", onSelectStart);
15486
+ window.removeEventListener("contextmenu", onContextMenu, true);
15487
+ };
15488
+ }
15396
15489
  var ContextMenuTriggerDirective = class ContextMenuTriggerDirective {
15397
15490
  el = inject(ElementRef);
15398
15491
  target = input(void 0, {
@@ -15400,6 +15493,16 @@ var ContextMenuTriggerDirective = class ContextMenuTriggerDirective {
15400
15493
  alias: "eaContextMenuTrigger"
15401
15494
  });
15402
15495
  contextMenuPosition = input("pointer", ...ngDevMode ? [{ debugName: "contextMenuPosition" }] : /* istanbul ignore next */ []);
15496
+ contextMenuData = input(void 0, ...ngDevMode ? [{ debugName: "contextMenuData" }] : /* istanbul ignore next */ []);
15497
+ constructor() {
15498
+ if (typeof window === "undefined") return;
15499
+ const host = this.el.nativeElement;
15500
+ inject(DestroyRef).onDestroy(watchLongPress(host, (point) => this.open(point)));
15501
+ effect(() => {
15502
+ if (this.target()) host.style.setProperty("-webkit-touch-callout", "none");
15503
+ else host.style.removeProperty("-webkit-touch-callout");
15504
+ });
15505
+ }
15403
15506
  onContextMenu(event) {
15404
15507
  this.request(event);
15405
15508
  }
@@ -15407,14 +15510,22 @@ var ContextMenuTriggerDirective = class ContextMenuTriggerDirective {
15407
15510
  if (isContextMenuShortcut(event)) this.request(event);
15408
15511
  }
15409
15512
  request(event) {
15410
- const target = this.target();
15411
- if (!target || event.defaultPrevented) return;
15412
- if (target instanceof MenuComponent && target.disabled()) return;
15513
+ if (event.defaultPrevented || !this.canOpen()) return;
15413
15514
  event.preventDefault();
15515
+ this.open(contextMenuPoint(event, this.el.nativeElement));
15516
+ }
15517
+ canOpen() {
15518
+ const target = this.target();
15519
+ return !!target && !(target instanceof MenuComponent && target.disabled());
15520
+ }
15521
+ open(point) {
15522
+ const target = this.target();
15523
+ if (!target || !this.canOpen()) return false;
15414
15524
  const host = this.el.nativeElement;
15415
- const point = this.contextMenuPosition() === "pointer" ? contextMenuPoint(event, host) : null;
15416
- if (target instanceof MenuComponent) target.openAsContextMenu(host, point);
15417
- else target.requestOpen(point);
15525
+ const at = this.contextMenuPosition() === "pointer" ? point : null;
15526
+ if (target instanceof MenuComponent) target.openAsContextMenu(host, at, this.contextMenuData());
15527
+ else target.requestOpen(at);
15528
+ return true;
15418
15529
  }
15419
15530
  static ɵfac = i0.ɵɵngDeclareFactory({
15420
15531
  minVersion: "12.0.0",
@@ -15444,6 +15555,13 @@ var ContextMenuTriggerDirective = class ContextMenuTriggerDirective {
15444
15555
  isSignal: true,
15445
15556
  isRequired: false,
15446
15557
  transformFunction: null
15558
+ },
15559
+ contextMenuData: {
15560
+ classPropertyName: "contextMenuData",
15561
+ publicName: "contextMenuData",
15562
+ isSignal: true,
15563
+ isRequired: false,
15564
+ transformFunction: null
15447
15565
  }
15448
15566
  },
15449
15567
  host: { listeners: {
@@ -15468,6 +15586,7 @@ i0.ɵɵngDeclareClassMetadata({
15468
15586
  }
15469
15587
  }]
15470
15588
  }],
15589
+ ctorParameters: () => [],
15471
15590
  propDecorators: {
15472
15591
  target: [{
15473
15592
  type: i0.Input,
@@ -15484,6 +15603,14 @@ i0.ɵɵngDeclareClassMetadata({
15484
15603
  alias: "contextMenuPosition",
15485
15604
  required: false
15486
15605
  }]
15606
+ }],
15607
+ contextMenuData: [{
15608
+ type: i0.Input,
15609
+ args: [{
15610
+ isSignal: true,
15611
+ alias: "contextMenuData",
15612
+ required: false
15613
+ }]
15487
15614
  }]
15488
15615
  }
15489
15616
  });
@@ -15753,6 +15880,7 @@ function isModifiedClick(event) {
15753
15880
  var DataTableComponent = class DataTableComponent {
15754
15881
  i18n = inject(EagamiI18nService);
15755
15882
  host = inject(ElementRef);
15883
+ rowEls = viewChildren("rowEl", ...ngDevMode ? [{ debugName: "rowEls" }] : /* istanbul ignore next */ []);
15756
15884
  activeCell = signal({
15757
15885
  row: 0,
15758
15886
  col: 0
@@ -15818,6 +15946,7 @@ var DataTableComponent = class DataTableComponent {
15818
15946
  col: nextCol
15819
15947
  });
15820
15948
  });
15949
+ if (typeof window !== "undefined") inject(DestroyRef).onDestroy(watchLongPress(this.host.nativeElement, (point, target) => this.onRowLongPress(point, target)));
15821
15950
  }
15822
15951
  sortedData = computed(() => {
15823
15952
  const items = this.data();
@@ -15899,6 +16028,24 @@ var DataTableComponent = class DataTableComponent {
15899
16028
  });
15900
16029
  if (event instanceof KeyboardEvent && !event.defaultPrevented) this.keyboardRequestPending = true;
15901
16030
  }
16031
+ onRowLongPress(point, target) {
16032
+ if (!(target instanceof Node)) return false;
16033
+ const index = this.rowEls().findIndex((ref) => ref.nativeElement.contains(target));
16034
+ const row = this.sortedData()[index];
16035
+ if (index < 0 || row === void 0) return false;
16036
+ const event = new MouseEvent("contextmenu", {
16037
+ cancelable: true,
16038
+ clientX: point.x,
16039
+ clientY: point.y
16040
+ });
16041
+ this.rowContextMenu.emit({
16042
+ row,
16043
+ rowElement: this.rowEls()[index].nativeElement,
16044
+ point,
16045
+ event
16046
+ });
16047
+ return event.defaultPrevented;
16048
+ }
15902
16049
  clearKeyboardRequest() {
15903
16050
  this.keyboardRequestPending = false;
15904
16051
  }
@@ -16134,6 +16281,12 @@ var DataTableComponent = class DataTableComponent {
16134
16281
  descendants: true,
16135
16282
  isSignal: true
16136
16283
  }],
16284
+ viewQueries: [{
16285
+ propertyName: "rowEls",
16286
+ predicate: ["rowEl"],
16287
+ descendants: true,
16288
+ isSignal: true
16289
+ }],
16137
16290
  ngImport: i0,
16138
16291
  template: "<ng-template\n #cellContent\n let-row\n let-col=\"col\">\n @if (col.cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"col.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, value: getCellValue(row, col.key) }\" />\n } @else if (col.format) {\n {{ col.format(getCellValue(row, col.key)) }}\n } @else {\n {{ getCellValue(row, col.key) }}\n }\n</ng-template>\n\n<div\n class=\"ea-data-table\"\n [ngClass]=\"hostClasses()\">\n <div class=\"ea-data-table__scroll\">\n <table\n class=\"ea-data-table__table\"\n [attr.role]=\"navigable() ? 'grid' : null\"\n [attr.aria-label]=\"caption() ? null : (ariaLabel() ?? null)\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n (keydown)=\"onGridKeydown($event)\"\n (keyup)=\"clearKeyboardRequest()\"\n (pointerdown)=\"clearKeyboardRequest()\">\n @if (caption(); as captionText) {\n <caption class=\"ea-data-table__caption\">\n {{ captionText }}\n </caption>\n }\n <thead class=\"ea-data-table__head\">\n <tr\n class=\"ea-data-table__row ea-data-table__row--header\"\n [attr.role]=\"navigable() ? 'row' : null\">\n @for (col of columns(); track col.key; let colIndex = $index) {\n <th\n scope=\"col\"\n class=\"ea-data-table__cell ea-data-table__cell--header\"\n [attr.role]=\"navigable() ? 'columnheader' : null\"\n [attr.data-ea-cell]=\"navigable() ? '0-' + colIndex : null\"\n [class.ea-data-table__cell--sortable]=\"col.sortable\"\n [class.ea-data-table__cell--sorted]=\"\n sort().column === col.key && sort().direction\n \"\n [class.ea-data-table__cell--align-center]=\"col.align === 'center'\"\n [class.ea-data-table__cell--align-right]=\"col.align === 'right'\"\n [style.width]=\"col.width ?? null\"\n [attr.aria-sort]=\"\n sort().column === col.key && sort().direction === 'asc'\n ? 'ascending'\n : sort().column === col.key && sort().direction === 'desc'\n ? 'descending'\n : col.sortable\n ? 'none'\n : null\n \"\n (keydown.enter)=\"onHeaderKeydown($event, col)\"\n (keydown.space)=\"onHeaderKeydown($event, col)\"\n (focus)=\"onCellFocus(0, colIndex)\"\n [attr.tabindex]=\"headerTabindex(colIndex)\">\n @if (col.sortable) {\n <button\n type=\"button\"\n class=\"ea-data-table__sort-button\"\n [attr.tabindex]=\"navigable() ? -1 : null\"\n (click)=\"onHeaderClick(col)\"\n (focus)=\"onCellFocus(0, colIndex)\">\n @if (col.headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"col.headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col }\" />\n } @else {\n <span class=\"ea-data-table__header-text\">{{ col.label }}</span>\n }\n <span class=\"ea-data-table__sort-icon\">\n @if (sort().column === col.key && sort().direction === 'asc') {\n <ea-icon-arrow-up />\n } @else if (\n sort().column === col.key && sort().direction === 'desc'\n ) {\n <ea-icon-arrow-down />\n } @else {\n <ea-icon-chevrons-up-down />\n }\n </span>\n </button>\n } @else if (col.headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"col.headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col }\" />\n } @else {\n <span class=\"ea-data-table__header-text\">{{ col.label }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n @if (sizingRows().length) {\n <tbody\n class=\"ea-data-table__sizing\"\n aria-hidden=\"true\">\n @for (row of sizingRows(); track $index) {\n <tr class=\"ea-data-table__row ea-data-table__row--sizing\">\n @for (col of columns(); track col.key) {\n <td\n class=\"ea-data-table__cell ea-data-table__cell--sizing\"\n [style.width]=\"col.width ?? null\">\n <div class=\"ea-data-table__sizing-content\">\n <ng-container\n [ngTemplateOutlet]=\"cellContent\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col }\" />\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n }\n <tbody class=\"ea-data-table__body\">\n @if (loading()) {\n @for (index of placeholderRows(); track index) {\n <tr\n class=\"ea-data-table__row ea-data-table__row--placeholder\"\n aria-hidden=\"true\"\n [attr.role]=\"navigable() ? 'row' : null\">\n @for (col of columns(); track col.key) {\n <td\n class=\"ea-data-table__cell\"\n [class.ea-data-table__cell--align-center]=\"col.align === 'center'\"\n [class.ea-data-table__cell--align-right]=\"col.align === 'right'\"\n [style.width]=\"col.width ?? null\"\n [attr.role]=\"navigable() ? 'gridcell' : null\">\n @if (col.placeholderTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"col.placeholderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col, index }\" />\n } @else {\n <span class=\"ea-data-table__placeholder\">\n <ea-skeleton height=\"1em\" />\n </span>\n }\n </td>\n }\n </tr>\n }\n } @else if (sortedData().length === 0) {\n <tr\n class=\"ea-data-table__row ea-data-table__row--empty\"\n [attr.role]=\"navigable() ? 'row' : null\">\n <td\n class=\"ea-data-table__cell ea-data-table__cell--empty\"\n [attr.role]=\"navigable() ? 'gridcell' : null\"\n [attr.colspan]=\"columns().length\">\n <div role=\"status\">\n @if (noDataTemplate()) {\n <ng-container [ngTemplateOutlet]=\"noDataTemplate()!\" />\n } @else {\n {{ resolvedNoDataText() }}\n }\n </div>\n </td>\n </tr>\n } @else {\n @for (\n row of sortedData();\n track trackByFn($index, row);\n let rowIndex = $index\n ) {\n <tr\n #rowEl\n class=\"ea-data-table__row\"\n [class.ea-data-table__row--inert]=\"isInert(row)\"\n [attr.role]=\"navigable() ? 'row' : null\"\n [attr.tabindex]=\"rowTabindex(row)\"\n (click)=\"onRowActivate(row, $event)\"\n (keydown.enter)=\"onRowActivate(row, $event)\"\n (keydown.space)=\"onRowActivate(row, $event)\"\n (keydown)=\"onRowContextMenu(row, rowEl, $event)\"\n (contextmenu)=\"onRowContextMenu(row, rowEl, $event)\">\n @for (col of columns(); track col.key; let colIndex = $index) {\n <td\n class=\"ea-data-table__cell\"\n [class.ea-data-table__cell--align-center]=\"col.align === 'center'\"\n [class.ea-data-table__cell--align-right]=\"col.align === 'right'\"\n [style.width]=\"col.width ?? null\"\n [attr.role]=\"navigable() ? 'gridcell' : null\"\n [attr.data-ea-cell]=\"navigable() ? rowIndex + 1 + '-' + colIndex : null\"\n [attr.tabindex]=\"bodyCellTabindex(rowIndex + 1, colIndex)\"\n (focus)=\"onCellFocus(rowIndex + 1, colIndex)\">\n @if (rowHref()?.(row); as url) {\n <a\n class=\"ea-data-table__row-link\"\n [href]=\"url\"\n tabindex=\"-1\"\n [attr.aria-hidden]=\"colIndex > 0 ? true : null\">\n <ng-container\n [ngTemplateOutlet]=\"cellContent\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col }\" />\n </a>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"cellContent\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col }\" />\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <ng-content select=\"ea-paginator\" />\n</div>\n",
16139
16292
  styles: [".ea-data-table{--ea-data-table-font-size: var(--font-size-md);overflow:hidden;width:100%;border:var(--border-width-thin) solid var(--color-border-subtle);border-radius:var(--radius-lg);background-color:var(--ea-data-table-background-color, var(--color-bg-base))}.ea-data-table__scroll{overflow-x:auto}.ea-data-table--2xs{--ea-data-table-font-size: var(--font-size-2xs)}.ea-data-table--xs{--ea-data-table-font-size: var(--font-size-xs)}.ea-data-table--sm{--ea-data-table-font-size: var(--font-size-sm)}.ea-data-table--md{--ea-data-table-font-size: var(--font-size-md)}.ea-data-table--lg{--ea-data-table-font-size: var(--font-size-lg)}.ea-data-table--xl{--ea-data-table-font-size: var(--font-size-xl)}.ea-data-table__table{width:100%;border-spacing:0;border-collapse:collapse;font-family:var(--font-family-sans);font-size:var(--ea-data-table-font-size);color:var(--ea-data-table-color, var(--color-text-primary));table-layout:auto}.ea-data-table__caption{padding:calc(var(--ea-data-table-font-size) * .5) calc(var(--ea-data-table-font-size) * .75);text-align:start;font-weight:var(--font-weight-medium);color:var(--color-text-secondary);caption-side:top}.ea-data-table__head{background-color:var(--ea-data-table-header-background-color, var(--color-bg-stripe))}.ea-data-table__cell--header{position:relative;font-weight:var(--font-weight-medium);font-size:var(--ea-data-table-header-font-size, calc(var(--ea-data-table-font-size) * .75));line-height:var(--text-label-sm-lh);letter-spacing:var(--letter-spacing-wide);text-transform:var(--ea-data-table-header-text-transform, uppercase);text-align:start;white-space:nowrap;color:var(--ea-data-table-header-color, var(--color-text-secondary));border-bottom:var(--border-width-thin) solid var(--color-border-subtle);-webkit-user-select:none;user-select:none}.ea-data-table__cell--sortable{cursor:pointer;transition:var(--transition-colors)}.ea-data-table__cell--sortable:hover{color:var(--ea-data-table-header-hover-color, var(--color-text-primary));background-color:var(--ea-data-table-header-hover-background-color, var(--color-state-hover))}.ea-data-table__cell--sorted{color:var(--ea-data-table-header-sorted-color, var(--color-brand-text))}.ea-data-table__sort-button{display:inline-flex;align-items:center;width:100%;padding:0;margin:0;font:inherit;text-transform:inherit;letter-spacing:inherit;border:none;background:none;color:inherit;cursor:pointer}.ea-data-table__sort-button:focus-visible{outline:none;outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:2px}@media(forced-colors:active){.ea-data-table__sort-button:focus-visible{outline:2px solid Highlight;outline-offset:2px}}.ea-data-table__cell--align-center .ea-data-table__sort-button{justify-content:center}.ea-data-table__cell--align-right .ea-data-table__sort-button{justify-content:flex-end}.ea-data-table__header-text{display:inline;vertical-align:middle}.ea-data-table__sort-icon{display:inline-flex;vertical-align:middle;width:1em;height:1em;margin-inline-start:calc(var(--ea-data-table-font-size) * .25);opacity:.5;transition:var(--transition-opacity)}.ea-data-table__cell--sortable:hover .ea-data-table__sort-icon,.ea-data-table__cell--sorted .ea-data-table__sort-icon{opacity:1}.ea-data-table__row{border-bottom:var(--border-width-thin) solid var(--ea-data-table-row-border-color, var(--color-border-subtle));transition:var(--transition-colors)}.ea-data-table__row:last-child{border-bottom-width:0}.ea-data-table__cell{text-align:start;vertical-align:middle}.ea-data-table__cell--align-center{text-align:center}.ea-data-table__cell--align-right{text-align:end}.ea-data-table__cell--empty{text-align:center;color:var(--color-text-tertiary);font-style:italic}.ea-data-table--compact .ea-data-table__cell{padding:calc(var(--ea-data-table-font-size) * .375) calc(var(--ea-data-table-font-size) * .75)}.ea-data-table--comfortable .ea-data-table__cell{padding:calc(var(--ea-data-table-font-size) * .625) var(--ea-data-table-font-size)}.ea-data-table--spacious .ea-data-table__cell{padding:var(--ea-data-table-font-size) calc(var(--ea-data-table-font-size) * 1.5)}.ea-data-table__sizing .ea-data-table__row{border-bottom:none}.ea-data-table__sizing .ea-data-table__cell{padding-top:0;padding-bottom:0}.ea-data-table__sizing-content{overflow:hidden;visibility:hidden;height:0}.ea-data-table--sticky .ea-data-table__sizing{display:none}.ea-data-table--sticky{max-height:inherit;height:inherit}.ea-data-table--fixed .ea-data-table__table{table-layout:fixed}.ea-data-table--sticky .ea-data-table__scroll{max-height:inherit;height:inherit}.ea-data-table--sticky .ea-data-table__table{display:flex;flex-direction:column;min-width:calc(var(--ea-data-table-font-size) * 32);max-height:inherit;height:inherit}.ea-data-table--sticky .ea-data-table__head{display:block;flex-shrink:0}.ea-data-table--sticky .ea-data-table__head .ea-data-table__row--header{display:table;width:100%;table-layout:fixed}.ea-data-table--sticky .ea-data-table__body{display:block;overflow-y:auto;flex:1 1 auto;min-height:0}.ea-data-table--sticky .ea-data-table__body .ea-data-table__row{display:table;width:100%;table-layout:fixed}.ea-data-table--striped .ea-data-table__body .ea-data-table__row:nth-child(2n){background-color:var(--ea-data-table-row-stripe-background-color, var(--color-bg-stripe-subtle))}.ea-data-table--hoverable .ea-data-table__body .ea-data-table__row:not(.ea-data-table__row--empty):not(.ea-data-table__row--inert):not(.ea-data-table__row--placeholder):hover{background-color:var(--ea-data-table-row-hover-background-color, var(--color-state-hover))}@media(forced-colors:active){.ea-data-table--hoverable .ea-data-table__body .ea-data-table__row:not(.ea-data-table__row--empty):not(.ea-data-table__row--inert):not(.ea-data-table__row--placeholder):hover{background-color:Highlight;color:HighlightText}.ea-data-table--hoverable .ea-data-table__body .ea-data-table__row:not(.ea-data-table__row--empty):not(.ea-data-table__row--inert):not(.ea-data-table__row--placeholder):hover .ea-data-table__cell--sorted{color:HighlightText}}.ea-data-table--clickable .ea-data-table__body .ea-data-table__row:not(.ea-data-table__row--empty):not(.ea-data-table__row--inert):not(.ea-data-table__row--placeholder){cursor:var(--ea-data-table-row-cursor, pointer)}.ea-data-table--linked .ea-data-table__cell{position:relative}.ea-data-table__row-link{text-decoration:none;color:inherit}.ea-data-table__row-link:hover{color:inherit}.ea-data-table__row-link:after{position:absolute;inset:0;content:\"\"}.ea-data-table__placeholder{display:inline-block;vertical-align:middle;width:100%}.ea-data-table--nowrap .ea-data-table__cell{white-space:nowrap}.ea-data-table--bordered .ea-data-table__cell{border-inline-end:var(--border-width-thin) solid var(--color-border-subtle)}.ea-data-table--bordered .ea-data-table__cell:last-child{border-inline-end:none}.ea-data-table--navigable .ea-data-table__cell:focus-visible{outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:calc(-2 * var(--border-width-medium))}@media(forced-colors:active){.ea-data-table--navigable .ea-data-table__cell:focus-visible{outline-color:Highlight}}.ea-data-table--navigable .ea-data-table__cell:focus-visible{box-shadow:none}.ea-data-table__body .ea-data-table__row:focus-visible{outline:var(--border-width-medium) solid var(--color-border-focus);outline-offset:calc(-2 * var(--border-width-medium))}@media(forced-colors:active){.ea-data-table__body .ea-data-table__row:focus-visible{outline-color:Highlight}}\n"],
@@ -16210,6 +16363,10 @@ i0.ɵɵngDeclareClassMetadata({
16210
16363
  }],
16211
16364
  ctorParameters: () => [],
16212
16365
  propDecorators: {
16366
+ rowEls: [{
16367
+ type: i0.ViewChildren,
16368
+ args: ["rowEl", { isSignal: true }]
16369
+ }],
16213
16370
  columns: [{
16214
16371
  type: i0.Input,
16215
16372
  args: [{