'use client'; import React, { useState, useEffect } from 'react'; import { DataView, DataViewLayoutOptions } from 'primereact/dataview'; import { Button } from 'primereact/button'; import { Dropdown, DropdownChangeEvent } from 'primereact/dropdown'; import { Rating } from 'primereact/rating'; import { PickList } from 'primereact/picklist'; import { OrderList } from 'primereact/orderlist'; import { ProductService } from '../../../../demo/service/ProductService'; import { InputText } from 'primereact/inputtext'; import type { Demo } from '@/types'; const ListDemo = () => { const listValue = [ { name: 'San Francisco', code: 'SF' }, { name: 'London', code: 'LDN' }, { name: 'Paris', code: 'PRS' }, { name: 'Istanbul', code: 'IST' }, { name: 'Berlin', code: 'BRL' }, { name: 'Barcelona', code: 'BRC' }, { name: 'Rome', code: 'RM' } ]; const [picklistSourceValue, setPicklistSourceValue] = useState(listValue); const [picklistTargetValue, setPicklistTargetValue] = useState([]); const [orderlistValue, setOrderlistValue] = useState(listValue); const [dataViewValue, setDataViewValue] = useState([]); const [globalFilterValue, setGlobalFilterValue] = useState(''); const [filteredValue, setFilteredValue] = useState(null); const [layout, setLayout] = useState<'grid' | 'list' | (string & Record)>('grid'); const [sortKey, setSortKey] = useState(null); const [sortOrder, setSortOrder] = useState<0 | 1 | -1 | null>(null); const [sortField, setSortField] = useState(''); const sortOptions = [ { label: 'Price High to Low', value: '!price' }, { label: 'Price Low to High', value: 'price' } ]; useEffect(() => { ProductService.getProducts().then((data) => setDataViewValue(data)); setGlobalFilterValue(''); }, []); useEffect(() => { ProductService.getProducts().then((data) => setDataViewValue(data)); setGlobalFilterValue(''); }, []); const onFilter = (e: React.ChangeEvent) => { const value = e.target.value; setGlobalFilterValue(value); if (value.length === 0) { setFilteredValue(null); } else { const filtered = dataViewValue?.filter((product) => { const productNameLowercase = product.name.toLowerCase(); const searchValueLowercase = value.toLowerCase(); return productNameLowercase.includes(searchValueLowercase); }); setFilteredValue(filtered); } }; const onSortChange = (event: DropdownChangeEvent) => { const value = event.value; if (value.indexOf('!') === 0) { setSortOrder(-1); setSortField(value.substring(1, value.length)); setSortKey(value); } else { setSortOrder(1); setSortField(value); setSortKey(value); } }; const dataViewHeader = (
setLayout(e.value)} />
); const dataviewListItem = (data: Demo.Product) => { return (
{data.name}
{data.name}
{data.description}
{data.category}
${data.price} {data.inventoryStatus}
); }; const dataviewGridItem = (data: Demo.Product) => { return (
{data.category}
{data.inventoryStatus}
{data.name}
{data.name}
{data.description}
${data.price}
); }; const itemTemplate = (data: Demo.Product, layout: 'grid' | 'list' | (string & Record)) => { if (!data) { return; } if (layout === 'list') { return dataviewListItem(data); } else if (layout === 'grid') { return dataviewGridItem(data); } }; return (
DataView
PickList
{item.name}
} onChange={(e) => { setPicklistSourceValue(e.source); setPicklistTargetValue(e.target); }} sourceStyle={{ height: '200px' }} targetStyle={{ height: '200px' }} >
OrderList
{item.name}
} onChange={(e) => setOrderlistValue(e.value)}>
); }; export default ListDemo;