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
|
// Local libraries
|
||||||
import config from '../../../config'
|
import config from '../../../config'
|
||||||
import TokenCard from './token-card'
|
import TokenCard from './token-card'
|
||||||
|
import FilterDropdown from './filter-dropdown'
|
||||||
|
|
||||||
// Global variables and constants
|
// Global variables and constants
|
||||||
const SERVER = config.dexServer
|
const SERVER = config.dexServer
|
||||||
@@ -35,6 +36,7 @@ function NftsForSale (props) {
|
|||||||
const [dataAreLoaded, setDataAreLoaded] = useState(false)
|
const [dataAreLoaded, setDataAreLoaded] = useState(false)
|
||||||
const [currentPage, setCurrentPage] = useState(0)
|
const [currentPage, setCurrentPage] = useState(0)
|
||||||
const [totalPages, setTotalPages] = useState(0)
|
const [totalPages, setTotalPages] = useState(0)
|
||||||
|
const [selectedFilter, setSelectedFilter] = useState('Art')
|
||||||
|
|
||||||
// Handler for previous page
|
// Handler for previous page
|
||||||
const handlePreviousPage = () => {
|
const handlePreviousPage = () => {
|
||||||
@@ -304,6 +306,9 @@ function NftsForSale (props) {
|
|||||||
<Col>
|
<Col>
|
||||||
<h1>NFTs for Sale</h1>
|
<h1>NFTs for Sale</h1>
|
||||||
</Col>
|
</Col>
|
||||||
|
<Col className='d-flex justify-content-end'>
|
||||||
|
<FilterDropdown selectedFilter={selectedFilter} setSelectedFilter={setSelectedFilter} />
|
||||||
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<Row>
|
<Row>
|
||||||
<Col xs={12} style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}>
|
<Col xs={12} style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}>
|
||||||
@@ -339,7 +344,7 @@ function NftsForSale (props) {
|
|||||||
|
|
||||||
{/* Pagination Controls */}
|
{/* Pagination Controls */}
|
||||||
{offersAreLoaded && totalPages > 1 && (
|
{offersAreLoaded && totalPages > 1 && (
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
position: 'fixed',
|
position: 'fixed',
|
||||||
bottom: '70px',
|
bottom: '70px',
|
||||||
@@ -395,7 +400,7 @@ function NftsForSale (props) {
|
|||||||
← Previous
|
← Previous
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
|
|||||||
@@ -11,14 +11,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import React, { useState, useEffect, useCallback } from 'react'
|
import React, { useState, useEffect, useCallback } from 'react'
|
||||||
import { Container, Spinner, Dropdown } from 'react-bootstrap'
|
import { Container, Spinner } from 'react-bootstrap'
|
||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
||||||
import { faFilter } from '@fortawesome/free-solid-svg-icons'
|
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
// Local libraries
|
// Local libraries
|
||||||
import config from '../../../../config'
|
import config from '../../../../config'
|
||||||
import ContentCard from './content-card'
|
import ContentCard from './content-card'
|
||||||
|
import FilterDropdown from './filter-dropdown'
|
||||||
|
|
||||||
// Global variables and constants
|
// Global variables and constants
|
||||||
const SERVER = config.dexServer
|
const SERVER = config.dexServer
|
||||||
@@ -101,24 +100,10 @@ function ContentCreators (props) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='mb-4 d-flex justify-content-end'>
|
<div className='mb-4 d-flex justify-content-end'>
|
||||||
<Dropdown>
|
<FilterDropdown
|
||||||
<Dropdown.Toggle variant='outline-secondary' className='d-flex align-items-center gap-2'>
|
selectedFilter={selectedFilter}
|
||||||
<FontAwesomeIcon icon={faFilter} />
|
setSelectedFilter={setSelectedFilter}
|
||||||
<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>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!loaded && (
|
{!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