@timlassiter11/yatl 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -358,6 +358,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
358
358
  import { repeat } from "lit/directives/repeat.js";
359
359
  import { styleMap } from "lit/directives/style-map.js";
360
360
  import "@lit-labs/virtualizer";
361
+ import { virtualizerRef } from "@lit-labs/virtualizer/virtualize.js";
361
362
 
362
363
  // src/table-controller/utils.ts
363
364
  function getCompareableValue(value) {
@@ -531,6 +532,7 @@ var YatlTableController = class extends TypedEventTarget {
531
532
  for (const column of columns) {
532
533
  this._columnDefinitionMap.set(column.field, column);
533
534
  }
535
+ this.createMetadata();
534
536
  this.requestUpdate("columns");
535
537
  }
536
538
  get displayColumns() {
@@ -1552,10 +1554,7 @@ var table_styles_default = css`
1552
1554
  );
1553
1555
 
1554
1556
  --table-header-text: var(--yatl-table-header-text, var(--yatl-text-1));
1555
- --table-header-bg: var(
1556
- --yatl-table-header-bg,
1557
- color-mix(in srgb, var(--yatl-color-mix) 4%, var(--table-bg))
1558
- );
1557
+ --table-header-bg: var(--yatl-table-header-bg, var(--yatl-surface-lowered));
1559
1558
  --table-header-hover-bg: var(
1560
1559
  --yatl-table-header-hover-bg,
1561
1560
  color-mix(in srgb, var(--yatl-color-mix) 4%, var(--table-header-bg))
@@ -1574,6 +1573,10 @@ var table_styles_default = css`
1574
1573
  --yatl-table-row-hover-bg,
1575
1574
  var(--table-header-bg)
1576
1575
  );
1576
+ --table-row-border-color: var(
1577
+ --yatl-table-row-border-color,
1578
+ var(--yatl-border-color-subtle)
1579
+ );
1577
1580
  --table-row-stripe-bg: var(
1578
1581
  --yatl-table-row-stripe-bg,
1579
1582
  color-mix(in srbg, var(--yatl-color-mix) 3%, var(--table-bg))
@@ -1619,7 +1622,8 @@ var table_styles_default = css`
1619
1622
  .row {
1620
1623
  position: relative;
1621
1624
  background-color: var(--table-row-bg);
1622
- border-bottom: 1px solid var(--table-border-color);
1625
+ /** Use box-shadow to mimic borders. It works better when virtualized */
1626
+ box-shadow: inset 0 -1px 0 0 var(--table-row-border-color);
1623
1627
  transition: background-color 50ms;
1624
1628
  }
1625
1629
 
@@ -1635,7 +1639,7 @@ var table_styles_default = css`
1635
1639
  }
1636
1640
 
1637
1641
  .row:last-child {
1638
- border-bottom: none;
1642
+ box-shadow: none;
1639
1643
  }
1640
1644
 
1641
1645
  .table:not(.resizing) .row {
@@ -1648,10 +1652,18 @@ var table_styles_default = css`
1648
1652
  padding: var(--table-cell-padding);
1649
1653
  }
1650
1654
 
1655
+ .cell.is-number {
1656
+ justify-content: flex-end;
1657
+ }
1658
+
1651
1659
  .table.resizing * {
1652
1660
  cursor: col-resize !important;
1653
1661
  }
1654
1662
 
1663
+ .header {
1664
+ background-color: var(--table-bg);
1665
+ }
1666
+
1655
1667
  .header .cell {
1656
1668
  padding: var(--table-header-padding);
1657
1669
  }
@@ -1681,7 +1693,7 @@ var table_styles_default = css`
1681
1693
  }
1682
1694
 
1683
1695
  @layer striped {
1684
- :host([striped]) .body .row:nth-child(even) {
1696
+ :host([striped]) .row-even {
1685
1697
  background-color: var(--table-row-stripe-bg);
1686
1698
  }
1687
1699
  }
@@ -1919,7 +1931,7 @@ var YatlTable = class extends LitElement {
1919
1931
  // #endregion
1920
1932
  // #region --- Properties ---
1921
1933
  this._controller = new YatlTableController(this);
1922
- this.striped = true;
1934
+ this.striped = false;
1923
1935
  this.sortable = true;
1924
1936
  this.resizable = true;
1925
1937
  this.enableVirtualScroll = false;
@@ -2083,6 +2095,11 @@ var YatlTable = class extends LitElement {
2083
2095
  this.toggleRowSelection(row, selected);
2084
2096
  };
2085
2097
  }
2098
+ get virtualizerRef() {
2099
+ if (this.virtualizer) {
2100
+ return this.virtualizer[virtualizerRef];
2101
+ }
2102
+ }
2086
2103
  get controller() {
2087
2104
  return this._controller;
2088
2105
  }
@@ -2470,6 +2487,23 @@ var YatlTable = class extends LitElement {
2470
2487
  updateRow(rowId, data) {
2471
2488
  return this.controller.updateRow(rowId, data);
2472
2489
  }
2490
+ /**
2491
+ * This will force the underlying virtual scroller
2492
+ * to re-calculate row sizes and positions and re-render.
2493
+ * This is specifically here to fix virtual scroll tables
2494
+ * that are affected by scale animations.
2495
+ * E.g. when put in a yatl-dialog.
2496
+ */
2497
+ reflowVirtualizer() {
2498
+ const virtualizerRef2 = this.virtualizerRef;
2499
+ if (virtualizerRef2) {
2500
+ virtualizerRef2._itemsChanged = true;
2501
+ virtualizerRef2._rangeChanged = true;
2502
+ virtualizerRef2._measureChildren();
2503
+ virtualizerRef2._itemsChanged = false;
2504
+ virtualizerRef2._rangeChanged = false;
2505
+ }
2506
+ }
2473
2507
  /**
2474
2508
  * Updates the data of a row at a specific original index.
2475
2509
  * @param index - The original index of the row to update.
@@ -2606,6 +2640,11 @@ var YatlTable = class extends LitElement {
2606
2640
  if (Array.isArray(userParts)) {
2607
2641
  userParts = userParts.join(" ");
2608
2642
  }
2643
+ const isNumber = typeof value === "bigint" || typeof value === "number";
2644
+ const classes = {
2645
+ cell: true,
2646
+ "is-number": isNumber
2647
+ };
2609
2648
  if (typeof column.valueFormatter === "function") {
2610
2649
  value = column.valueFormatter(value, row);
2611
2650
  }
@@ -2614,7 +2653,7 @@ var YatlTable = class extends LitElement {
2614
2653
  role="cell"
2615
2654
  part="cell body-cell cell-${column.field} ${userParts}"
2616
2655
  data-field=${column.field}
2617
- class="cell"
2656
+ class=${classMap(classes)}
2618
2657
  title=${ifDefined(value ? String(value) : void 0)}
2619
2658
  @click=${(event) => this.handleCellClick(event, row, column.field)}
2620
2659
  >
@@ -2660,7 +2699,12 @@ var YatlTable = class extends LitElement {
2660
2699
  if (Array.isArray(userParts)) {
2661
2700
  userParts = userParts.join(" ");
2662
2701
  }
2663
- const classes = { row: true, selected };
2702
+ const classes = {
2703
+ row: true,
2704
+ selected,
2705
+ "row-even": renderIndex % 2 === 0,
2706
+ "row-odd": renderIndex % 2 !== 0
2707
+ };
2664
2708
  const rowIndex = renderIndex + 1;
2665
2709
  return html2`
2666
2710
  <div
@@ -2905,7 +2949,7 @@ __decorateClass([
2905
2949
  property({ type: Boolean, attribute: "enable-column-reorder" })
2906
2950
  ], YatlTable.prototype, "enableColumnReorder", 2);
2907
2951
  __decorateClass([
2908
- property({ type: Boolean })
2952
+ property({ type: Boolean, attribute: "enable-row-number-column" })
2909
2953
  ], YatlTable.prototype, "enableRowNumberColumn", 2);
2910
2954
  __decorateClass([
2911
2955
  property({ type: Boolean, attribute: "enable-footer" })