Merge "Avoid sharing search operators between gr-search-bar instances"
diff --git a/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.ts b/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.ts
index c26afe3..d785a2f 100644
--- a/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.ts
+++ b/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.ts
@@ -39,7 +39,7 @@
 import {MergeabilityComputationBehavior} from '../../../constants/constants';
 
 // Possible static search options for auto complete, without negations.
-const SEARCH_OPERATORS = [
+const SEARCH_OPERATORS: ReadonlyArray<string> = [
   'added:',
   'age:',
   'age:1week', // Give an example age
@@ -117,7 +117,7 @@
 ];
 
 // All of the ops, with corresponding negations.
-const SEARCH_OPERATORS_WITH_NEGATIONS_SET = new Set(
+const SEARCH_OPERATORS_WITH_NEGATIONS_SET: ReadonlySet<string> = new Set(
   SEARCH_OPERATORS.concat(SEARCH_OPERATORS.map(op => `-${op}`))
 );
 
@@ -149,6 +149,8 @@
     return htmlTemplate;
   }
 
+  private searchOperators = new Set(SEARCH_OPERATORS_WITH_NEGATIONS_SET);
+
   /**
    * Fired when a search is committed
    *
@@ -203,7 +205,7 @@
         mergeability ===
           MergeabilityComputationBehavior.REF_UPDATED_AND_CHANGE_REINDEX
       ) {
-        // add 'is:mergeable' to SEARCH_OPERATORS_WITH_NEGATIONS_SET
+        // add 'is:mergeable' to searchOperators
         this._addOperator('is:mergeable');
       }
       if (serverConfig) {
@@ -225,9 +227,9 @@
   }
 
   _addOperator(name: string, include_neg = true) {
-    SEARCH_OPERATORS_WITH_NEGATIONS_SET.add(name);
+    this.searchOperators.add(name);
     if (include_neg) {
-      SEARCH_OPERATORS_WITH_NEGATIONS_SET.add(`-${name}`);
+      this.searchOperators.add(`-${name}`);
     }
   }
 
@@ -264,9 +266,9 @@
     if (!this._inputVal) return;
     const trimmedInput = this._inputVal.trim();
     if (trimmedInput) {
-      const predefinedOpOnlyQuery = [
-        ...SEARCH_OPERATORS_WITH_NEGATIONS_SET,
-      ].some(op => op.endsWith(':') && op === trimmedInput);
+      const predefinedOpOnlyQuery = [...this.searchOperators].some(
+        op => op.endsWith(':') && op === trimmedInput
+      );
       if (predefinedOpOnlyQuery) {
         return;
       }
@@ -319,7 +321,7 @@
 
       default:
         return Promise.resolve(
-          [...SEARCH_OPERATORS_WITH_NEGATIONS_SET]
+          [...this.searchOperators]
             .filter(operator => operator.includes(input))
             .map(operator => {
               return {text: operator};