47ea57080b515e5dad5f658c58feb8944a7e7d61
chmalee
  Thu Jan 29 15:30:26 2026 -0800
Replace clade/assembly dropdowns with a search bar on most CGIs. Add a recents list to hgGateway and to the species bar and to the 'Genomes' dropdown menu. Track recently selected species in localStorage. Add toGenome and fromGenome arguemnts to hubApi/liftOver in order to find appropriate liftover assemblies, refs #36232

diff --git src/hg/js/react/lib/CladeOrgDb.jsx src/hg/js/react/lib/CladeOrgDb.jsx
index 257b83dd3d4..cd45f05fe08 100644
--- src/hg/js/react/lib/CladeOrgDb.jsx
+++ src/hg/js/react/lib/CladeOrgDb.jsx
@@ -1,40 +1,34 @@
 /** @jsx React.DOM */
 /* global ImmutableUpdate, PathUpdate, LabeledSelect */
 var pt = React.PropTypes;
 
 var CladeOrgDb = React.createClass({
 
     // LabeledSelect's for clade, org and db.
 
     mixins: [PathUpdate, ImmutableUpdate],
     // update(path + clade|org|db, newValue) called when user changes clade|org|db
 
     propTypes: { menuData: pt.object.isRequired,  // Immutable.Map { 
                                                   //   clade: x, cladeOptions: (LabeledSelect opts)
                                                   //   org: x, orgOptions: ..., db...}
                },
 
     render: function() {
         var menuData = this.props.menuData;
         var path = this.props.path || [];
         return (
             <div>
-              <LabeledSelect label='group' selected={menuData.get('clade')}
-                             className='sectionItem'
-                             options={menuData.get('cladeOptions')}
-                             update={this.props.update} path={path.concat('clade')} />
-              <LabeledSelect label='genome' selected={menuData.get('org')}
-                             className='sectionItem'
-                             options={menuData.get('orgOptions')}
-                             update={this.props.update} path={path.concat('org')} />
-              <LabeledSelect label='assembly' selected={menuData.get('db')}
-                             className='sectionItem'
-                             options={menuData.get('dbOptions')}
-                             update={this.props.update} path={path.concat('db')} />
+              <SpeciesSearch className="flexContainer"
+                db={menuData.get('db')}
+                org={menuData.get('org')}
+                update={this.props.update}
+                path={path.concat('db')}
+                />
             </div>
         );
     }
 });
 
 // Without this, jshint complains that CladeOrgDb is not used.  Module system would help.
 CladeOrgDb = CladeOrgDb;