From 14de8334ba337ec03e93f381bc36cbc405c34956 Mon Sep 17 00:00:00 2001
From: Alexander Platov <sas_lord@mail.ru>
Date: Thu, 23 Jun 2022 09:04:51 +0300
Subject: [PATCH] Tracker: issues search (#2129)

Signed-off-by: Alexander Platov <sas_lord@mail.ru>
---
 .../src/components/BoardHeader.svelte               |  2 +-
 .../src/components/issues/IssuesHeader.svelte       |  4 +++-
 .../src/components/issues/IssuesView.svelte         | 13 ++++++++++---
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/plugins/board-resources/src/components/BoardHeader.svelte b/plugins/board-resources/src/components/BoardHeader.svelte
index f6ec76f224..6ebb58c615 100644
--- a/plugins/board-resources/src/components/BoardHeader.svelte
+++ b/plugins/board-resources/src/components/BoardHeader.svelte
@@ -34,7 +34,7 @@
   })
 </script>
 
-<div class="ac-header divide full">
+<div class="ac-header full">
   {#if space}
     <div class="ac-header__wrap-description">
       <div class="ac-header__wrap-title" on:click>
diff --git a/plugins/tracker-resources/src/components/issues/IssuesHeader.svelte b/plugins/tracker-resources/src/components/issues/IssuesHeader.svelte
index e758db9a1d..e15150b23e 100644
--- a/plugins/tracker-resources/src/components/issues/IssuesHeader.svelte
+++ b/plugins/tracker-resources/src/components/issues/IssuesHeader.svelte
@@ -1,5 +1,5 @@
 <script lang="ts">
-  import { Icon, TabList } from '@anticrm/ui'
+  import { Icon, TabList, SearchEdit } from '@anticrm/ui'
   import { Viewlet } from '@anticrm/view'
   import { FilterButton, setActiveViewletId } from '@anticrm/view-resources'
   import tracker from '../../plugin'
@@ -9,6 +9,7 @@
   export let viewlet: WithLookup<Viewlet> | undefined
   export let viewlets: WithLookup<Viewlet>[] = []
   export let label: string
+  export let search: string
 
   $: viewslist = viewlets.map((views) => {
     return {
@@ -25,6 +26,7 @@
     <span class="ac-header__title">{label}</span>
     <div class="ml-4"><FilterButton _class={tracker.class.Issue} /></div>
   </div>
+  <SearchEdit bind:value={search} on:change={() => {}} />
   {#if viewlets.length > 1}
     <TabList
       items={viewslist}
diff --git a/plugins/tracker-resources/src/components/issues/IssuesView.svelte b/plugins/tracker-resources/src/components/issues/IssuesView.svelte
index 5f94a25bb0..e0e36345c6 100644
--- a/plugins/tracker-resources/src/components/issues/IssuesView.svelte
+++ b/plugins/tracker-resources/src/components/issues/IssuesView.svelte
@@ -19,7 +19,14 @@
   export let panelWidth: number = 0
 
   let viewlet: WithLookup<Viewlet> | undefined = undefined
-  let resultQuery: DocumentQuery<Issue> = {}
+  let search = ''
+  let searchQuery: DocumentQuery<Issue> = { ...query }
+  function updateSearchQuery (search: string): void {
+    searchQuery = search === '' ? { ...query } : { ...query, $search: search }
+  }
+  $: updateSearchQuery(search)
+  $: if (query) updateSearchQuery(search)
+  let resultQuery: DocumentQuery<Issue> = { ...searchQuery }
 
   const client = getClient()
 
@@ -63,7 +70,7 @@
 </script>
 
 {#if currentSpace}
-  <IssuesHeader {viewlets} {label} bind:viewlet>
+  <IssuesHeader {viewlets} {label} bind:viewlet bind:search>
     <svelte:fragment slot="extra">
       {#if asideFloat && $$slots.aside}
         <Button
@@ -78,7 +85,7 @@
       {/if}
     </svelte:fragment>
   </IssuesHeader>
-  <FilterBar _class={tracker.class.Issue} {query} on:change={(e) => (resultQuery = e.detail)} />
+  <FilterBar _class={tracker.class.Issue} query={searchQuery} on:change={(e) => (resultQuery = e.detail)} />
   <div class="flex w-full h-full clear-mins">
     {#if viewlet}
       <IssuesContent {currentSpace} {viewlet} query={resultQuery} />