mirror of
https://github.com/ershisan99/flashcards-example-project.git
synced 2025-12-18 05:09:23 +00:00
chore: update deps, apply updated eslint ocnfig
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
import { useState } from 'react'
|
||||
|
||||
import s from './decks-page.module.scss'
|
||||
|
||||
import { Button, Page, Slider, TextField, Typography } from '@/components'
|
||||
import { DeckDialog } from '@/components/decks/deck-dialog'
|
||||
import { DecksTable } from '@/components/decks/decks-table'
|
||||
@@ -21,14 +19,16 @@ import {
|
||||
selectDecksMaxCards,
|
||||
selectDecksMinCards,
|
||||
selectDecksSearch,
|
||||
} from '@/services/decks/decks.selectors.ts'
|
||||
import { decksSlice } from '@/services/decks/decks.slice.ts'
|
||||
} from '@/services/decks/decks.selectors'
|
||||
import { decksSlice } from '@/services/decks/decks.slice'
|
||||
import { useAppDispatch, useAppSelector } from '@/services/store'
|
||||
|
||||
import s from './decks-page.module.scss'
|
||||
|
||||
export const DecksPage = () => {
|
||||
const [showCreateModal, setShowCreateModal] = useState(false)
|
||||
const [deckToDeleteId, setDeckToDeleteId] = useState<string | null>(null)
|
||||
const [deckToEditId, setDeckToEditId] = useState<string | null>(null)
|
||||
const [deckToDeleteId, setDeckToDeleteId] = useState<null | string>(null)
|
||||
const [deckToEditId, setDeckToEditId] = useState<null | string>(null)
|
||||
|
||||
const showEditModal = !!deckToEditId
|
||||
|
||||
@@ -59,11 +59,11 @@ export const DecksPage = () => {
|
||||
const authorId = currentTab === 'my' ? currentUserId : undefined
|
||||
|
||||
const { data: decks } = useGetDecksQuery({
|
||||
currentPage,
|
||||
minCardsCount: minCards,
|
||||
maxCardsCount: maxCards,
|
||||
name: search,
|
||||
authorId,
|
||||
currentPage,
|
||||
maxCardsCount: maxCards,
|
||||
minCardsCount: minCards,
|
||||
name: search,
|
||||
})
|
||||
|
||||
const showConfirmDeleteModal = !!deckToDeleteId
|
||||
@@ -76,71 +76,75 @@ export const DecksPage = () => {
|
||||
const [updateDeck] = useUpdateDeckMutation()
|
||||
const openCreateModal = () => setShowCreateModal(true)
|
||||
|
||||
if (!decks) return <div>loading...</div>
|
||||
if (!decks) {
|
||||
return <div>loading...</div>
|
||||
}
|
||||
|
||||
return (
|
||||
<Page>
|
||||
<DeleteDeckDialog
|
||||
open={showConfirmDeleteModal}
|
||||
onOpenChange={() => setDeckToDeleteId(null)}
|
||||
deckName={deckToDeleteName ?? 'Selected deck'}
|
||||
onCancel={() => setDeckToDeleteId(null)}
|
||||
onConfirm={() => {
|
||||
deleteDeck({ id: deckToDeleteId ?? '' })
|
||||
setDeckToDeleteId(null)
|
||||
}}
|
||||
onOpenChange={() => setDeckToDeleteId(null)}
|
||||
open={showConfirmDeleteModal}
|
||||
/>
|
||||
<DeckDialog
|
||||
open={showEditModal}
|
||||
onOpenChange={() => setDeckToEditId(null)}
|
||||
defaultValues={deckToEdit}
|
||||
key={deckToEditId}
|
||||
onConfirm={data => {
|
||||
if (!deckToEditId) return
|
||||
if (!deckToEditId) {
|
||||
return
|
||||
}
|
||||
|
||||
updateDeck({ id: deckToEditId, ...data })
|
||||
}}
|
||||
defaultValues={deckToEdit}
|
||||
key={deckToEditId}
|
||||
onOpenChange={() => setDeckToEditId(null)}
|
||||
open={showEditModal}
|
||||
/>
|
||||
<div className={s.root}>
|
||||
<div className={s.header}>
|
||||
<Typography variant="large">Decks</Typography>
|
||||
<Typography variant={'large'}>Decks</Typography>
|
||||
<Button onClick={openCreateModal}>Add new deck</Button>
|
||||
<DeckDialog
|
||||
open={showCreateModal}
|
||||
onOpenChange={setShowCreateModal}
|
||||
onConfirm={createDeck}
|
||||
onCancel={() => setShowCreateModal(false)}
|
||||
onConfirm={createDeck}
|
||||
onOpenChange={setShowCreateModal}
|
||||
open={showCreateModal}
|
||||
/>
|
||||
</div>
|
||||
<div className={s.filters}>
|
||||
<TextField placeholder="Search" search value={search} onValueChange={setSearch} />
|
||||
<Tabs value={currentTab} onValueChange={value => setCurrentTab(value as Tab)}>
|
||||
<TextField onValueChange={setSearch} placeholder={'Search'} search value={search} />
|
||||
<Tabs onValueChange={value => setCurrentTab(value as Tab)} value={currentTab}>
|
||||
<TabsList>
|
||||
<TabsTrigger value={'my'}>My decks</TabsTrigger>
|
||||
<TabsTrigger value={'all'}>All decks</TabsTrigger>
|
||||
</TabsList>
|
||||
</Tabs>
|
||||
<Slider
|
||||
max={decks?.maxCardsCount || 0}
|
||||
min={0}
|
||||
onValueChange={setRangeValue}
|
||||
onValueCommit={handleSliderCommitted}
|
||||
value={rangeValue}
|
||||
onValueChange={setRangeValue}
|
||||
min={0}
|
||||
max={decks?.maxCardsCount || 0}
|
||||
/>
|
||||
<Button variant={'secondary'} onClick={resetFilters}>
|
||||
<Button onClick={resetFilters} variant={'secondary'}>
|
||||
Clear filters
|
||||
</Button>
|
||||
</div>
|
||||
<DecksTable
|
||||
currentUserId={currentUserId}
|
||||
decks={decks?.items}
|
||||
onDeleteClick={setDeckToDeleteId}
|
||||
onEditClick={setDeckToEditId}
|
||||
currentUserId={currentUserId}
|
||||
/>
|
||||
<Pagination
|
||||
count={decks?.pagination?.totalPages || 1}
|
||||
page={currentPage}
|
||||
onChange={setCurrentPage}
|
||||
page={currentPage}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
|
||||
Reference in New Issue
Block a user