let { PrimaryButton, Dropdown, IDropdown, DropdownMenuItemType, IDropdownOption, BaseComponent, createRef, Fabric } = window.Fabric; class DropdownBasicExample extends BaseComponent< {}, { selectedItem?: { key: string | number | undefined }; selectedItems: string[]; } > { private _basicDropdown = createRef(); constructor(props: {}) { super(props); this.state = { selectedItem: undefined, selectedItems: [] }; } public render() { const { selectedItem, selectedItems } = this.state; return (
); } public changeState = (event: React.FormEvent, item: IDropdownOption): void => { console.log('here is the things updating...' + item.key + ' ' + item.text + ' ' + item.selected); this.setState({ selectedItem: item }); }; public onChangeMultiSelect = (event: React.FormEvent, item: IDropdownOption): void => { const updatedSelectedItem = this.state.selectedItems ? this.copyArray(this.state.selectedItems) : []; if (item.selected) { // add the option if it's checked updatedSelectedItem.push(item.key); } else { // remove the option if it's unchecked const currIndex = updatedSelectedItem.indexOf(item.key); if (currIndex > -1) { updatedSelectedItem.splice(currIndex, 1); } } this.setState({ selectedItems: updatedSelectedItem }); }; public copyArray = (array: any[]): any[] => { const newArray: any[] = []; for (let i = 0; i < array.length; i++) { newArray[i] = array[i]; } return newArray; }; private _onSetFocusButtonClicked = (): void => { if (this._basicDropdown.current) { this._basicDropdown.current.focus(true); } }; private _log(str: string): () => void { return (): void => { console.log(str); }; } } ReactDOM.render(, document.getElementById('content'));