@timlassiter11/yatl 1.2.3 → 1.2.5

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() {
@@ -973,7 +975,7 @@ var YatlTableController = class extends TypedEventTarget {
973
975
  if (isDisplayColumn(column) && typeof column.valueFormatter === "function") {
974
976
  value = column.valueFormatter(value, row);
975
977
  }
976
- value = String(value).replace('"', '""');
978
+ value = String(value ?? "").replace('"', '""');
977
979
  list.push(`"${value}"`);
978
980
  }
979
981
  }
@@ -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))
@@ -1620,14 +1623,10 @@ var table_styles_default = css`
1620
1623
  position: relative;
1621
1624
  background-color: var(--table-row-bg);
1622
1625
  /** Use box-shadow to mimic borders. It works better when virtualized */
1623
- box-shadow: inset 0 -1px 0 0 var(--table-border-color);
1626
+ box-shadow: inset 0 -1px 0 0 var(--table-row-border-color);
1624
1627
  transition: background-color 50ms;
1625
1628
  }
1626
1629
 
1627
- .row-number-cell {
1628
- box-shadow: inset 0 -1px 0 0 var(--table-border-color);
1629
- }
1630
-
1631
1630
  .row.header-row {
1632
1631
  background-color: var(--table-header-bg);
1633
1632
  border-bottom: 1px solid var(--table-border-color);
@@ -1653,10 +1652,18 @@ var table_styles_default = css`
1653
1652
  padding: var(--table-cell-padding);
1654
1653
  }
1655
1654
 
1655
+ .cell.is-number {
1656
+ justify-content: flex-end;
1657
+ }
1658
+
1656
1659
  .table.resizing * {
1657
1660
  cursor: col-resize !important;
1658
1661
  }
1659
1662
 
1663
+ .header {
1664
+ background-color: var(--table-bg);
1665
+ }
1666
+
1660
1667
  .header .cell {
1661
1668
  padding: var(--table-header-padding);
1662
1669
  }
@@ -1924,7 +1931,7 @@ var YatlTable = class extends LitElement {
1924
1931
  // #endregion
1925
1932
  // #region --- Properties ---
1926
1933
  this._controller = new YatlTableController(this);
1927
- this.striped = true;
1934
+ this.striped = false;
1928
1935
  this.sortable = true;
1929
1936
  this.resizable = true;
1930
1937
  this.enableVirtualScroll = false;
@@ -2088,6 +2095,11 @@ var YatlTable = class extends LitElement {
2088
2095
  this.toggleRowSelection(row, selected);
2089
2096
  };
2090
2097
  }
2098
+ get virtualizerRef() {
2099
+ if (this.virtualizer) {
2100
+ return this.virtualizer[virtualizerRef];
2101
+ }
2102
+ }
2091
2103
  get controller() {
2092
2104
  return this._controller;
2093
2105
  }
@@ -2475,6 +2487,23 @@ var YatlTable = class extends LitElement {
2475
2487
  updateRow(rowId, data) {
2476
2488
  return this.controller.updateRow(rowId, data);
2477
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
+ }
2478
2507
  /**
2479
2508
  * Updates the data of a row at a specific original index.
2480
2509
  * @param index - The original index of the row to update.
@@ -2611,6 +2640,11 @@ var YatlTable = class extends LitElement {
2611
2640
  if (Array.isArray(userParts)) {
2612
2641
  userParts = userParts.join(" ");
2613
2642
  }
2643
+ const isNumber = typeof value === "bigint" || typeof value === "number";
2644
+ const classes = {
2645
+ cell: true,
2646
+ "is-number": isNumber
2647
+ };
2614
2648
  if (typeof column.valueFormatter === "function") {
2615
2649
  value = column.valueFormatter(value, row);
2616
2650
  }
@@ -2619,7 +2653,7 @@ var YatlTable = class extends LitElement {
2619
2653
  role="cell"
2620
2654
  part="cell body-cell cell-${column.field} ${userParts}"
2621
2655
  data-field=${column.field}
2622
- class="cell"
2656
+ class=${classMap(classes)}
2623
2657
  title=${ifDefined(value ? String(value) : void 0)}
2624
2658
  @click=${(event) => this.handleCellClick(event, row, column.field)}
2625
2659
  >