ComboBox

link - developer.microsoft.com/en-us/fluentui#/controls/web/combobox
This control combines a text field and a drop-down allowing the user to select an option from a list or enter their own choice.

import * as React from 'react';    
import { ComboBox, IComboBoxProps, IComboBoxStyles} from '@fluentui/react';

interface IProps_ComboBoxExample {
}
interface IState_ComboBoxExample {
}

export class ComboBoxExample extends React.Component<IProps_ComboBoxExample , IState_ComboBoxExample> {
  constructor(props: IProps_ComboBoxExample) {
    super(props);
 
  }

  render() {

    return (
      <div>

<ComboBox
   label="Favourite Fruit:"
   useComboBoxAsMenuWidth={ true }

   options={
   [
      { key: 'fruitsHeader', text: 'Fruits' },
      { key: 'apple', text: 'Apple' },
      { key: 'banana', text: 'Banana' },
      { key: 'carrot', text: 'Carrot' },
      { key: 'lettuce', text: 'Lettuce' }
   ]
}
/>

      </div>
    );
  }

}


import * as React from 'react';  
import { ComboBox, IComboBoxOption} from '@fluentui/react';

import { SelectableOptionMenuItemType } from 'office-ui-fabric-react/lib/utilities/selectableOption/SelectableOption.Props';

export class ComboBoxBasicExample extends React.Component<any, any> {

  constructor() {
    super();
  }

  render() {

    return (
      <div className='ms-ComboBoxBasicExample'>

        <ComboBox
          defaultSelectedKey='B'
          placeholder="Select or type an option"
          label='label text'
          id='Basicdrop1'
          ariaLabel='Basic ComboBox example'
          allowFreeform={ true }
          autoComplete='on'
          options={
            [
              { key: 'A', text: 'Option a' },
              { key: 'B', text: 'Option b' },
              { key: 'C', text: 'Option c' },
            ]
          }
        />

        <ComboBox
          defaultSelectedKey='C'
          label='label text'
          id='Basicdrop2'
          ariaLabel='Basic ComboBox example'
          allowFreeform={ true }
          autoComplete='on'
          onResolveOptions={ this._getOptions }
        />

      </div>

    );
  }

  _getOptions(currentOptions: IComboBoxOption[]): IComboBoxOption[] {

    if (this.state.options.length > 0) {
      return this.state.options;
    }

    let newOptions =
      [
        { key: 'H', text: 'Option h' },
        { key: 'I', text: 'Option i' },
        { key: 'J', text: 'Option j' }
      ];
    this.setState({
      options: newOptions,
      selectedOptionKey: 'C1',
      value: null
    });

    return newOptions;
  }

  _onChanged(option: IComboBoxOption, index: number, value: string) {
    if (option !== null) {
      this.setState({
        selectedOptionKey: option.key,
        value: null
      });
    } else if (index !== null && index >= 0 && index < this.state.options.length) {
      this.setState({
        selectedOptionKey: this.state.options[index].key,
        value: null
      });
    } else if (value !== null) {
      let newOption: IComboBoxOption = { key: value, text: value };

      this.setState({
        options: [...this.state.options, newOption],
        selectedOptionKey: newOption.key,
        value: null
      });
    }
  }
}


© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext