mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex-taker-v2.git
synced 2026-09-21 16:52:01 -07:00
Merge pull request #68 from Permissionless-Software-Foundation/dh-categories-ui
feat(NFTs): Added categories dropdown to nfts page
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import React from 'react'
|
||||
import { Dropdown } from 'react-bootstrap'
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
||||
import { faFilter } from '@fortawesome/free-solid-svg-icons'
|
||||
|
||||
function FilterDropdown (props) {
|
||||
const { selectedFilter, setSelectedFilter } = props
|
||||
|
||||
return (
|
||||
<Dropdown>
|
||||
<Dropdown.Toggle
|
||||
variant='outline-secondary'
|
||||
className='d-flex align-items-center justify-content-around gap-2 mt-3'
|
||||
style={{ minWidth: '150px' }}
|
||||
>
|
||||
<FontAwesomeIcon icon={faFilter} />
|
||||
<span>{selectedFilter}</span>
|
||||
</Dropdown.Toggle>
|
||||
|
||||
<Dropdown.Menu>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Art')}>
|
||||
Art
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Video')}>
|
||||
Video
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Writing')}>
|
||||
Writing
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Download')}>
|
||||
Download
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Misc')}>
|
||||
Misc
|
||||
</Dropdown.Item>
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
)
|
||||
}
|
||||
|
||||
export default FilterDropdown
|
||||
@@ -20,6 +20,7 @@ import { faRedo } from '@fortawesome/free-solid-svg-icons'
|
||||
// Local libraries
|
||||
import config from '../../../config'
|
||||
import TokenCard from './token-card'
|
||||
import FilterDropdown from './filter-dropdown'
|
||||
|
||||
// Global variables and constants
|
||||
const SERVER = config.dexServer
|
||||
@@ -35,6 +36,7 @@ function NftsForSale (props) {
|
||||
const [dataAreLoaded, setDataAreLoaded] = useState(false)
|
||||
const [currentPage, setCurrentPage] = useState(0)
|
||||
const [totalPages, setTotalPages] = useState(0)
|
||||
const [selectedFilter, setSelectedFilter] = useState('Art')
|
||||
|
||||
// Handler for previous page
|
||||
const handlePreviousPage = () => {
|
||||
@@ -304,6 +306,9 @@ function NftsForSale (props) {
|
||||
<Col>
|
||||
<h1>NFTs for Sale</h1>
|
||||
</Col>
|
||||
<Col className='d-flex justify-content-end'>
|
||||
<FilterDropdown selectedFilter={selectedFilter} setSelectedFilter={setSelectedFilter} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row>
|
||||
<Col xs={12} style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}>
|
||||
@@ -339,7 +344,7 @@ function NftsForSale (props) {
|
||||
|
||||
{/* Pagination Controls */}
|
||||
{offersAreLoaded && totalPages > 1 && (
|
||||
<div
|
||||
<div
|
||||
style={{
|
||||
position: 'fixed',
|
||||
bottom: '70px',
|
||||
@@ -395,7 +400,7 @@ function NftsForSale (props) {
|
||||
← Previous
|
||||
</Button>
|
||||
|
||||
<div
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
|
||||
@@ -11,14 +11,13 @@
|
||||
*/
|
||||
|
||||
import React, { useState, useEffect, useCallback } from 'react'
|
||||
import { Container, Spinner, Dropdown } from 'react-bootstrap'
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
||||
import { faFilter } from '@fortawesome/free-solid-svg-icons'
|
||||
import { Container, Spinner } from 'react-bootstrap'
|
||||
import axios from 'axios'
|
||||
|
||||
// Local libraries
|
||||
import config from '../../../../config'
|
||||
import ContentCard from './content-card'
|
||||
import FilterDropdown from './filter-dropdown'
|
||||
|
||||
// Global variables and constants
|
||||
const SERVER = config.dexServer
|
||||
@@ -101,24 +100,10 @@ function ContentCreators (props) {
|
||||
</div>
|
||||
|
||||
<div className='mb-4 d-flex justify-content-end'>
|
||||
<Dropdown>
|
||||
<Dropdown.Toggle variant='outline-secondary' className='d-flex align-items-center gap-2'>
|
||||
<FontAwesomeIcon icon={faFilter} />
|
||||
<span>{selectedFilter}</span>
|
||||
</Dropdown.Toggle>
|
||||
|
||||
<Dropdown.Menu>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Most Followers')}>
|
||||
Most Followers
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Most Tokens')}>
|
||||
Most Tokens
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Most Likes')}>
|
||||
Most Likes
|
||||
</Dropdown.Item>
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
<FilterDropdown
|
||||
selectedFilter={selectedFilter}
|
||||
setSelectedFilter={setSelectedFilter}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{!loaded && (
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import React from 'react'
|
||||
import { Dropdown } from 'react-bootstrap'
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
||||
import { faFilter } from '@fortawesome/free-solid-svg-icons'
|
||||
|
||||
function FilterDropdown (props) {
|
||||
const { selectedFilter, setSelectedFilter } = props
|
||||
|
||||
return (
|
||||
<Dropdown>
|
||||
<Dropdown.Toggle variant='outline-secondary' className='d-flex align-items-center gap-2'>
|
||||
<FontAwesomeIcon icon={faFilter} />
|
||||
<span>{selectedFilter}</span>
|
||||
</Dropdown.Toggle>
|
||||
|
||||
<Dropdown.Menu>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Most Followers')}>
|
||||
Most Followers
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Most Tokens')}>
|
||||
Most Tokens
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item onClick={() => setSelectedFilter('Most Likes')}>
|
||||
Most Likes
|
||||
</Dropdown.Item>
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
)
|
||||
}
|
||||
|
||||
export default FilterDropdown
|
||||
Reference in New Issue
Block a user