perspective cell highlight

This commit is contained in:
Jan Prochazka
2022-08-05 20:17:49 +02:00
parent 25d2c129cd
commit 1ed01e9839
4 changed files with 31 additions and 5 deletions

View File

@@ -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}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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([