Style improvements in omnisearch headers

This commit is contained in:
Sudheer Salavadi 2024-12-05 16:28:39 -05:00
parent 130e00748b
commit 89e51b0531
8 changed files with 78 additions and 66 deletions

View file

@ -56,7 +56,7 @@ const FilterSeriesHeader = observer(
}; };
return ( return (
<div <div
className={cn('px-4 h-12 flex items-center relative bg-white border-gray-lighter border-t border-l border-r rounded-t-xl', { className={cn('ps-2 pr-4 h-12 flex items-center relative bg-white border-t border-l border-r rounded-t-xl', {
hidden: props.hidden, hidden: props.hidden,
'rounded-b-xl': !props.expanded, 'rounded-b-xl': !props.expanded,
})} })}
@ -79,12 +79,14 @@ const FilterSeriesHeader = observer(
<Button <Button
onClick={props.onRemove} onClick={props.onRemove}
size="small" size="small"
type='text'
disabled={!props.canDelete} disabled={!props.canDelete}
icon={<Trash size={14} />} icon={<Trash size={14} />}
/> />
<Button <Button
onClick={props.toggleExpand} onClick={props.toggleExpand}
size="small" size="small"
type='text'
icon={ icon={
props.expanded ? ( props.expanded ? (
<ChevronUp size={16} /> <ChevronUp size={16} />

View file

@ -44,18 +44,12 @@ function SeriesName(props: Props) {
onChange={write} onChange={write}
onBlur={onBlur} onBlur={onBlur}
onFocus={() => setEditing(true)} onFocus={() => setEditing(true)}
className='bg-white' className='bg-white text-lg font-medium rounded-lg'
/> />
) : ( ) : (
<div className="text-base h-8 flex items-center border-transparent">{name && name.trim() === '' ? 'Series ' + (seriesIndex + 1) : name }</div> <Tooltip placement='bottom' title='Double click to edit'><div className="text-lg font-medium hover:bg-teal-light/10 px-2 rounded-lg cursor-pointer" onDoubleClick={() => setEditing(true)}>{name && name.trim() === '' ? 'Series ' + (seriesIndex + 1) : name }</div>
)}
<div className="ml-3 cursor-pointer " onClick={() => setEditing(true)}>
<Tooltip title='Rename' placement='bottom'>
<Icon name="pencil" size="14" />
</Tooltip> </Tooltip>
</div> )}
</div> </div>
); );
} }

View file

@ -56,7 +56,7 @@ const FilterSection = observer(({ metric, excludeFilterKeys }: any) => {
metric.series metric.series
.slice(0, isSingleSeries ? 1 : metric.series.length) .slice(0, isSingleSeries ? 1 : metric.series.length)
.map((series: any, index: number) => ( .map((series: any, index: number) => (
<div className="mb-2 rounded-xl border border-gray-lighter" key={series.name}> <div className="mb-2 rounded-xl" key={series.name}>
<FilterSeries <FilterSeries
canExclude={isPathAnalysis} canExclude={isPathAnalysis}
supportsEmpty={!isClickMap && !isPathAnalysis} supportsEmpty={!isClickMap && !isPathAnalysis}

View file

@ -1,6 +1,6 @@
import React, { useState, useRef, useEffect } from 'react'; import React, { useState, useRef, useEffect } from 'react';
import { Icon, Tooltip } from 'UI'; import { Icon } from 'UI';
import { Input } from 'antd'; import { Input, Tooltip } from 'antd';
import cn from 'classnames'; import cn from 'classnames';
interface Props { interface Props {
@ -62,16 +62,17 @@ function WidgetName(props: Props) {
onBlur={() => onBlur()} onBlur={() => onBlur()}
onFocus={() => setEditing(true)} onFocus={() => setEditing(true)}
maxLength={80} maxLength={80}
className='rounded-xl text-2xl'
/> />
) : ( ) : (
// @ts-ignore // @ts-ignore
<Tooltip delay={200} title="Double click to edit" disabled={!canEdit}> <Tooltip delay={200} placement="bottom" title="Double click to rename" disabled={!canEdit}>
<div <div
onDoubleClick={() => setEditing(true)} onDoubleClick={() => setEditing(true)}
className={ className={
cn( cn(
"text-2xl h-8 flex items-center border-transparent", "text-2xl h-8 flex items-center border-transparent",
canEdit && 'cursor-pointer select-none border-b border-b-borderColor-transparent hover:border-dotted hover:border-gray-medium' canEdit && 'cursor-pointer select-none hover:bg-teal-light/10 px-3 rounded-xl'
) )
} }
> >
@ -80,11 +81,11 @@ function WidgetName(props: Props) {
</Tooltip> </Tooltip>
)} )}
{ canEdit && <div className="ml-3 cursor-pointer" onClick={() => setEditing(true)}> {/* { canEdit && <div className="ml-3 cursor-pointer" onClick={() => setEditing(true)}>
<Tooltip title='Rename' placement='bottom'> <Tooltip title='Rename' placement='bottom'>
<Icon name="pencil" size="16" /> <Icon name="pencil" size="16" />
</Tooltip> </Tooltip>
</div> } </div> } */}
</div> </div>
); );
} }

View file

@ -89,7 +89,7 @@ const CardViewMenu = () => {
return ( return (
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<Dropdown menu={{items}}> <Dropdown menu={{items}}>
<Button icon={<EllipsisVertical size={16}/>}/> <Button type="text" icon={<EllipsisVertical size={16}/>}/>
</Dropdown> </Dropdown>
</div> </div>
); );

View file

@ -19,7 +19,7 @@ function WidgetViewHeader({ onClick, onSave }: Props) {
return ( return (
<div <div
className={cn( className={cn(
'flex justify-between items-center bg-white rounded px-4 py-2 border border-gray-lighter' 'flex justify-between items-center bg-white rounded-xl p-2 border border-gray-lighter min-h-[54px]'
)} )}
onClick={onClick} onClick={onClick}
> >

View file

@ -1,55 +1,70 @@
import React from "react"; import React from "react";
import { observer } from "mobx-react-lite"; import { observer } from "mobx-react-lite";
import { Tooltip } from "UI"; import { Dropdown, Menu, Tooltip, Space } from "antd";
import { Select } from "antd"; import {DownOutlined} from '@ant-design/icons';
const EventsOrder = observer((props: { const EventsOrder = observer((props: {
onChange: (e: any, v: any) => void, onChange: (e: any, v: any) => void,
filter: any, filter: any,
}) => { }) => {
const {filter, onChange} = props; const { filter, onChange } = props;
const eventsOrderSupport = filter.eventsOrderSupport; const eventsOrderSupport = filter.eventsOrderSupport;
const options = [
{
name: 'eventsOrder',
label: 'Then',
value: 'then',
disabled: eventsOrderSupport && !eventsOrderSupport.includes('then'),
},
{
name: 'eventsOrder',
label: 'And',
value: 'and',
disabled: eventsOrderSupport && !eventsOrderSupport.includes('and'),
},
{
name: 'eventsOrder',
label: 'Or',
value: 'or',
disabled: eventsOrderSupport && !eventsOrderSupport.includes('or'),
},
];
return <div className="flex items-center gap-2"> const options = [
<div {
className="color-gray-medium text-sm" name: 'eventsOrder',
style={{textDecoration: "underline dotted"}} label: 'THEN',
> value: 'then',
<Tooltip disabled: eventsOrderSupport && !eventsOrderSupport.includes('then'),
title={`Select the operator to be applied between events in your search.`} },
> {
<div>Events Order</div> name: 'eventsOrder',
</Tooltip> label: 'AND',
</div> value: 'and',
disabled: eventsOrderSupport && !eventsOrderSupport.includes('and'),
},
{
name: 'eventsOrder',
label: 'OR',
value: 'or',
disabled: eventsOrderSupport && !eventsOrderSupport.includes('or'),
},
];
<Select const menu = (
size={"small"} <Menu
className="text-sm" onClick={(e) => {
onChange={(v) => onChange(null, options.find((i) => i.value === v))} const selectedOption = options.find((item) => item.value === e.key);
value={filter.eventsOrder} if (selectedOption && !selectedOption.disabled) {
options={options} onChange(null, selectedOption);
/> }
</div>; }}
>
{options.map((item) => (
<Menu.Item key={item.value} disabled={item.disabled}>
{item.label}
</Menu.Item>
))}
</Menu>
);
return (
<div className="flex items-center gap-2">
<Tooltip title="Select the operator to be applied between events." placement="bottom">
<div className="color-gray-medium text-sm">Events Order</div>
</Tooltip>
<Dropdown overlay={menu} trigger={['click']} placement="bottomRight">
<a onClick={(e) => e.preventDefault()} className="text-sm items-center gap-2 hover:text-teal">
<Space className="text-sm">
{options.find((item) => item.value === filter.eventsOrder)?.label || 'Select'}
<DownOutlined className="mr-2 text-xs" />
</Space>
</a>
</Dropdown>
</div>
);
}); });
export default EventsOrder; export default EventsOrder;

View file

@ -81,7 +81,7 @@ function FilterSelection(props: Props) {
</div> </div>
)} )}
{showModal && ( {showModal && (
<div className="absolute mt-2 left-0 rounded-lg shadow bg-white z-50"> <div className="absolute mt-2 left-0 rounded-xl shadow-lg bg-white z-50">
<FilterModal <FilterModal
isLive={isRoute(ASSIST_ROUTE, window.location.pathname)} isLive={isRoute(ASSIST_ROUTE, window.location.pathname)}
onFilterClick={onAddFilter} onFilterClick={onAddFilter}