@ixfx/components 0.8.6 → 0.8.8

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 (76) hide show
  1. package/bundle/index.d.ts +570 -389
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +1033 -200
  4. package/bundle/index.js.map +1 -1
  5. package/dist/crumbs.d.ts +1 -1
  6. package/dist/crumbs.js +2 -2
  7. package/dist/{data-grid-D-z7bx5-.d.ts → data-grid-BKa9i86q.d.ts} +15 -2
  8. package/dist/data-grid-BKa9i86q.d.ts.map +1 -0
  9. package/dist/data-grid.d.ts +3 -2
  10. package/dist/data-grid.js +95 -5
  11. package/dist/data-grid.js.map +1 -1
  12. package/dist/{detail-list-_ZJHYEBr.d.ts → detail-list-CHTomlbR.d.ts} +22 -5
  13. package/dist/detail-list-CHTomlbR.d.ts.map +1 -0
  14. package/dist/detail-list.d.ts +4 -3
  15. package/dist/detail-list.js +103 -3
  16. package/dist/detail-list.js.map +1 -1
  17. package/dist/{grid-list-j5C7qtlG.js → grid-list-C8oMxLl-.js} +77 -164
  18. package/dist/grid-list-C8oMxLl-.js.map +1 -0
  19. package/dist/{grid-list-x550wJ0X.d.ts → grid-list-CsZcXxMC.d.ts} +259 -109
  20. package/dist/grid-list-CsZcXxMC.d.ts.map +1 -0
  21. package/dist/grid-list.d.ts +3 -2
  22. package/dist/grid-list.js +1 -1
  23. package/dist/incr-search.d.ts +1 -1
  24. package/dist/{index-h6gxtfHH.d.ts → index-Dgrx-DIA.d.ts} +2 -2
  25. package/dist/{index-h6gxtfHH.d.ts.map → index-Dgrx-DIA.d.ts.map} +1 -1
  26. package/dist/index.d.ts +190 -252
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +8 -7
  29. package/dist/index.js.map +1 -1
  30. package/dist/{interaction-B9AAlsFO.js → interaction-BskmlA9t.js} +1 -1
  31. package/dist/list-drag-types-kpaXz2pZ.d.ts +42 -0
  32. package/dist/list-drag-types-kpaXz2pZ.d.ts.map +1 -0
  33. package/dist/{list-item-animation-DuiwgN3l.js → list-item-animation-BUoEKi5s.js} +29 -10
  34. package/dist/list-item-animation-BUoEKi5s.js.map +1 -0
  35. package/dist/list-native-drag-controller-DrY3qeJM.js +555 -0
  36. package/dist/list-native-drag-controller-DrY3qeJM.js.map +1 -0
  37. package/dist/{menu-HMoxCPY2.js → menu-CMXhIaNZ.js} +3 -3
  38. package/dist/{menu-HMoxCPY2.js.map → menu-CMXhIaNZ.js.map} +1 -1
  39. package/dist/{menu-item-BQDYxk5A.js → menu-item-BYGQzyCe.js} +2 -2
  40. package/dist/{menu-item-BQDYxk5A.js.map → menu-item-BYGQzyCe.js.map} +1 -1
  41. package/dist/menu.js +2 -2
  42. package/dist/miller.d.ts +2 -2
  43. package/dist/miller.js +1 -1
  44. package/dist/narrowed-text.js +1 -1
  45. package/dist/select-horiz.js +1 -1
  46. package/dist/{tree-DTQon838.js → tree-DSMn566I.js} +90 -27
  47. package/dist/tree-DSMn566I.js.map +1 -0
  48. package/dist/{tree-component-F6qZ0Gdv.d.ts → tree-component-nPP5Y-WS.d.ts} +12 -2
  49. package/dist/tree-component-nPP5Y-WS.d.ts.map +1 -0
  50. package/dist/tree.d.ts +3 -2
  51. package/dist/tree.d.ts.map +1 -1
  52. package/dist/tree.js +1 -1
  53. package/dist/{vertical-list-CFuFDygi.d.ts → vertical-list-A6oWfivZ.d.ts} +21 -4
  54. package/dist/vertical-list-A6oWfivZ.d.ts.map +1 -0
  55. package/dist/vertical-list.d.ts +3 -2
  56. package/dist/vertical-list.js +103 -3
  57. package/dist/vertical-list.js.map +1 -1
  58. package/docs-user/README.md +1 -0
  59. package/docs-user/data-grid.md +30 -0
  60. package/docs-user/data-table.md +104 -0
  61. package/docs-user/detail-list.md +29 -0
  62. package/docs-user/grid-list.md +34 -4
  63. package/docs-user/index.json +7 -2
  64. package/docs-user/llms.txt +1 -0
  65. package/docs-user/tree.md +5 -4
  66. package/docs-user/vertical-list.md +30 -1
  67. package/llms.txt +1 -0
  68. package/package.json +1 -1
  69. package/dist/data-grid-D-z7bx5-.d.ts.map +0 -1
  70. package/dist/detail-list-_ZJHYEBr.d.ts.map +0 -1
  71. package/dist/grid-list-j5C7qtlG.js.map +0 -1
  72. package/dist/grid-list-x550wJ0X.d.ts.map +0 -1
  73. package/dist/list-item-animation-DuiwgN3l.js.map +0 -1
  74. package/dist/tree-DTQon838.js.map +0 -1
  75. package/dist/tree-component-F6qZ0Gdv.d.ts.map +0 -1
  76. package/dist/vertical-list-CFuFDygi.d.ts.map +0 -1
package/dist/crumbs.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Bc23SI94.js";
2
- import { a as TreeComponent, c as TreeExpandEvent, g as TreeDataModel, h as TreeTickleEvent, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeSelectEvent, u as TreeItemClickEvent } from "./tree-component-F6qZ0Gdv.js";
2
+ import { _ as TreeTickleEvent, a as TreeComponent, c as TreeExpandEvent, h as TreeSelectEvent, n as TreeActivateEvent, o as TreeComponentEventMap, u as TreeItemClickEvent, v as TreeDataModel } from "./tree-component-nPP5Y-WS.js";
3
3
  import "./menu-item-CZi9vy5O.js";
4
4
  import "./narrowed-text.js";
5
5
  import { LitElement, PropertyValues } from "lit";
package/dist/crumbs.js CHANGED
@@ -2,8 +2,8 @@ import { t as TickledController } from "./tickled-controller-Dh1Uh_vG.js";
2
2
  import { n as tickledStyles, t as tickledItemStyles } from "./tickled-styles-BrAHEj1q.js";
3
3
  import { t as themeFallbacks } from "./fallbacks-BcKGq-2F.js";
4
4
  import { n as safeCustomElement, t as __decorate } from "./decorate-VRK8rslU.js";
5
- import "./interaction-B9AAlsFO.js";
6
- import "./menu-item-BQDYxk5A.js";
5
+ import "./interaction-BskmlA9t.js";
6
+ import "./menu-item-BYGQzyCe.js";
7
7
  import { t as collectDataResult } from "./data-provider-35TyWclX.js";
8
8
  import { t as scrollFadeStyles } from "./scroll-fade-CAs1EabA.js";
9
9
  import "./narrowed-text.js";
@@ -1,4 +1,5 @@
1
- import { S as ListSearchController } from "./index-h6gxtfHH.js";
1
+ import { i as ListDragPreviewRenderer, s as ListNativeDragStartEvent } from "./list-drag-types-kpaXz2pZ.js";
2
+ import { S as ListSearchController } from "./index-Dgrx-DIA.js";
2
3
  import "./index-9AhaHIT2.js";
3
4
  import { LitElement } from "lit";
4
5
  import { CommandId, CommandRegistry } from "@clinth/ui-commands";
@@ -110,6 +111,7 @@ interface DataGridElementEventMap {
110
111
  'datagrid-cell-click': DataGridCellClickEvent;
111
112
  'datagrid-cell-edit': DataGridCellEditEvent;
112
113
  'datagrid-group-change': DataGridGroupChangeEvent;
114
+ 'list-native-drag-start': ListNativeDragStartEvent<unknown>;
113
115
  }
114
116
  declare class DataGridElement extends LitElement {
115
117
  #private;
@@ -151,6 +153,17 @@ declare class DataGridElement extends LitElement {
151
153
  * disabled. See `docs/infra-incremental.md`.
152
154
  */
153
155
  searchModes: string | undefined;
156
+ /**
157
+ * Enable native browser drag-and-drop for selectable rows. When true,
158
+ * selectable rows become draggable and the grid emits
159
+ * `list-native-drag-start` when a drag begins.
160
+ */
161
+ itemsDraggable: boolean;
162
+ /**
163
+ * Custom drag preview renderer (synchronous). Defaults to the shared
164
+ * built-in HTML+canvas preview.
165
+ */
166
+ dragPreviewRenderer: ListDragPreviewRenderer<unknown> | undefined;
154
167
  private _columnFormatters;
155
168
  private _selectedKeys;
156
169
  private _scrollTop;
@@ -269,4 +282,4 @@ interface DataGridElement {
269
282
  }
270
283
  //#endregion
271
284
  export { DataGridSortDetail as _, DataGridColumnReorderDetail as a, DataGridColumnResizeEvent as c, DataGridElement as d, DataGridElementEventMap as f, DataGridSelectEvent as g, DataGridSelectDetail as h, DataGridCellEditEvent as i, DataGridColumnVisibilityDetail as l, DataGridGroupChangeEvent as m, DataGridCellClickEvent as n, DataGridColumnReorderEvent as o, DataGridGroupChangeDetail as p, DataGridCellEditDetail as r, DataGridColumnResizeDetail as s, DataGridCellClickDetail as t, DataGridColumnVisibilityEvent as u, DataGridSortEvent as v };
272
- //# sourceMappingURL=data-grid-D-z7bx5-.d.ts.map
285
+ //# sourceMappingURL=data-grid-BKa9i86q.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-grid-BKa9i86q.d.ts","names":[],"sources":["../src/data-grid/types.ts","../src/data-grid/data-grid.ts"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- import { _ as DataGridSortDetail, a as DataGridColumnReorderDetail, c as DataGridColumnResizeEvent, d as DataGridElement, f as DataGridElementEventMap, g as DataGridSelectEvent, h as DataGridSelectDetail, i as DataGridCellEditEvent, l as DataGridColumnVisibilityDetail, m as DataGridGroupChangeEvent, n as DataGridCellClickEvent, o as DataGridColumnReorderEvent, p as DataGridGroupChangeDetail, r as DataGridCellEditDetail, s as DataGridColumnResizeDetail, t as DataGridCellClickDetail, u as DataGridColumnVisibilityEvent, v as DataGridSortEvent } from "./data-grid-D-z7bx5-.js";
2
- export { DataGridCellClickDetail, DataGridCellClickEvent, DataGridCellEditDetail, DataGridCellEditEvent, DataGridColumnReorderDetail, DataGridColumnReorderEvent, DataGridColumnResizeDetail, DataGridColumnResizeEvent, DataGridColumnVisibilityDetail, DataGridColumnVisibilityEvent, DataGridElement, DataGridElementEventMap, DataGridGroupChangeDetail, DataGridGroupChangeEvent, DataGridSelectDetail, DataGridSelectEvent, DataGridSortDetail, DataGridSortEvent };
1
+ import { a as ListDragSource, i as ListDragPreviewRenderer, n as ListDragPreview, o as ListNativeDragStartDetail, r as ListDragPreviewContext, s as ListNativeDragStartEvent, t as ListDragEntry } from "./list-drag-types-kpaXz2pZ.js";
2
+ import { _ as DataGridSortDetail, a as DataGridColumnReorderDetail, c as DataGridColumnResizeEvent, d as DataGridElement, f as DataGridElementEventMap, g as DataGridSelectEvent, h as DataGridSelectDetail, i as DataGridCellEditEvent, l as DataGridColumnVisibilityDetail, m as DataGridGroupChangeEvent, n as DataGridCellClickEvent, o as DataGridColumnReorderEvent, p as DataGridGroupChangeDetail, r as DataGridCellEditDetail, s as DataGridColumnResizeDetail, t as DataGridCellClickDetail, u as DataGridColumnVisibilityEvent, v as DataGridSortEvent } from "./data-grid-BKa9i86q.js";
3
+ export { DataGridCellClickDetail, DataGridCellClickEvent, DataGridCellEditDetail, DataGridCellEditEvent, DataGridColumnReorderDetail, DataGridColumnReorderEvent, DataGridColumnResizeDetail, DataGridColumnResizeEvent, DataGridColumnVisibilityDetail, DataGridColumnVisibilityEvent, DataGridElement, DataGridElementEventMap, DataGridGroupChangeDetail, DataGridGroupChangeEvent, DataGridSelectDetail, DataGridSelectEvent, DataGridSortDetail, DataGridSortEvent, type ListDragEntry, type ListDragPreview, type ListDragPreviewContext, type ListDragPreviewRenderer, type ListDragSource, type ListNativeDragStartDetail, type ListNativeDragStartEvent };
package/dist/data-grid.js CHANGED
@@ -4,10 +4,11 @@ import { t as themeFallbacks } from "./fallbacks-BcKGq-2F.js";
4
4
  import { n as safeCustomElement, t as __decorate } from "./decorate-VRK8rslU.js";
5
5
  import { i as ListSearchController, n as listSearchStyles, o as registerListSearchCommands, r as LIST_SEARCH_MODES } from "./incr-search-C05WjbZh.js";
6
6
  import { t as handleStyles } from "./handle-BPOxBOKf.js";
7
- import { i as listItemFadeKeyframes } from "./list-item-animation-DuiwgN3l.js";
8
- import "./interaction-B9AAlsFO.js";
7
+ import { t as ListNativeDragController } from "./list-native-drag-controller-DrY3qeJM.js";
8
+ import { i as listItemFadeKeyframes } from "./list-item-animation-BUoEKi5s.js";
9
+ import "./interaction-BskmlA9t.js";
9
10
  import { t as createDragGhost } from "./drag-ghost-DtSDvjri.js";
10
- import "./menu-HMoxCPY2.js";
11
+ import "./menu-CMXhIaNZ.js";
11
12
  import { LitElement, css, html, nothing } from "lit";
12
13
  import { property, query, state } from "lit/decorators.js";
13
14
  import { createCommandRegistry } from "@clinth/ui-commands";
@@ -29,6 +30,7 @@ let DataGridElement = class DataGridElement extends LitElement {
29
30
  this.allowGrouping = false;
30
31
  this.crossGroupSelection = false;
31
32
  this.columnMenu = `auto`;
33
+ this.itemsDraggable = false;
32
34
  this._columnFormatters = /* @__PURE__ */ new Map();
33
35
  this._selectedKeys = /* @__PURE__ */ new Set();
34
36
  this._scrollTop = 0;
@@ -46,7 +48,45 @@ let DataGridElement = class DataGridElement extends LitElement {
46
48
  id: k,
47
49
  enabled: true
48
50
  })),
49
- onStateChange: () => this.requestUpdate()
51
+ onStateChange: () => this.requestUpdate(),
52
+ hoverDisabled: () => this.#nativeDrag.isDragging
53
+ });
54
+ this.#nativeDragging = false;
55
+ this.#postDragSuppressTimer = 0;
56
+ this.#nativeDrag = new ListNativeDragController(this, {
57
+ source: `data-grid`,
58
+ isEnabled: () => this.itemsDraggable && this.selectionMode !== `none` && this._flat.some((f) => f.type === `row`),
59
+ resolveEventToKey: (target) => {
60
+ if (!(target instanceof Element)) return void 0;
61
+ if (target.closest?.(`.header-cell`)) return void 0;
62
+ return (target.closest?.(`.row`))?.dataset.key;
63
+ },
64
+ prepareSelection: (originKey) => this.#prepareNativeDrag(originKey),
65
+ getMetrics: () => ({ rowHeight: this.rowHeight }),
66
+ getRenderer: () => this.dragPreviewRenderer,
67
+ dispatch: (detail) => this.dispatchEvent(new CustomEvent(`list-native-drag-start`, {
68
+ detail,
69
+ bubbles: true,
70
+ composed: true,
71
+ cancelable: true
72
+ })),
73
+ onActiveChange: (active, originKey) => {
74
+ this.#nativeDragging = active;
75
+ this.#dragOriginKey = active ? originKey : void 0;
76
+ this.toggleAttribute(`data-native-dragging`, active);
77
+ if (active) {
78
+ const count = this._selectedKeys.size;
79
+ this.setAttribute(`aria-label`, count <= 1 ? `Dragging 1 item` : `Dragging ${count} items`);
80
+ } else this.removeAttribute(`aria-label`);
81
+ this.requestUpdate();
82
+ },
83
+ onEnd: () => {
84
+ this.#nativeDragging = false;
85
+ this.#dragOriginKey = void 0;
86
+ this.toggleAttribute(`data-native-dragging`, false);
87
+ this.removeAttribute(`aria-label`);
88
+ this.#startPostDragSuppressTimer();
89
+ }
50
90
  });
51
91
  this._sortedRows = [];
52
92
  this._flat = [];
@@ -318,6 +358,7 @@ let DataGridElement = class DataGridElement extends LitElement {
318
358
  .row.item.tickled { background: var(--item-bg-tickled); border: var(--item-border-tickled); color: var(--item-text-tickled); }
319
359
  .row.item.selected { background: var(--item-bg-selected); border: var(--item-border-selected); color: var(--item-text-selected); }
320
360
  .row.item.selected.tickled { background: var(--item-bg-selected-tickled); }
361
+ .row.item.dragging-origin { opacity: 0.6; }
321
362
 
322
363
  /* Insertion / removal animation. Only while [reflowing] — the ~0.3s after
323
364
  the row set changes — do rows slide (their top transitions) to make or
@@ -363,6 +404,43 @@ let DataGridElement = class DataGridElement extends LitElement {
363
404
  `
364
405
  ];
365
406
  }
407
+ #nativeDragging;
408
+ #dragOriginKey;
409
+ #postDragSuppressTimer;
410
+ #nativeDrag;
411
+ #prepareNativeDrag(originKey) {
412
+ const rows = this._flat.filter((f) => f.type === `row`);
413
+ if (!rows.some((f) => f.key === originKey)) return void 0;
414
+ if (!this._selectedKeys.has(originKey)) this._replaceSelection(originKey);
415
+ const selected = [];
416
+ let displayIndex = 0;
417
+ for (const entry of rows) {
418
+ if (!this._selectedKeys.has(entry.key)) {
419
+ displayIndex++;
420
+ continue;
421
+ }
422
+ const rowEl = this.renderRoot.querySelector(`.row[data-key="${CSS.escape(entry.key)}"]`) ?? void 0;
423
+ selected.push({
424
+ key: entry.key,
425
+ index: displayIndex,
426
+ item: entry.row,
427
+ ...rowEl ? { element: rowEl } : {}
428
+ });
429
+ displayIndex++;
430
+ }
431
+ const origin = selected.find((entry) => entry.key === originKey);
432
+ if (!origin) return void 0;
433
+ return {
434
+ origin,
435
+ selected
436
+ };
437
+ }
438
+ #startPostDragSuppressTimer() {
439
+ if (this.#postDragSuppressTimer) clearTimeout(this.#postDragSuppressTimer);
440
+ this.#postDragSuppressTimer = window.setTimeout(() => {
441
+ this.#postDragSuppressTimer = 0;
442
+ }, 0);
443
+ }
366
444
  #searchRegistry;
367
445
  #unregisterSearchCommands;
368
446
  #searchKeyByRow;
@@ -439,6 +517,10 @@ let DataGridElement = class DataGridElement extends LitElement {
439
517
  clearTimeout(this.#rowReflowTimer);
440
518
  this.#rowReflowTimer = 0;
441
519
  }
520
+ if (this.#postDragSuppressTimer) {
521
+ clearTimeout(this.#postDragSuppressTimer);
522
+ this.#postDragSuppressTimer = 0;
523
+ }
442
524
  }
443
525
  /**
444
526
  * Dispatch a command to this grid — routes through the command registry so
@@ -621,6 +703,7 @@ let DataGridElement = class DataGridElement extends LitElement {
621
703
  }));
622
704
  }
623
705
  _onRowClick(rowKey, col, e) {
706
+ if (this.#nativeDrag.isDragging || this.#postDragSuppressTimer !== 0) return;
624
707
  if (col && col.selectable === false) return;
625
708
  if (this.selectionMode === `none` && this.interactionMode !== `checked` && this.interactionMode !== `sticky`) return;
626
709
  if (this.interactionMode === `manual`) return;
@@ -1280,8 +1363,9 @@ let DataGridElement = class DataGridElement extends LitElement {
1280
1363
  const selected = this._selectedKeys.has(rowKey);
1281
1364
  const tickled = this._tickled.isTickled(rowKey);
1282
1365
  return html`
1283
- <div class="row item ${selected ? `selected` : ``} ${tickled ? `tickled` : ``} ${this.#enteringRowKeys.has(rowKey) ? `entering` : ``}" style="top:${absIdx * rh}px; height:${rh}px"
1366
+ <div class="row item ${selected ? `selected` : ``} ${tickled ? `tickled` : ``} ${this.#enteringRowKeys.has(rowKey) ? `entering` : ``} ${this.#nativeDragging && rowKey === this.#dragOriginKey ? `dragging-origin` : ``}" style="top:${absIdx * rh}px; height:${rh}px"
1284
1367
  data-key=${rowKey}
1368
+ draggable=${this.#nativeDrag.draggableAttr}
1285
1369
  @click=${(e) => {
1286
1370
  this._onRowClick(rowKey, null, e);
1287
1371
  this.dispatchEvent(new CustomEvent(`datagrid-cell-click`, {
@@ -1464,6 +1548,12 @@ __decorate([property({
1464
1548
  attribute: `search-modes`,
1465
1549
  reflect: true
1466
1550
  })], DataGridElement.prototype, "searchModes", void 0);
1551
+ __decorate([property({
1552
+ type: Boolean,
1553
+ attribute: `items-draggable`,
1554
+ reflect: true
1555
+ })], DataGridElement.prototype, "itemsDraggable", void 0);
1556
+ __decorate([property({ attribute: false })], DataGridElement.prototype, "dragPreviewRenderer", void 0);
1467
1557
  __decorate([state()], DataGridElement.prototype, "_selectedKeys", void 0);
1468
1558
  __decorate([state()], DataGridElement.prototype, "_scrollTop", void 0);
1469
1559
  __decorate([state()], DataGridElement.prototype, "_scrollLeft", void 0);