mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 23:03:58 +00:00
perspective cell highlight
This commit is contained in:
@@ -59,6 +59,19 @@
|
|||||||
let submenuOffset;
|
let submenuOffset;
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
let closeHandlers = [];
|
||||||
|
|
||||||
|
function dispatchClose() {
|
||||||
|
dispatch('close');
|
||||||
|
for (const handler of closeHandlers) {
|
||||||
|
handler();
|
||||||
|
}
|
||||||
|
closeHandlers = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function registerCloseHandler(handler) {
|
||||||
|
closeHandlers.push(handler);
|
||||||
|
}
|
||||||
|
|
||||||
function handleClick(e, item) {
|
function handleClick(e, item) {
|
||||||
if (item.disabled) return;
|
if (item.disabled) return;
|
||||||
@@ -70,7 +83,7 @@
|
|||||||
submenuOffset = hoverOffset;
|
submenuOffset = hoverOffset;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dispatch('close');
|
dispatchClose();
|
||||||
if (onCloseParent) onCloseParent();
|
if (onCloseParent) onCloseParent();
|
||||||
if (item.onClick) item.onClick();
|
if (item.onClick) item.onClick();
|
||||||
}
|
}
|
||||||
@@ -84,13 +97,13 @@
|
|||||||
submenuOffset = hoverOffset;
|
submenuOffset = hoverOffset;
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
$: preparedItems = prepareMenuItems(items, { targetElement }, $commandsCustomized);
|
$: preparedItems = prepareMenuItems(items, { targetElement, registerCloseHandler }, $commandsCustomized);
|
||||||
|
|
||||||
const handleClickOutside = event => {
|
const handleClickOutside = event => {
|
||||||
// if (element && !element.contains(event.target) && !event.defaultPrevented) {
|
// if (element && !element.contains(event.target) && !event.defaultPrevented) {
|
||||||
if (event.target.closest('ul.dropDownMenuMarker')) return;
|
if (event.target.closest('ul.dropDownMenuMarker')) return;
|
||||||
|
|
||||||
dispatch('close');
|
dispatchClose();
|
||||||
};
|
};
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
@@ -134,7 +147,7 @@
|
|||||||
{...submenuOffset}
|
{...submenuOffset}
|
||||||
onCloseParent={() => {
|
onCloseParent={() => {
|
||||||
if (onCloseParent) onCloseParent();
|
if (onCloseParent) onCloseParent();
|
||||||
dispatch('close');
|
dispatchClose();
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -25,4 +25,8 @@
|
|||||||
border-bottom: 1px solid var(--theme-border);
|
border-bottom: 1px solid var(--theme-border);
|
||||||
border-right: 1px solid var(--theme-border);
|
border-right: 1px solid var(--theme-border);
|
||||||
}
|
}
|
||||||
|
td:global(.highlight) {
|
||||||
|
border: 3px solid var(--theme-icon-blue);
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -179,4 +179,9 @@
|
|||||||
th.columnHeader {
|
th.columnHeader {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
th:global(.highlight) {
|
||||||
|
border: 3px solid var(--theme-icon-blue);
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
checkLoadAdditionalData();
|
checkLoadAdditionalData();
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildMenu({ targetElement }) {
|
function buildMenu({ targetElement, registerCloseHandler }) {
|
||||||
const res = [];
|
const res = [];
|
||||||
const td = targetElement.closest('td') || targetElement.closest('th');
|
const td = targetElement.closest('td') || targetElement.closest('th');
|
||||||
|
|
||||||
@@ -172,6 +172,10 @@
|
|||||||
setConfig,
|
setConfig,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
td.classList.add('highlight');
|
||||||
|
registerCloseHandler(() => {
|
||||||
|
td.classList.remove('highlight');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
res.push([
|
res.push([
|
||||||
|
|||||||
Reference in New Issue
Block a user