Show full search filters in tooltips
This commit is contained in:
@@ -3707,6 +3707,13 @@ body.organization-view:not(.expanded) #content>#stability>.bankruptcy-timeline{
|
|||||||
outline:1px solid #a9cee9;
|
outline:1px solid #a9cee9;
|
||||||
outline-offset:2px;
|
outline-offset:2px;
|
||||||
}
|
}
|
||||||
|
.search-result-filter.is-truncated{
|
||||||
|
cursor:help;
|
||||||
|
}
|
||||||
|
.search-result-filter.is-truncated:focus-visible{
|
||||||
|
outline:1px solid #a9cee9;
|
||||||
|
outline-offset:2px;
|
||||||
|
}
|
||||||
.search-result-filters-tooltip{
|
.search-result-filters-tooltip{
|
||||||
position:fixed;
|
position:fixed;
|
||||||
z-index:1000;
|
z-index:1000;
|
||||||
|
|||||||
@@ -1309,10 +1309,50 @@ const renderSearchResults=()=>{
|
|||||||
const parameters=document.createElement('div');
|
const parameters=document.createElement('div');
|
||||||
parameters.className='search-result-group-parameters';
|
parameters.className='search-result-group-parameters';
|
||||||
const visibleFilters=group.filters.slice(0,5);
|
const visibleFilters=group.filters.slice(0,5);
|
||||||
visibleFilters.forEach(({parameter,value})=>{
|
visibleFilters.forEach(({parameter,value},filterIndex)=>{
|
||||||
const item=document.createElement('span');
|
const item=document.createElement('span');
|
||||||
item.className='search-result-filter';
|
item.className='search-result-filter';
|
||||||
item.textContent=`${parameter} — ${value}`;
|
const fullText=`${parameter} — ${value}`;
|
||||||
|
item.textContent=fullText;
|
||||||
|
const tooltip=document.createElement('span');
|
||||||
|
const tooltipId=`search-filter-tooltip-${groupIndex}-${filterIndex}`;
|
||||||
|
tooltip.id=tooltipId;
|
||||||
|
tooltip.className='search-result-filters-tooltip search-result-filter-tooltip';
|
||||||
|
tooltip.dataset.searchFiltersTooltip='';
|
||||||
|
tooltip.setAttribute('role','tooltip');
|
||||||
|
const tooltipText=document.createElement('span');
|
||||||
|
tooltipText.textContent=fullText;
|
||||||
|
tooltip.append(tooltipText);
|
||||||
|
const showTooltip=()=>{
|
||||||
|
if(item.scrollWidth<=item.clientWidth)return;
|
||||||
|
tooltip.classList.add('is-visible');
|
||||||
|
const anchorRect=item.getBoundingClientRect();
|
||||||
|
const tooltipRect=tooltip.getBoundingClientRect();
|
||||||
|
const left=Math.max(.5*16,Math.min(anchorRect.left,innerWidth-tooltipRect.width-.5*16));
|
||||||
|
const below=anchorRect.bottom+.5*16;
|
||||||
|
const top=below+tooltipRect.height<=innerHeight-.5*16
|
||||||
|
? below
|
||||||
|
: Math.max(.5*16,anchorRect.top-tooltipRect.height-.5*16);
|
||||||
|
tooltip.style.left=`${left}px`;
|
||||||
|
tooltip.style.top=`${top}px`;
|
||||||
|
};
|
||||||
|
const hideTooltip=()=>tooltip.classList.remove('is-visible');
|
||||||
|
item.addEventListener('mouseenter',showTooltip);
|
||||||
|
item.addEventListener('mouseleave',hideTooltip);
|
||||||
|
item.addEventListener('focus',showTooltip);
|
||||||
|
item.addEventListener('blur',hideTooltip);
|
||||||
|
document.body.append(tooltip);
|
||||||
|
requestAnimationFrame(()=>{
|
||||||
|
const truncated=item.scrollWidth>item.clientWidth;
|
||||||
|
item.classList.toggle('is-truncated',truncated);
|
||||||
|
if(truncated){
|
||||||
|
item.tabIndex=0;
|
||||||
|
item.setAttribute('aria-describedby',tooltipId);
|
||||||
|
}else{
|
||||||
|
item.removeAttribute('tabindex');
|
||||||
|
item.removeAttribute('aria-describedby');
|
||||||
|
}
|
||||||
|
});
|
||||||
parameters.append(item);
|
parameters.append(item);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user