@design.estate/dees-catalog 3.62.0 → 3.64.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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.62.0',
6
+ version: '3.64.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -56,7 +56,22 @@ export declare class DeesTable<T> extends DeesElement {
56
56
  accessor filterText: string;
57
57
  accessor columnFilters: Record<string, string>;
58
58
  accessor showColumnFilters: boolean;
59
- accessor stickyHeader: boolean;
59
+ /**
60
+ * When true, the table renders a leftmost checkbox column for click-driven
61
+ * (de)selection. Row selection by mouse (plain/shift/ctrl click) is always
62
+ * available regardless of this flag.
63
+ */
64
+ accessor showSelectionCheckbox: boolean;
65
+ /**
66
+ * When set, the table renders inside a fixed-height scroll container
67
+ * (`max-height: var(--table-max-height, 360px)`) and the header sticks
68
+ * within that box via plain CSS sticky.
69
+ *
70
+ * When unset (the default), the table flows naturally and a JS-managed
71
+ * floating header keeps the column headers visible while the table is
72
+ * scrolled past in any ancestor scroll container (page or otherwise).
73
+ */
74
+ accessor fixedHeight: boolean;
60
75
  accessor searchMode: 'table' | 'data' | 'server';
61
76
  private __searchTextSub?;
62
77
  private __searchModeSub?;
@@ -64,9 +79,65 @@ export declare class DeesTable<T> extends DeesElement {
64
79
  accessor selectedIds: Set<string>;
65
80
  private _rowIdMap;
66
81
  private _rowIdCounter;
82
+ /**
83
+ * Anchor row id for shift+click range selection. Set whenever the user
84
+ * makes a non-range click (plain or cmd/ctrl) so the next shift+click
85
+ * can compute a contiguous range from this anchor.
86
+ */
87
+ private __selectionAnchorId?;
67
88
  constructor();
89
+ /**
90
+ * Ctrl/Cmd+C copies the currently selected rows as a JSON array. Falls
91
+ * back to copying the focused-row (`selectedDataRow`) if no multi
92
+ * selection exists. No-op if a focused input/textarea would normally
93
+ * receive the copy.
94
+ */
95
+ private __handleHostKeydown;
96
+ /**
97
+ * Copies the current selection as a JSON array. If `fallbackRow` is given
98
+ * and there is no multi-selection, that row is copied instead. Used both
99
+ * by the Ctrl/Cmd+C handler and by the default context-menu action.
100
+ */
101
+ copySelectionAsJson(fallbackRow?: T): void;
102
+ private __writeRowsAsJson;
68
103
  static styles: import("@design.estate/dees-element").CSSResult[];
69
104
  render(): TemplateResult;
105
+ /**
106
+ * Renders the header rows. Used twice per render: once inside the real
107
+ * `<thead>` and once inside the floating-header clone, so sort indicators
108
+ * and filter inputs stay in sync automatically.
109
+ */
110
+ private renderHeaderRows;
111
+ private __floatingResizeObserver?;
112
+ private __floatingScrollHandler?;
113
+ private __floatingActive;
114
+ private __scrollAncestors;
115
+ private get __floatingHeaderEl();
116
+ private get __realTableEl();
117
+ private get __floatingTableEl();
118
+ /**
119
+ * Walks up the DOM (and through shadow roots) collecting every ancestor
120
+ * element whose computed `overflow-y` makes it a scroll container, plus
121
+ * `window` at the end. We listen for scroll on all of them so the floating
122
+ * header reacts whether the user scrolls the page or any nested container.
123
+ */
124
+ private __collectScrollAncestors;
125
+ /**
126
+ * Returns the "stick line" — the y-coordinate (in viewport space) at which
127
+ * the floating header should appear. Defaults to 0 (page top), but if the
128
+ * table is inside a scroll container we use that container's content-box
129
+ * top so the header sits inside the container's border/padding instead of
130
+ * floating over it.
131
+ */
132
+ private __getStickContext;
133
+ private setupFloatingHeader;
134
+ private teardownFloatingHeader;
135
+ /**
136
+ * Single function that drives both activation and geometry of the floating
137
+ * header. Called on scroll, resize, table-resize, and after each render.
138
+ */
139
+ private __syncFloatingHeader;
140
+ disconnectedCallback(): Promise<void>;
70
141
  firstUpdated(): Promise<void>;
71
142
  updated(changedProperties: Map<string | number | symbol, unknown>): Promise<void>;
72
143
  private __debounceTimer?;
@@ -137,6 +208,17 @@ export declare class DeesTable<T> extends DeesElement {
137
208
  private getRowId;
138
209
  private isRowSelected;
139
210
  private toggleRowSelected;
211
+ /**
212
+ * Handles row clicks with file-manager style selection semantics:
213
+ * - plain click: select only this row, set anchor
214
+ * - cmd/ctrl+click: toggle this row in/out, set anchor
215
+ * - shift+click: select the contiguous range from the anchor to this row
216
+ *
217
+ * Multi-row click selection is always available (`selectionMode === 'none'`
218
+ * and `'multi'` both behave this way) so consumers can always copy a set
219
+ * of rows. Only `selectionMode === 'single'` restricts to one row.
220
+ */
221
+ private handleRowClick;
140
222
  private setRowSelected;
141
223
  private areAllVisibleSelected;
142
224
  private isVisibleSelectionIndeterminate;