feat: replace tabel select with dropdown
This commit is contained in:
		
							parent
							
								
									2d116ab61d
								
							
						
					
					
						commit
						7168dc835d
					
				@ -1,5 +1,5 @@
 | 
				
			|||||||
import React, { Component } from 'react'
 | 
					import React, { Component } from 'react'
 | 
				
			||||||
import { Label, Icon } from 'semantic-ui-react'
 | 
					import { Dropdown } from 'semantic-ui-react'
 | 
				
			||||||
import './CreateNodule.css'
 | 
					import './CreateNodule.css'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Tables from '../../Models/Tables'
 | 
					import Tables from '../../Models/Tables'
 | 
				
			||||||
@ -21,41 +21,36 @@ class TableSelect extends Component {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  getSelectedTableLabels = () => this.state.selectedTablesLabels
 | 
					  getSelectedTableLabels = () => this.state.selectedTablesLabels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  toggleSelect = label => {
 | 
					  toggleSelect = (event, element) => {
 | 
				
			||||||
    const { selectedTablesLabels } = this.state
 | 
					    this.setState({ selectedTablesLabels: element.value })
 | 
				
			||||||
    let newselectedTablesLabels = selectedTablesLabels
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    const selectedIndex = selectedTablesLabels.findIndex(selected => selected === label)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (selectedIndex === -1) newselectedTablesLabels.push(label)
 | 
					 | 
				
			||||||
    else if (selectedIndex === 0 && selectedTablesLabels.length === 1) newselectedTablesLabels = []
 | 
					 | 
				
			||||||
    else newselectedTablesLabels.splice(selectedIndex, 1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    this.setState({ selectedTablesLabels: newselectedTablesLabels })
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  updateTableList = () => {
 | 
					  updateTableList = () => {
 | 
				
			||||||
    this.setState({tables: this.tables.getCollectionProps()})
 | 
					    this.setState({tables: this.tables.getCollectionProps()})
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  renderTableLabels = () => {
 | 
					  renderTableDropdownOptions = () => {
 | 
				
			||||||
    const { selectedTablesLabels, tables } = this.state
 | 
					    const { tables } = this.state
 | 
				
			||||||
    const tableLabelElements = tables.map(t => {
 | 
					    const options = tables.map(t => {
 | 
				
			||||||
      const isSelected = selectedTablesLabels.includes(t.label)
 | 
					      return {key: t.label, value: t.label, text: t.label}
 | 
				
			||||||
      return (
 | 
					 | 
				
			||||||
        <Label key={t.label} onClick={() => this.toggleSelect(t.label)} color={isSelected ? 'blue' : 'grey'} style={{ cursor: 'pointer' }}>
 | 
					 | 
				
			||||||
          {t.label}
 | 
					 | 
				
			||||||
          { isSelected ? <Icon name='delete' /> : '' }
 | 
					 | 
				
			||||||
        </Label>
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    return tableLabelElements
 | 
					    return options
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  render = () => {
 | 
					  render = () => {
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <div className='TableSelect'>
 | 
					      <div className='TableSelect'>
 | 
				
			||||||
        { this.renderTableLabels() }
 | 
					        <Dropdown
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
 | 
					          placeholder='Included Tables'
 | 
				
			||||||
 | 
					          header='Included Tables'
 | 
				
			||||||
 | 
					          fluid
 | 
				
			||||||
 | 
					          multiple
 | 
				
			||||||
 | 
					          search
 | 
				
			||||||
 | 
					          selection
 | 
				
			||||||
 | 
					          options={this.renderTableDropdownOptions()}
 | 
				
			||||||
 | 
					          onChange={this.toggleSelect}
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user