@underverse-ui/underverse 1.0.90 → 1.0.92
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/api-reference.json +1 -1
- package/dist/index.cjs +54 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -2
- package/dist/index.d.ts +12 -2
- package/dist/index.js +54 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/api-reference.json
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -2064,6 +2064,8 @@ var DEFAULT_OVERLAY_SCROLLBAR_BEHAVIOR = {
|
|
|
2064
2064
|
autoHideDelay: 600,
|
|
2065
2065
|
dragScroll: true,
|
|
2066
2066
|
clickScroll: false,
|
|
2067
|
+
overflowX: "scroll",
|
|
2068
|
+
overflowY: "scroll",
|
|
2067
2069
|
exclude: DEFAULT_OVERLAY_SCROLLBAR_EXCLUDE
|
|
2068
2070
|
};
|
|
2069
2071
|
function resolveOverlayScrollbarBehavior(overrides = {}) {
|
|
@@ -2074,6 +2076,10 @@ function resolveOverlayScrollbarBehavior(overrides = {}) {
|
|
|
2074
2076
|
}
|
|
2075
2077
|
function buildOverlayScrollbarOptions(config) {
|
|
2076
2078
|
return {
|
|
2079
|
+
overflow: {
|
|
2080
|
+
x: config.overflowX,
|
|
2081
|
+
y: config.overflowY
|
|
2082
|
+
},
|
|
2077
2083
|
scrollbars: {
|
|
2078
2084
|
theme: config.theme,
|
|
2079
2085
|
visibility: config.visibility,
|
|
@@ -2218,6 +2224,8 @@ function OverlayScrollbarProvider({
|
|
|
2218
2224
|
autoHideDelay = DEFAULT_OVERLAY_SCROLLBAR_BEHAVIOR.autoHideDelay,
|
|
2219
2225
|
dragScroll = DEFAULT_OVERLAY_SCROLLBAR_BEHAVIOR.dragScroll,
|
|
2220
2226
|
clickScroll = DEFAULT_OVERLAY_SCROLLBAR_BEHAVIOR.clickScroll,
|
|
2227
|
+
overflowX = DEFAULT_OVERLAY_SCROLLBAR_BEHAVIOR.overflowX,
|
|
2228
|
+
overflowY = DEFAULT_OVERLAY_SCROLLBAR_BEHAVIOR.overflowY,
|
|
2221
2229
|
exclude = DEFAULT_OVERLAY_SCROLLBAR_BEHAVIOR.exclude,
|
|
2222
2230
|
selector,
|
|
2223
2231
|
children
|
|
@@ -2231,9 +2239,11 @@ function OverlayScrollbarProvider({
|
|
|
2231
2239
|
autoHideDelay,
|
|
2232
2240
|
dragScroll,
|
|
2233
2241
|
clickScroll,
|
|
2242
|
+
overflowX,
|
|
2243
|
+
overflowY,
|
|
2234
2244
|
exclude
|
|
2235
2245
|
}),
|
|
2236
|
-
[enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, exclude]
|
|
2246
|
+
[enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, overflowX, overflowY, exclude]
|
|
2237
2247
|
);
|
|
2238
2248
|
void selector;
|
|
2239
2249
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(OverlayScrollbarConfigContext.Provider, { value, children: children ?? null });
|
|
@@ -2247,6 +2257,8 @@ function useOverlayScrollbarTarget(targetRef, options = {}) {
|
|
|
2247
2257
|
const autoHideDelay = options.autoHideDelay ?? inherited.autoHideDelay;
|
|
2248
2258
|
const dragScroll = options.dragScroll ?? inherited.dragScroll;
|
|
2249
2259
|
const clickScroll = options.clickScroll ?? inherited.clickScroll;
|
|
2260
|
+
const overflowX = options.overflowX ?? inherited.overflowX;
|
|
2261
|
+
const overflowY = options.overflowY ?? inherited.overflowY;
|
|
2250
2262
|
const exclude = options.exclude ?? inherited.exclude;
|
|
2251
2263
|
const resolved = (0, import_react3.useMemo)(
|
|
2252
2264
|
() => resolveOverlayScrollbarBehavior({
|
|
@@ -2257,9 +2269,11 @@ function useOverlayScrollbarTarget(targetRef, options = {}) {
|
|
|
2257
2269
|
autoHideDelay,
|
|
2258
2270
|
dragScroll,
|
|
2259
2271
|
clickScroll,
|
|
2272
|
+
overflowX,
|
|
2273
|
+
overflowY,
|
|
2260
2274
|
exclude
|
|
2261
2275
|
}),
|
|
2262
|
-
[enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, exclude]
|
|
2276
|
+
[enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, overflowX, overflowY, exclude]
|
|
2263
2277
|
);
|
|
2264
2278
|
(0, import_react3.useEffect)(() => {
|
|
2265
2279
|
if (typeof window === "undefined") return;
|
|
@@ -2284,6 +2298,8 @@ function useOverlayScrollbarTarget(targetRef, options = {}) {
|
|
|
2284
2298
|
resolved.autoHideDelay,
|
|
2285
2299
|
resolved.dragScroll,
|
|
2286
2300
|
resolved.clickScroll,
|
|
2301
|
+
resolved.overflowX,
|
|
2302
|
+
resolved.overflowY,
|
|
2287
2303
|
resolved.exclude
|
|
2288
2304
|
]);
|
|
2289
2305
|
}
|
|
@@ -16421,6 +16437,25 @@ Slider.displayName = "Slider";
|
|
|
16421
16437
|
var import_lucide_react25 = require("lucide-react");
|
|
16422
16438
|
var import_react21 = __toESM(require("react"), 1);
|
|
16423
16439
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
16440
|
+
function resolveKeyboardEventElement(target) {
|
|
16441
|
+
if (target instanceof Element) return target;
|
|
16442
|
+
if (target instanceof Node) return target.parentElement;
|
|
16443
|
+
return null;
|
|
16444
|
+
}
|
|
16445
|
+
function isEditableKeyboardTarget(target) {
|
|
16446
|
+
const element = resolveKeyboardEventElement(target);
|
|
16447
|
+
if (!element) return false;
|
|
16448
|
+
if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement) {
|
|
16449
|
+
return true;
|
|
16450
|
+
}
|
|
16451
|
+
if (element instanceof HTMLElement && element.isContentEditable) {
|
|
16452
|
+
return true;
|
|
16453
|
+
}
|
|
16454
|
+
if (element.closest?.('[contenteditable=""],[contenteditable="true"],[contenteditable="plaintext-only"]') || element.closest?.('[role="textbox"]')) {
|
|
16455
|
+
return true;
|
|
16456
|
+
}
|
|
16457
|
+
return false;
|
|
16458
|
+
}
|
|
16424
16459
|
function OverlayControls({
|
|
16425
16460
|
mode,
|
|
16426
16461
|
value,
|
|
@@ -16519,7 +16554,7 @@ function OverlayControls({
|
|
|
16519
16554
|
import_react21.default.useEffect(() => {
|
|
16520
16555
|
if (!enableKeyboardShortcuts) return;
|
|
16521
16556
|
const handleKeyDown2 = (e) => {
|
|
16522
|
-
if (e.target
|
|
16557
|
+
if (isEditableKeyboardTarget(e.target)) return;
|
|
16523
16558
|
switch (e.key) {
|
|
16524
16559
|
case " ":
|
|
16525
16560
|
case "k":
|
|
@@ -20943,7 +20978,7 @@ var LoadingBar = ({
|
|
|
20943
20978
|
// src/components/Table.tsx
|
|
20944
20979
|
var import_react28 = __toESM(require("react"), 1);
|
|
20945
20980
|
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
20946
|
-
var TABLE_BASE_CLASS = "w-full caption-bottom text-sm";
|
|
20981
|
+
var TABLE_BASE_CLASS = "w-full border-collapse caption-bottom text-sm";
|
|
20947
20982
|
var TABLE_CONTAINER_BASE_CLASS = [
|
|
20948
20983
|
"relative w-full overflow-auto",
|
|
20949
20984
|
"rounded-2xl md:rounded-3xl border border-border/50",
|
|
@@ -21378,6 +21413,7 @@ function DataTableHeader({
|
|
|
21378
21413
|
const prevCol = prevCell?.column;
|
|
21379
21414
|
const isAfterFixedLeft = prevCol?.fixed === "left";
|
|
21380
21415
|
const showBorderLeft = columnDividers && cellIndex > 0 && !isAfterFixedLeft && !col.fixed;
|
|
21416
|
+
const isLastCell = cellIndex === row.length - 1;
|
|
21381
21417
|
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
21382
21418
|
TableHead,
|
|
21383
21419
|
{
|
|
@@ -21417,7 +21453,8 @@ function DataTableHeader({
|
|
|
21417
21453
|
onAutoFitColumn?.(col.key);
|
|
21418
21454
|
},
|
|
21419
21455
|
className: cn(
|
|
21420
|
-
"absolute inset-y-0 right-0 z-10 w-3
|
|
21456
|
+
"absolute inset-y-0 right-0 z-10 w-3",
|
|
21457
|
+
!isLastCell && "-mr-1",
|
|
21421
21458
|
"cursor-col-resize select-none bg-transparent",
|
|
21422
21459
|
"after:absolute after:inset-y-2 after:right-0.8 after:w-px after:bg-border/0 after:transition-colors",
|
|
21423
21460
|
"hover:after:bg-primary/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary"
|
|
@@ -22188,6 +22225,7 @@ function DataTable({
|
|
|
22188
22225
|
storageKey,
|
|
22189
22226
|
stickyHeader = true,
|
|
22190
22227
|
maxHeight = 500,
|
|
22228
|
+
horizontalMode = "auto",
|
|
22191
22229
|
overflowHidden = true,
|
|
22192
22230
|
useOverlayScrollbar = false,
|
|
22193
22231
|
enableHeaderAutoFit = true,
|
|
@@ -22261,6 +22299,10 @@ function DataTable({
|
|
|
22261
22299
|
total
|
|
22262
22300
|
});
|
|
22263
22301
|
const { getStickyCellClass, getStickyColumnStyle, getStickyHeaderClass, getStickyHeaderCellStyle } = useStickyColumns(visibleColumns);
|
|
22302
|
+
const shouldForceHorizontalScroll = horizontalMode === "scroll";
|
|
22303
|
+
const shouldUseFixedLayout = horizontalMode !== "auto";
|
|
22304
|
+
const viewportOverflowXClass = horizontalMode === "fit" ? "overflow-x-hidden" : "overflow-x-auto";
|
|
22305
|
+
const overlayOverflowX = horizontalMode === "fit" ? "hidden" : "scroll";
|
|
22264
22306
|
const getRowKey = (row, idx) => {
|
|
22265
22307
|
if (!rowKey) return String(idx);
|
|
22266
22308
|
if (typeof rowKey === "function") return String(rowKey(row));
|
|
@@ -22268,7 +22310,10 @@ function DataTable({
|
|
|
22268
22310
|
};
|
|
22269
22311
|
const viewportRef = import_react38.default.useRef(null);
|
|
22270
22312
|
const tableRef = import_react38.default.useRef(null);
|
|
22271
|
-
useOverlayScrollbarTarget(viewportRef, {
|
|
22313
|
+
useOverlayScrollbarTarget(viewportRef, {
|
|
22314
|
+
enabled: useOverlayScrollbar,
|
|
22315
|
+
overflowX: overlayOverflowX
|
|
22316
|
+
});
|
|
22272
22317
|
const autoFitColumn = import_react38.default.useCallback((columnKey) => {
|
|
22273
22318
|
const tableElement = tableRef.current;
|
|
22274
22319
|
if (!tableElement) return;
|
|
@@ -22330,7 +22375,7 @@ function DataTable({
|
|
|
22330
22375
|
"div",
|
|
22331
22376
|
{
|
|
22332
22377
|
ref: viewportRef,
|
|
22333
|
-
className: cn("w-full
|
|
22378
|
+
className: cn("w-full", viewportOverflowXClass, stickyHeader && "overflow-y-auto"),
|
|
22334
22379
|
style: stickyHeader ? { maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : void 0,
|
|
22335
22380
|
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
|
|
22336
22381
|
Table,
|
|
@@ -22338,10 +22383,10 @@ function DataTable({
|
|
|
22338
22383
|
ref: tableRef,
|
|
22339
22384
|
disableContainer: true,
|
|
22340
22385
|
className: cn(
|
|
22341
|
-
"table-fixed",
|
|
22386
|
+
shouldUseFixedLayout ? "table-fixed" : "table-auto",
|
|
22342
22387
|
stickyHeader && ["[&_thead]:sticky", "[&_thead]:top-0", "[&_thead]:z-20", "[&_thead]:shadow-[0_1px_3px_rgba(0,0,0,0.1)]"]
|
|
22343
22388
|
),
|
|
22344
|
-
style: { minWidth: totalColumnsWidth > 0 ? `${totalColumnsWidth}px` : void 0 },
|
|
22389
|
+
style: { minWidth: shouldForceHorizontalScroll && totalColumnsWidth > 0 ? `${totalColumnsWidth}px` : void 0 },
|
|
22345
22390
|
children: [
|
|
22346
22391
|
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
22347
22392
|
DataTableHeader,
|