mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-06 22:46:06 +02:00
add table col width resize handle & fix sidebar custom width issue
This commit is contained in:
@@ -20,9 +20,12 @@
|
|||||||
<FlexRender :render="header.column.columnDef.header" :props="header.getContext()" />
|
<FlexRender :render="header.column.columnDef.header" :props="header.getContext()" />
|
||||||
<div
|
<div
|
||||||
v-if="header.column.getCanResize?.()"
|
v-if="header.column.getCanResize?.()"
|
||||||
class="absolute right-0 top-0 h-full w-1 cursor-col-resize touch-none select-none"
|
class="absolute right-0 top-0 h-full w-2 cursor-col-resize touch-none select-none opacity-0 transition-opacity group-hover:opacity-100"
|
||||||
@mousedown.stop="header.getResizeHandler?.()($event)"
|
@mousedown.stop="header.getResizeHandler?.()($event)"
|
||||||
@touchstart.stop="header.getResizeHandler?.()($event)" />
|
@touchstart.stop="header.getResizeHandler?.()($event)">
|
||||||
|
<div
|
||||||
|
class="absolute right-0 top-0 h-full w-px bg-border dark:bg-border dark:brightness-[2]" />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
@@ -224,7 +227,7 @@
|
|||||||
const columnDef = header?.column?.columnDef;
|
const columnDef = header?.column?.columnDef;
|
||||||
const meta = columnDef?.meta ?? {};
|
const meta = columnDef?.meta ?? {};
|
||||||
return joinClasses(
|
return joinClasses(
|
||||||
'sticky top-0 z-10 bg-background relative',
|
'sticky top-0 z-10 bg-background relative group',
|
||||||
isSpacer(header.column) && 'p-0',
|
isSpacer(header.column) && 'p-0',
|
||||||
resolveClassValue(meta.class, header?.getContext?.()),
|
resolveClassValue(meta.class, header?.getContext?.()),
|
||||||
resolveClassValue(meta.headerClass, header?.getContext?.()),
|
resolveClassValue(meta.headerClass, header?.getContext?.()),
|
||||||
|
|||||||
@@ -39,7 +39,23 @@ export function useAuthenticatedLayoutResizable() {
|
|||||||
return Number.isFinite(width) && width > 0 ? width : fallbackWidth;
|
return Number.isFinite(width) && width > 0 ? width : fallbackWidth;
|
||||||
};
|
};
|
||||||
|
|
||||||
const setIsDragging = (isDragging) => {
|
const resolveDraggingPayload = (payload) => {
|
||||||
|
if (typeof payload === 'boolean') {
|
||||||
|
return payload;
|
||||||
|
}
|
||||||
|
if (payload && typeof payload === 'object') {
|
||||||
|
if (typeof payload.detail === 'boolean') {
|
||||||
|
return payload.detail;
|
||||||
|
}
|
||||||
|
if (typeof payload.dragging === 'boolean') {
|
||||||
|
return payload.dragging;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Boolean(payload);
|
||||||
|
};
|
||||||
|
|
||||||
|
const setIsDragging = (payload) => {
|
||||||
|
const isDragging = resolveDraggingPayload(payload);
|
||||||
const next = draggingCount.value + (isDragging ? 1 : -1);
|
const next = draggingCount.value + (isDragging ? 1 : -1);
|
||||||
draggingCount.value = Math.max(0, next);
|
draggingCount.value = Math.max(0, next);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,7 +9,10 @@
|
|||||||
<ResizablePanel ref="navPanelRef" :min-size="navMinSize" :max-size="navMaxSize" :order="1">
|
<ResizablePanel ref="navPanelRef" :min-size="navMinSize" :max-size="navMaxSize" :order="1">
|
||||||
<NavMenu></NavMenu>
|
<NavMenu></NavMenu>
|
||||||
</ResizablePanel>
|
</ResizablePanel>
|
||||||
<ResizableHandle :disabled="isNavCollapsed" class="opacity-0"></ResizableHandle>
|
<ResizableHandle
|
||||||
|
:disabled="isNavCollapsed"
|
||||||
|
class="opacity-0"
|
||||||
|
@dragging="setIsDragging"></ResizableHandle>
|
||||||
<ResizablePanel :default-size="mainDefaultSize" :order="2">
|
<ResizablePanel :default-size="mainDefaultSize" :order="2">
|
||||||
<RouterView v-slot="{ Component }">
|
<RouterView v-slot="{ Component }">
|
||||||
<KeepAlive exclude="Charts">
|
<KeepAlive exclude="Charts">
|
||||||
@@ -24,7 +27,8 @@
|
|||||||
:class="[
|
:class="[
|
||||||
isAsideCollapsed(layout) ? 'opacity-100' : 'opacity-0',
|
isAsideCollapsed(layout) ? 'opacity-100' : 'opacity-0',
|
||||||
'z-20 [&>div]:-translate-x-1/2'
|
'z-20 [&>div]:-translate-x-1/2'
|
||||||
]"></ResizableHandle>
|
]"
|
||||||
|
@dragging="setIsDragging"></ResizableHandle>
|
||||||
<ResizablePanel
|
<ResizablePanel
|
||||||
ref="asidePanelRef"
|
ref="asidePanelRef"
|
||||||
:default-size="asideDefaultSize"
|
:default-size="asideDefaultSize"
|
||||||
@@ -119,6 +123,7 @@
|
|||||||
asideMaxSize,
|
asideMaxSize,
|
||||||
mainDefaultSize,
|
mainDefaultSize,
|
||||||
handleLayout,
|
handleLayout,
|
||||||
|
setIsDragging,
|
||||||
isAsideCollapsed,
|
isAsideCollapsed,
|
||||||
isNavCollapsed,
|
isNavCollapsed,
|
||||||
isSideBarTabShow
|
isSideBarTabShow
|
||||||
|
|||||||
Reference in New Issue
Block a user