Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ColumnFilter focus problem#355

Unanswered
Samet-arslan asked this question inQ&A
Discussion options

import CIcon from '@coreui/icons-react'
import { freeSet } from '@coreui/icons'
import { useCookies } from 'react-cookie'
import { useNavigate, useLocation } from 'react-router-dom'
React.icons = { ...freeSet }

const SmartTableBasicExample = () => {
const [user, setUser] = useState([])
const [details, setDetails] = useState([])
const [modal, setModal] = useState(false)
const [loading, setLoading] = useState(true)
const [fetchTrigger, setFetchTrigger] = useState(0)
const [token] = useCookies(['usertoken'])
const [page, setPage] = useState(1)
const [pages, setPages] = useState(5)
const [itemsPerPage, setItemsPerPage] = useState(5)
const [columnFilterValue, setColumnFilterValue] = useState()
const [tableFilterValue, setTableFilterValue] = useState('')
const [sorterValue, setSorterValue] = useState()
const navigate = useNavigate()
const url = 'http://127.0.0.1:8000/'
const params = {
page,
search: tableFilterValue,
page_size: JSON.stringify(itemsPerPage),
...columnFilterValue,
}

const handleItemPerPageChange = (value) => {
setItemsPerPage(value)
setFetchTrigger(fetchTrigger + 1)
console.log(itemsPerPage)
}
const query = new URLSearchParams(params).toString()

const columns = [
{
key: 'name',
label: 'Name',
_style: { width: '20%' },
},
{
key: 'surname',
label: 'Surname',
_style: { width: '20%' },
},
{
key: 'location_name',
label: 'Location',
_style: {
width: '20%',
color: '#000',
},
},
{
key: 'dept_name',
label: 'Department',
_style: { width: '20%' },
},
{ key: 'sub_name', label: 'Sub Department', _style: { width: '20%' } },
{ key: 'title_name', label: 'Title', _style: { width: '20%' } },
{
key: 'show_details',
label: '',
_style: { width: '1%' },
filter: false,
sorter: false,
},
]

useEffect(() => {
setLoading(true)
const fetchData = () => {
fetch(url + api/users/?${query}, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
Authorization: Token ${token['usertoken']},
},
})
.then(function (data) {
data.json().then((json) => {
setUser(json.results)
setPages(json.pages)
setLoading(false)
})
})
.catch((e) => {
setTimeout(() => {
setFetchTrigger(fetchTrigger + 1)
}, 1000)
})
}

fetchData()
}, [query, fetchTrigger, token])

const positions = [
'static',
'top-left',
'top-center',
'top-right',
'top-full',
'bottom-left',
'bottom-center',
'bottom-right',
'bottom-full',
]

const [toasts, setToasts] = useState([])

const [position, setPosition] = useState('top-right')
const [autohide, setAutohide] = useState(true)
const [autohideValue, setAutohideValue] = useState(2000)
const [closeButton, setCloseButton] = useState(true)
const [fade, setFade] = useState(true)

const toggleDetails = (index) => {
const position = details.indexOf(index)
let newDetails = details.slice()
if (position !== -1) {
newDetails.splice(position, 1)
} else {
newDetails = [...details, index]
}
setDetails(newDetails)
}

const toggle = () => {
setModal(!modal)
}

const addToast = (title, message, type) => {
setToasts([
...toasts,
{
position,
autohide: autohide && autohideValue,
closeButton,
fade,
title,
message,
type,
},
])
}

const toasters = (() => {
return toasts.reduce((toasters, toast) => {
toasters[toast.position] = toasters[toast.position] || []
toasters[toast.position].push(toast)
return toasters
}, {})
})()

useEffect(() => {
console.log('Data', user)
})
return (
<React.Fragment>
<CSmartTable
cleaner
loading={loading}
items={user}
columns={columns}
columnFilter={{
external: true,
columnSorter
columnFilterValue={columnFilterValue}
onColumnFilterChange={(value) => setColumnFilterValue(value)}
tableFilterPlaceholder={'Type Something...'}
tableFilter={{
external: true,
}}
tableHeadProps={{
color: 'success',
}}
tableProps={{
striped: true,
hover: true,
responsive: true,
}}
tableFilterValue={tableFilterValue}
onTableFilterChange={(value) => setTableFilterValue(value)}
sorter
sorterValue={sorterValue}
onSorterValueChange={setSorterValue}
itemsPerPageLabel={'Select Items per Page'}
itemsPerPageOptions={[5, 15, 30, 50, 100, 150]}
itemsPerPageSelect={{ external: false }}
itemsPerPage={itemsPerPage}
onItemsPerPageChange={handleItemPerPageChange}
scopedColumns={{
show_details: (item, index) => (

<CButton
color="success"
onClick={() => {
toggleDetails(index)
}}

<CButton color="info" onClick={() => navigate(/users/${item.pk})}>

        {/* <CButton          color="danger"          onClick={() => {            window.confirm('Silmek istediğinize emin misiniz?') && removeClicked(item)          }}        >          <CIcon icon="cil-trash" custom-size="1xl" />        </CButton> */}      </CButtonGroup>    </td>  ),


</React.Fragment>
)
}

export default SmartTableBasicExample

In that code i have an issue. When i try filter with tablefilter, there is no problem. But when i try filter with column, after each keystroke focus goes out. How to solve that issue ?

You must be logged in to vote

Replies: 0 comments

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Category
Q&A
Labels
None yet
1 participant
@Samet-arslan

[8]ページ先頭

©2009-2025 Movatter.jp