@toolbox-web/grid 0.4.1 → 0.4.2
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/README.md +10 -13
- package/all.js +1101 -1048
- package/all.js.map +1 -1
- package/index.js +245 -137
- package/index.js.map +1 -1
- package/lib/core/grid.d.ts +10 -0
- package/lib/core/grid.d.ts.map +1 -1
- package/lib/core/internal/config-manager.d.ts +1 -0
- package/lib/core/internal/config-manager.d.ts.map +1 -1
- package/lib/core/internal/keyboard.d.ts.map +1 -1
- package/lib/core/internal/utils.d.ts +1 -0
- package/lib/core/internal/utils.d.ts.map +1 -1
- package/lib/core/plugin/base-plugin.d.ts +57 -1
- package/lib/core/plugin/base-plugin.d.ts.map +1 -1
- package/lib/core/plugin/expander-column.d.ts +51 -0
- package/lib/core/plugin/expander-column.d.ts.map +1 -0
- package/lib/core/plugin/types.d.ts +117 -1
- package/lib/core/plugin/types.d.ts.map +1 -1
- package/lib/core/types.d.ts +4 -2
- package/lib/core/types.d.ts.map +1 -1
- package/lib/plugins/clipboard/ClipboardPlugin.d.ts +5 -4
- package/lib/plugins/clipboard/ClipboardPlugin.d.ts.map +1 -1
- package/lib/plugins/clipboard/index.d.ts +1 -1
- package/lib/plugins/clipboard/index.d.ts.map +1 -1
- package/lib/plugins/clipboard/index.js +282 -188
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/clipboard/types.d.ts +72 -2
- package/lib/plugins/clipboard/types.d.ts.map +1 -1
- package/lib/plugins/column-virtualization/ColumnVirtualizationPlugin.d.ts +0 -1
- package/lib/plugins/column-virtualization/ColumnVirtualizationPlugin.d.ts.map +1 -1
- package/lib/plugins/column-virtualization/index.js +102 -26
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/ContextMenuPlugin.d.ts +0 -1
- package/lib/plugins/context-menu/ContextMenuPlugin.d.ts.map +1 -1
- package/lib/plugins/context-menu/index.js +154 -78
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/editing/EditingPlugin.d.ts +1 -7
- package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
- package/lib/plugins/editing/index.js +200 -136
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/export/ExportPlugin.d.ts +0 -1
- package/lib/plugins/export/ExportPlugin.d.ts.map +1 -1
- package/lib/plugins/export/index.js +175 -99
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts +5 -2
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
- package/lib/plugins/filtering/index.js +129 -43
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts +1 -2
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts.map +1 -1
- package/lib/plugins/grouping-columns/grouping-columns.d.ts +1 -1
- package/lib/plugins/grouping-columns/grouping-columns.d.ts.map +1 -1
- package/lib/plugins/grouping-columns/index.js +144 -66
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts +14 -2
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts.map +1 -1
- package/lib/plugins/grouping-rows/index.js +230 -138
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/master-detail/MasterDetailPlugin.d.ts +13 -11
- package/lib/plugins/master-detail/MasterDetailPlugin.d.ts.map +1 -1
- package/lib/plugins/master-detail/index.js +265 -196
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/master-detail/types.d.ts +0 -10
- package/lib/plugins/master-detail/types.d.ts.map +1 -1
- package/lib/plugins/multi-sort/MultiSortPlugin.d.ts +1 -2
- package/lib/plugins/multi-sort/MultiSortPlugin.d.ts.map +1 -1
- package/lib/plugins/multi-sort/index.js +105 -31
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +0 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts.map +1 -1
- package/lib/plugins/pinned-columns/index.js +128 -52
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-rows/PinnedRowsPlugin.d.ts +1 -2
- package/lib/plugins/pinned-rows/PinnedRowsPlugin.d.ts.map +1 -1
- package/lib/plugins/pinned-rows/index.js +162 -88
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pivot/PivotPlugin.d.ts +26 -4
- package/lib/plugins/pivot/PivotPlugin.d.ts.map +1 -1
- package/lib/plugins/pivot/index.js +398 -310
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/pivot/pivot-rows.d.ts +2 -1
- package/lib/plugins/pivot/pivot-rows.d.ts.map +1 -1
- package/lib/plugins/reorder/ReorderPlugin.d.ts +13 -10
- package/lib/plugins/reorder/ReorderPlugin.d.ts.map +1 -1
- package/lib/plugins/reorder/index.js +288 -226
- package/lib/plugins/reorder/index.js.map +1 -1
- package/lib/plugins/selection/SelectionPlugin.d.ts +21 -3
- package/lib/plugins/selection/SelectionPlugin.d.ts.map +1 -1
- package/lib/plugins/selection/index.d.ts +2 -2
- package/lib/plugins/selection/index.d.ts.map +1 -1
- package/lib/plugins/selection/index.js +276 -145
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/selection/types.d.ts +24 -0
- package/lib/plugins/selection/types.d.ts.map +1 -1
- package/lib/plugins/server-side/ServerSidePlugin.d.ts +0 -1
- package/lib/plugins/server-side/ServerSidePlugin.d.ts.map +1 -1
- package/lib/plugins/server-side/index.js +83 -7
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/tree/TreePlugin.d.ts +5 -1
- package/lib/plugins/tree/TreePlugin.d.ts.map +1 -1
- package/lib/plugins/tree/index.js +197 -112
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/tree/types.d.ts +0 -10
- package/lib/plugins/tree/types.d.ts.map +1 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +0 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts.map +1 -1
- package/lib/plugins/undo-redo/index.js +93 -17
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/visibility/VisibilityPlugin.d.ts +7 -4
- package/lib/plugins/visibility/VisibilityPlugin.d.ts.map +1 -1
- package/lib/plugins/visibility/index.js +144 -65
- package/lib/plugins/visibility/index.js.map +1 -1
- package/package.json +1 -1
- package/umd/grid.all.umd.js +17 -19
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +7 -7
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/clipboard.umd.js +5 -7
- package/umd/plugins/clipboard.umd.js.map +1 -1
- package/umd/plugins/column-virtualization.umd.js +1 -1
- package/umd/plugins/column-virtualization.umd.js.map +1 -1
- package/umd/plugins/context-menu.umd.js +1 -1
- package/umd/plugins/context-menu.umd.js.map +1 -1
- package/umd/plugins/editing.umd.js +1 -1
- package/umd/plugins/editing.umd.js.map +1 -1
- package/umd/plugins/export.umd.js +1 -1
- package/umd/plugins/export.umd.js.map +1 -1
- package/umd/plugins/filtering.umd.js +1 -1
- package/umd/plugins/filtering.umd.js.map +1 -1
- package/umd/plugins/grouping-columns.umd.js +1 -1
- package/umd/plugins/grouping-columns.umd.js.map +1 -1
- package/umd/plugins/grouping-rows.umd.js +1 -1
- package/umd/plugins/grouping-rows.umd.js.map +1 -1
- package/umd/plugins/master-detail.umd.js +1 -1
- package/umd/plugins/master-detail.umd.js.map +1 -1
- package/umd/plugins/multi-sort.umd.js +1 -1
- package/umd/plugins/multi-sort.umd.js.map +1 -1
- package/umd/plugins/pinned-columns.umd.js +1 -1
- package/umd/plugins/pinned-columns.umd.js.map +1 -1
- package/umd/plugins/pinned-rows.umd.js +1 -1
- package/umd/plugins/pinned-rows.umd.js.map +1 -1
- package/umd/plugins/pivot.umd.js +1 -1
- package/umd/plugins/pivot.umd.js.map +1 -1
- package/umd/plugins/reorder.umd.js +1 -1
- package/umd/plugins/reorder.umd.js.map +1 -1
- package/umd/plugins/selection.umd.js +1 -1
- package/umd/plugins/selection.umd.js.map +1 -1
- package/umd/plugins/server-side.umd.js +1 -1
- package/umd/plugins/server-side.umd.js.map +1 -1
- package/umd/plugins/tree.umd.js +1 -1
- package/umd/plugins/tree.umd.js.map +1 -1
- package/umd/plugins/undo-redo.umd.js +1 -1
- package/umd/plugins/undo-redo.umd.js.map +1 -1
- package/umd/plugins/visibility.umd.js +1 -1
- package/umd/plugins/visibility.umd.js.map +1 -1
- package/lib/core/internal/editing.d.ts +0 -76
- package/lib/core/internal/editing.d.ts.map +0 -1
|
@@ -11,7 +11,7 @@ const g = {
|
|
|
11
11
|
/** Ask if a column can be moved. Context: ColumnConfig. Response: boolean | undefined */
|
|
12
12
|
CAN_MOVE_COLUMN: "canMoveColumn"
|
|
13
13
|
};
|
|
14
|
-
class
|
|
14
|
+
class m {
|
|
15
15
|
/**
|
|
16
16
|
* Plugin dependencies - declare other plugins this one requires.
|
|
17
17
|
*
|
|
@@ -28,8 +28,11 @@ class k {
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
static dependencies;
|
|
31
|
-
/**
|
|
32
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Plugin version - defaults to grid version for built-in plugins.
|
|
33
|
+
* Third-party plugins can override with their own semver.
|
|
34
|
+
*/
|
|
35
|
+
version = typeof __GRID_VERSION__ < "u" ? __GRID_VERSION__ : "dev";
|
|
33
36
|
/** CSS styles to inject into the grid's shadow DOM */
|
|
34
37
|
styles;
|
|
35
38
|
/** Custom cell renderers keyed by type name */
|
|
@@ -113,8 +116,16 @@ class k {
|
|
|
113
116
|
/**
|
|
114
117
|
* Emit a custom event from the grid.
|
|
115
118
|
*/
|
|
116
|
-
emit(t,
|
|
117
|
-
this.grid?.dispatchEvent?.(new CustomEvent(t, { detail:
|
|
119
|
+
emit(t, e) {
|
|
120
|
+
this.grid?.dispatchEvent?.(new CustomEvent(t, { detail: e, bubbles: !0 }));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Emit a cancelable custom event from the grid.
|
|
124
|
+
* @returns `true` if the event was cancelled (preventDefault called), `false` otherwise
|
|
125
|
+
*/
|
|
126
|
+
emitCancelable(t, e) {
|
|
127
|
+
const s = new CustomEvent(t, { detail: e, bubbles: !0, cancelable: !0 });
|
|
128
|
+
return this.grid?.dispatchEvent?.(s), s.defaultPrevented;
|
|
118
129
|
}
|
|
119
130
|
/**
|
|
120
131
|
* Request a re-render of the grid.
|
|
@@ -122,6 +133,14 @@ class k {
|
|
|
122
133
|
requestRender() {
|
|
123
134
|
this.grid?.requestRender?.();
|
|
124
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Request a re-render and restore focus styling afterward.
|
|
138
|
+
* Use this when a plugin action (like expand/collapse) triggers a render
|
|
139
|
+
* but needs to maintain keyboard navigation focus.
|
|
140
|
+
*/
|
|
141
|
+
requestRenderWithFocus() {
|
|
142
|
+
this.grid?.requestRenderWithFocus?.();
|
|
143
|
+
}
|
|
125
144
|
/**
|
|
126
145
|
* Request a lightweight style update without rebuilding DOM.
|
|
127
146
|
* Use this instead of requestRender() when only CSS classes need updating.
|
|
@@ -155,6 +174,19 @@ class k {
|
|
|
155
174
|
get visibleColumns() {
|
|
156
175
|
return this.grid?._visibleColumns ?? [];
|
|
157
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Get the grid as an HTMLElement for direct DOM operations.
|
|
179
|
+
* Use sparingly - prefer the typed GridElementRef API when possible.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```ts
|
|
183
|
+
* const width = this.gridElement.clientWidth;
|
|
184
|
+
* this.gridElement.classList.add('my-plugin-active');
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
get gridElement() {
|
|
188
|
+
return this.grid;
|
|
189
|
+
}
|
|
158
190
|
/**
|
|
159
191
|
* Get the shadow root of the grid.
|
|
160
192
|
*/
|
|
@@ -189,6 +221,51 @@ class k {
|
|
|
189
221
|
const t = this.grid?.gridConfig?.icons ?? {};
|
|
190
222
|
return { ...g, ...t };
|
|
191
223
|
}
|
|
224
|
+
// #region Animation Helpers
|
|
225
|
+
/**
|
|
226
|
+
* Check if animations are enabled at the grid level.
|
|
227
|
+
* Respects gridConfig.animation.mode and the CSS variable set by the grid.
|
|
228
|
+
*
|
|
229
|
+
* Plugins should use this to skip animations when:
|
|
230
|
+
* - Animation mode is 'off' or `false`
|
|
231
|
+
* - User prefers reduced motion and mode is 'reduced-motion' (default)
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```ts
|
|
235
|
+
* private get animationStyle(): 'slide' | 'fade' | false {
|
|
236
|
+
* if (!this.isAnimationEnabled) return false;
|
|
237
|
+
* return this.config.animation ?? 'slide';
|
|
238
|
+
* }
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
get isAnimationEnabled() {
|
|
242
|
+
const t = this.grid?.effectiveConfig?.animation?.mode ?? "reduced-motion";
|
|
243
|
+
if (t === !1 || t === "off") return !1;
|
|
244
|
+
if (t === !0 || t === "on") return !0;
|
|
245
|
+
const e = this.shadowRoot?.host;
|
|
246
|
+
return e ? getComputedStyle(e).getPropertyValue("--tbw-animation-enabled").trim() !== "0" : !0;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get the animation duration in milliseconds from CSS variable.
|
|
250
|
+
* Falls back to 200ms if not set.
|
|
251
|
+
*
|
|
252
|
+
* Plugins can use this for their animation timing to stay consistent
|
|
253
|
+
* with the grid-level animation.duration setting.
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* element.animate(keyframes, { duration: this.animationDuration });
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
get animationDuration() {
|
|
261
|
+
const t = this.shadowRoot?.host;
|
|
262
|
+
if (t) {
|
|
263
|
+
const e = getComputedStyle(t).getPropertyValue("--tbw-animation-duration").trim(), s = parseInt(e, 10);
|
|
264
|
+
if (!isNaN(s)) return s;
|
|
265
|
+
}
|
|
266
|
+
return 200;
|
|
267
|
+
}
|
|
268
|
+
// #endregion
|
|
192
269
|
/**
|
|
193
270
|
* Resolve an icon value to string or HTMLElement.
|
|
194
271
|
* Checks plugin config first, then grid-level icons, then defaults.
|
|
@@ -197,8 +274,8 @@ class k {
|
|
|
197
274
|
* @param pluginOverride - Optional plugin-level override
|
|
198
275
|
* @returns The resolved icon value
|
|
199
276
|
*/
|
|
200
|
-
resolveIcon(t,
|
|
201
|
-
return
|
|
277
|
+
resolveIcon(t, e) {
|
|
278
|
+
return e !== void 0 ? e : this.gridIcons[t];
|
|
202
279
|
}
|
|
203
280
|
/**
|
|
204
281
|
* Set an icon value on an element.
|
|
@@ -207,8 +284,8 @@ class k {
|
|
|
207
284
|
* @param element - The element to set the icon on
|
|
208
285
|
* @param icon - The icon value (string or HTMLElement)
|
|
209
286
|
*/
|
|
210
|
-
setIcon(t,
|
|
211
|
-
typeof
|
|
287
|
+
setIcon(t, e) {
|
|
288
|
+
typeof e == "string" ? t.innerHTML = e : e instanceof HTMLElement && (t.innerHTML = "", t.appendChild(e.cloneNode(!0)));
|
|
212
289
|
}
|
|
213
290
|
/**
|
|
214
291
|
* Log a warning message.
|
|
@@ -221,48 +298,47 @@ class k {
|
|
|
221
298
|
function p(n) {
|
|
222
299
|
return n.filter((t) => t.sticky === "left");
|
|
223
300
|
}
|
|
224
|
-
function
|
|
301
|
+
function k(n) {
|
|
225
302
|
return n.filter((t) => t.sticky === "right");
|
|
226
303
|
}
|
|
227
304
|
function a(n) {
|
|
228
305
|
return n.some((t) => t.sticky === "left" || t.sticky === "right");
|
|
229
306
|
}
|
|
230
|
-
function
|
|
231
|
-
const
|
|
232
|
-
if (!
|
|
233
|
-
const
|
|
234
|
-
if (!
|
|
307
|
+
function u(n, t) {
|
|
308
|
+
const e = n.shadowRoot;
|
|
309
|
+
if (!e) return;
|
|
310
|
+
const s = Array.from(e.querySelectorAll(".header-row .cell"));
|
|
311
|
+
if (!s.length) return;
|
|
235
312
|
const c = /* @__PURE__ */ new Map();
|
|
236
313
|
t.forEach((r, o) => {
|
|
237
314
|
r.field && c.set(r.field, o);
|
|
238
315
|
});
|
|
239
|
-
let
|
|
316
|
+
let f = 0;
|
|
240
317
|
for (const r of t)
|
|
241
318
|
if (r.sticky === "left") {
|
|
242
|
-
const o = c.get(r.field), i =
|
|
243
|
-
i && (i.classList.add("sticky-left"), i.style.position = "sticky", i.style.left =
|
|
244
|
-
l.classList.add("sticky-left"), l.style.position = "sticky", l.style.left =
|
|
245
|
-
}),
|
|
319
|
+
const o = c.get(r.field), i = s.find((l) => l.getAttribute("data-field") === r.field);
|
|
320
|
+
i && (i.classList.add("sticky-left"), i.style.position = "sticky", i.style.left = f + "px", o !== void 0 && e.querySelectorAll(`.data-grid-row .cell[data-col="${o}"]`).forEach((l) => {
|
|
321
|
+
l.classList.add("sticky-left"), l.style.position = "sticky", l.style.left = f + "px";
|
|
322
|
+
}), f += i.offsetWidth);
|
|
246
323
|
}
|
|
247
|
-
let
|
|
324
|
+
let d = 0;
|
|
248
325
|
for (const r of [...t].reverse())
|
|
249
326
|
if (r.sticky === "right") {
|
|
250
|
-
const o = c.get(r.field), i =
|
|
251
|
-
i && (i.classList.add("sticky-right"), i.style.position = "sticky", i.style.right =
|
|
252
|
-
l.classList.add("sticky-right"), l.style.position = "sticky", l.style.right =
|
|
253
|
-
}),
|
|
327
|
+
const o = c.get(r.field), i = s.find((l) => l.getAttribute("data-field") === r.field);
|
|
328
|
+
i && (i.classList.add("sticky-right"), i.style.position = "sticky", i.style.right = d + "px", o !== void 0 && e.querySelectorAll(`.data-grid-row .cell[data-col="${o}"]`).forEach((l) => {
|
|
329
|
+
l.classList.add("sticky-right"), l.style.position = "sticky", l.style.right = d + "px";
|
|
330
|
+
}), d += i.offsetWidth);
|
|
254
331
|
}
|
|
255
332
|
}
|
|
256
|
-
function
|
|
333
|
+
function h(n) {
|
|
257
334
|
const t = n.shadowRoot;
|
|
258
335
|
if (!t) return;
|
|
259
|
-
t.querySelectorAll(".sticky-left, .sticky-right").forEach((
|
|
260
|
-
|
|
336
|
+
t.querySelectorAll(".sticky-left, .sticky-right").forEach((s) => {
|
|
337
|
+
s.classList.remove("sticky-left", "sticky-right"), s.style.position = "", s.style.left = "", s.style.right = "";
|
|
261
338
|
});
|
|
262
339
|
}
|
|
263
|
-
class
|
|
340
|
+
class C extends m {
|
|
264
341
|
name = "pinnedColumns";
|
|
265
|
-
version = "1.0.0";
|
|
266
342
|
get defaultConfig() {
|
|
267
343
|
return {};
|
|
268
344
|
}
|
|
@@ -280,9 +356,9 @@ class m extends k {
|
|
|
280
356
|
/**
|
|
281
357
|
* Auto-detect sticky columns from column configuration.
|
|
282
358
|
*/
|
|
283
|
-
static detect(t,
|
|
284
|
-
const
|
|
285
|
-
return Array.isArray(
|
|
359
|
+
static detect(t, e) {
|
|
360
|
+
const s = e?.columns;
|
|
361
|
+
return Array.isArray(s) ? a(s) : !1;
|
|
286
362
|
}
|
|
287
363
|
// #endregion
|
|
288
364
|
// #region Hooks
|
|
@@ -292,13 +368,13 @@ class m extends k {
|
|
|
292
368
|
afterRender() {
|
|
293
369
|
if (!this.isApplied)
|
|
294
370
|
return;
|
|
295
|
-
const t = this.grid,
|
|
296
|
-
if (!a(
|
|
297
|
-
|
|
371
|
+
const t = this.grid, e = [...this.columns];
|
|
372
|
+
if (!a(e)) {
|
|
373
|
+
h(t), this.isApplied = !1;
|
|
298
374
|
return;
|
|
299
375
|
}
|
|
300
376
|
queueMicrotask(() => {
|
|
301
|
-
|
|
377
|
+
u(t, e);
|
|
302
378
|
});
|
|
303
379
|
}
|
|
304
380
|
/**
|
|
@@ -307,10 +383,10 @@ class m extends k {
|
|
|
307
383
|
onPluginQuery(t) {
|
|
308
384
|
switch (t.type) {
|
|
309
385
|
case y.CAN_MOVE_COLUMN: {
|
|
310
|
-
const
|
|
311
|
-
if (
|
|
386
|
+
const e = t.context, s = e.sticky;
|
|
387
|
+
if (s === "left" || s === "right")
|
|
312
388
|
return !1;
|
|
313
|
-
const c =
|
|
389
|
+
const c = e.meta?.sticky;
|
|
314
390
|
return c === "left" || c === "right" ? !1 : void 0;
|
|
315
391
|
}
|
|
316
392
|
default:
|
|
@@ -324,7 +400,7 @@ class m extends k {
|
|
|
324
400
|
*/
|
|
325
401
|
refreshStickyOffsets() {
|
|
326
402
|
const t = [...this.columns];
|
|
327
|
-
|
|
403
|
+
u(this.grid, t);
|
|
328
404
|
}
|
|
329
405
|
/**
|
|
330
406
|
* Get columns pinned to the left.
|
|
@@ -338,41 +414,41 @@ class m extends k {
|
|
|
338
414
|
*/
|
|
339
415
|
getRightPinnedColumns() {
|
|
340
416
|
const t = [...this.columns];
|
|
341
|
-
return
|
|
417
|
+
return k(t);
|
|
342
418
|
}
|
|
343
419
|
/**
|
|
344
420
|
* Clear all sticky positioning.
|
|
345
421
|
*/
|
|
346
422
|
clearStickyPositions() {
|
|
347
|
-
|
|
423
|
+
h(this.grid);
|
|
348
424
|
}
|
|
349
425
|
/**
|
|
350
426
|
* Report horizontal scroll boundary offsets for pinned columns.
|
|
351
427
|
* Used by keyboard navigation to ensure focused cells aren't hidden behind sticky columns.
|
|
352
428
|
*/
|
|
353
|
-
getHorizontalScrollOffsets(t,
|
|
429
|
+
getHorizontalScrollOffsets(t, e) {
|
|
354
430
|
if (!this.isApplied)
|
|
355
431
|
return;
|
|
356
|
-
let
|
|
432
|
+
let s = 0, c = 0;
|
|
357
433
|
if (t) {
|
|
358
|
-
const
|
|
359
|
-
|
|
360
|
-
|
|
434
|
+
const d = t.querySelectorAll(".sticky-left"), r = t.querySelectorAll(".sticky-right");
|
|
435
|
+
d.forEach((o) => {
|
|
436
|
+
s += o.offsetWidth;
|
|
361
437
|
}), r.forEach((o) => {
|
|
362
438
|
c += o.offsetWidth;
|
|
363
439
|
});
|
|
364
440
|
} else {
|
|
365
441
|
const r = this.grid.shadowRoot;
|
|
366
442
|
r && r.querySelectorAll(".header-row .cell").forEach((i) => {
|
|
367
|
-
i.classList.contains("sticky-left") ?
|
|
443
|
+
i.classList.contains("sticky-left") ? s += i.offsetWidth : i.classList.contains("sticky-right") && (c += i.offsetWidth);
|
|
368
444
|
});
|
|
369
445
|
}
|
|
370
|
-
const
|
|
371
|
-
return { left:
|
|
446
|
+
const f = e?.classList.contains("sticky-left") || e?.classList.contains("sticky-right");
|
|
447
|
+
return { left: s, right: c, skipScroll: f };
|
|
372
448
|
}
|
|
373
449
|
// #endregion
|
|
374
450
|
}
|
|
375
451
|
export {
|
|
376
|
-
|
|
452
|
+
C as PinnedColumnsPlugin
|
|
377
453
|
};
|
|
378
454
|
//# sourceMappingURL=index.js.map
|