Sha256: 7d918b65a53a1558ab6923c7aac0998ca7979718282283b507996159c3850971

Contents?: true

Size: 1.7 KB

Versions: 27

Compression:

Stored size: 1.7 KB

Contents

import React, { useState } from 'react';
import { FormGroup, Select, SelectOption } from '@patternfly/react-core';
import PropTypes from 'prop-types';

export const SelectField = ({
  labelInfo,
  label,
  fieldId,
  options,
  value,
  setValue,
  labelIcon,
  isRequired,
  ...props
}) => {
  const onSelect = (event, selection) => {
    setValue(selection);
    setIsOpen(false);
  };
  const [isOpen, setIsOpen] = useState(false);
  const selectOptions = [
    !isRequired && (
      <SelectOption key={0} value="">
        <p> </p>
      </SelectOption>
    ),
    ...options.map((option, index) => (
      <SelectOption key={index + 1} value={option} />
    )),
  ];
  return (
    <FormGroup
      labelInfo={labelInfo}
      label={label}
      fieldId={fieldId}
      labelIcon={labelIcon}
      isRequired={isRequired}
    >
      <Select
        selections={value}
        onSelect={onSelect}
        onToggle={setIsOpen}
        isOpen={isOpen}
        className="without_select2"
        maxHeight="45vh"
        placeholderText=" " // To prevent showing first option as selected
        aria-labelledby={fieldId}
        toggleAriaLabel={`${label} toggle`}
        {...props}
      >
        {selectOptions.filter(option => option)}
      </Select>
    </FormGroup>
  );
};
SelectField.propTypes = {
  label: PropTypes.string,
  labelInfo: PropTypes.node,
  fieldId: PropTypes.string.isRequired,
  options: PropTypes.array,
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
  setValue: PropTypes.func.isRequired,
  labelIcon: PropTypes.node,
  isRequired: PropTypes.bool,
};

SelectField.defaultProps = {
  label: null,
  labelInfo: null,
  options: [],
  labelIcon: null,
  value: null,
  isRequired: false,
};

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
foreman_remote_execution-12.0.7 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-10.1.3 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-13.0.0 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-12.0.5 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-12.0.4 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-12.0.1 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-12.0.2 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-11.1.3 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-10.1.2 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-12.0.0 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-10.1.1 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-11.1.1 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-11.1.0 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-10.1.0 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-8.3.3 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-8.3.2 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-11.0.0 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-10.0.7 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-8.3.1 webpack/JobWizard/steps/form/SelectField.js
foreman_remote_execution-10.0.6 webpack/JobWizard/steps/form/SelectField.js