feat: replace tabel select with dropdown
This commit is contained in:
parent
f2510297bc
commit
fb180552cf
@ -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