import React, { MouseEvent, useState } from 'react'; import cn from 'classnames'; import { Icon, Input } from 'UI'; import { List } from 'immutable'; import { confirm, Tooltip } from 'UI'; import { applySavedSearch, remove, editSavedSearch } from 'Duck/search'; import { connect } from 'react-redux'; import { useModal } from 'App/components/Modal'; import { SavedSearch } from 'Types/ts/search'; import SaveSearchModal from 'Shared/SaveSearchModal'; import stl from './savedSearchModal.module.css'; interface ITooltipIcon { title: string; name: string; onClick: (e: MouseEvent) => void; } function TooltipIcon(props: ITooltipIcon) { return (
props.onClick(e)}> {/* @ts-ignore */}
); } interface Props { list: List; applySavedSearch: (item: SavedSearch) => void; remove: (itemId: number) => void; editSavedSearch: (item: SavedSearch) => void; } function SavedSearchModal(props: Props) { const { hideModal } = useModal(); const [showModal, setshowModal] = useState(false); const [filterQuery, setFilterQuery] = useState(''); const onClick = (item: SavedSearch, e) => { e.stopPropagation(); props.applySavedSearch(item); hideModal(); }; const onDelete = async (item: SavedSearch, e: MouseEvent) => { e.stopPropagation(); const confirmation = await confirm({ header: 'Confirm', confirmButton: 'Yes, delete', confirmation: 'Are you sure you want to permanently delete this search?', }); if (confirmation) { props.remove(item.searchId); } }; const onEdit = (item: SavedSearch, e: MouseEvent) => { e.stopPropagation(); props.editSavedSearch(item); setTimeout(() => setshowModal(true), 0); }; const shownItems = props.list.filter((item) => item.name.toLocaleLowerCase().includes(filterQuery.toLocaleLowerCase())); return (

Saved Search {props.list.size}

{props.list.size > 1 && (
setFilterQuery(value)} placeholder="Filter by name" />
)} {shownItems.map((item) => (
onClick(item, e)} >
{item.name}
{item.isPublic && (
Team
)}
onEdit(item, e)} title="Rename" />
onDelete(item, e)} title="Delete" />
))} {showModal && setshowModal(false)} rename={true} />}
); } export default connect((state: any) => ({ list: state.getIn(['search', 'list']) }), { applySavedSearch, remove, editSavedSearch })(SavedSearchModal);