Sha256: c60e4f4cdb57eb6101df797901e7159c548d07bd853ce3e5cc6e1ff6d1983944

Contents?: true

Size: 1.67 KB

Versions: 19

Compression:

Stored size: 1.67 KB

Contents

import React, { useEffect } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import PropTypes from 'prop-types';
import SearchBar from 'foremanReact/components/SearchBar';
import { getControllerSearchProps } from 'foremanReact/constants';
import { getResults } from 'foremanReact/components/AutoComplete/AutoCompleteActions';
import { TRIGGERS } from 'foremanReact/components/AutoComplete/AutoCompleteConstants';
import { hostsController, hostQuerySearchID } from '../../JobWizardConstants';
import { noop } from '../../../helpers';

export const HostSearch = ({ value, setValue }) => {
  const searchQuery = useSelector(
    state => state.autocomplete?.[hostQuerySearchID]?.searchQuery
  );
  useEffect(() => {
    setValue(searchQuery || '');
  }, [setValue, searchQuery]);
  const dispatch = useDispatch();
  const setSearch = newSearchQuery => {
    dispatch(
      getResults({
        url: '/hosts/auto_complete_search',
        searchQuery: newSearchQuery,
        controller: 'hostsController',
        trigger: TRIGGERS.INPUT_CHANGE,
        id: hostQuerySearchID,
      })
    );
  };

  const props = getControllerSearchProps(hostsController, hostQuerySearchID);
  return (
    <div className="foreman-search-field">
      <SearchBar
        data={{
          ...props,
          autocomplete: {
            id: hostQuerySearchID,
            url: '/hosts/auto_complete_search',
            useKeyShortcuts: true,
          },
        }}
        onSearch={noop}
        initialQuery={value}
        onBookmarkClick={search => setSearch(search)}
      />
    </div>
  );
};

HostSearch.propTypes = {
  value: PropTypes.string.isRequired,
  setValue: PropTypes.func.isRequired,
};

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
foreman_remote_execution-8.3.3 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.3.2 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.3.1 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.3.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.2.1 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.2.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.1.2 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.1.1 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.1.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-7.2.2 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-7.2.1 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-7.2.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-8.0.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-7.1.1 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-7.1.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-7.0.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-6.2.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-6.1.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js
foreman_remote_execution-6.0.0 webpack/JobWizard/steps/HostsAndInputs/HostSearch.js