mirror of
https://github.com/duckietm/Nitro-Cool-UI.git
synced 2025-06-21 22:36:58 +00:00
Feat: Search selector in inventory : Credits to Jonas!
This commit is contained in:
parent
4b9a783aed
commit
e5035356f1
@ -16,6 +16,11 @@ interface InventoryFurnitureViewProps
|
|||||||
roomPreviewer: RoomPreviewer;
|
roomPreviewer: RoomPreviewer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const FILTER_TYPE_EVERYTHING = 'inventory.filter.option.everything';
|
||||||
|
const FILTER_TYPE_FLOOR = 'inventory.furni.tab.floor';
|
||||||
|
const FILTER_TYPE_WALL = 'inventory.furni.tab.wall';
|
||||||
|
const FILTER_TYPE_WIRED = 'inventory.furni.tab.wired';
|
||||||
|
|
||||||
const attemptPlaceMarketplaceOffer = (groupItem: GroupItem) =>
|
const attemptPlaceMarketplaceOffer = (groupItem: GroupItem) =>
|
||||||
{
|
{
|
||||||
const item = groupItem.getLastItem();
|
const item = groupItem.getLastItem();
|
||||||
@ -43,6 +48,32 @@ export const InventoryFurnitureView: FC<InventoryFurnitureViewProps> = props =>
|
|||||||
const [ filteredGroupItems, setFilteredGroupItems ] = useState<GroupItem[]>([]);
|
const [ filteredGroupItems, setFilteredGroupItems ] = useState<GroupItem[]>([]);
|
||||||
const { groupItems = [], selectedItem = null, activate = null, deactivate = null } = useInventoryFurni();
|
const { groupItems = [], selectedItem = null, activate = null, deactivate = null } = useInventoryFurni();
|
||||||
const { resetItems = null } = useInventoryUnseenTracker();
|
const { resetItems = null } = useInventoryUnseenTracker();
|
||||||
|
const [ filterType = string, setFilterType ] = useState(FILTER_TYPE_EVERYTHING);
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
const filteredItems = groupItems.filter(item =>
|
||||||
|
{
|
||||||
|
const isWallItem = item.isWallItem;
|
||||||
|
const isFloorItem = !isWallItem;
|
||||||
|
const isWiredItem = item.name.startsWith('WIRED');
|
||||||
|
|
||||||
|
switch (filterType)
|
||||||
|
{
|
||||||
|
case FILTER_TYPE_WALL:
|
||||||
|
return isWallItem;
|
||||||
|
case FILTER_TYPE_FLOOR:
|
||||||
|
return isFloorItem;
|
||||||
|
case FILTER_TYPE_WIRED:
|
||||||
|
return isWiredItem;
|
||||||
|
case FILTER_TYPE_EVERYTHING:
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setFilteredGroupItems(filteredItems);
|
||||||
|
}, [ groupItems, filterType ]);
|
||||||
|
|
||||||
useEffect(() =>
|
useEffect(() =>
|
||||||
{
|
{
|
||||||
@ -125,6 +156,11 @@ export const InventoryFurnitureView: FC<InventoryFurnitureViewProps> = props =>
|
|||||||
<Grid>
|
<Grid>
|
||||||
<Column size={ 7 } overflow="hidden">
|
<Column size={ 7 } overflow="hidden">
|
||||||
<InventoryFurnitureSearchView groupItems={ groupItems } setGroupItems={ setFilteredGroupItems } />
|
<InventoryFurnitureSearchView groupItems={ groupItems } setGroupItems={ setFilteredGroupItems } />
|
||||||
|
<select className="form-select form-select-sm" value={ filterType } onChange={ e => setFilterType(e.target.value) }>
|
||||||
|
{ [ FILTER_TYPE_EVERYTHING, FILTER_TYPE_FLOOR, FILTER_TYPE_WALL, FILTER_TYPE_WIRED ].map(type => (
|
||||||
|
<option key={ type } value={ type }>{ LocalizeText(type) }</option>
|
||||||
|
)) }
|
||||||
|
</select>
|
||||||
<AutoGrid columnCount={ 5 }>
|
<AutoGrid columnCount={ 5 }>
|
||||||
{ filteredGroupItems && (filteredGroupItems.length > 0) && filteredGroupItems.map((item, index) => <InventoryFurnitureItemView key={ index } groupItem={ item } />) }
|
{ filteredGroupItems && (filteredGroupItems.length > 0) && filteredGroupItems.map((item, index) => <InventoryFurnitureItemView key={ index } groupItem={ item } />) }
|
||||||
</AutoGrid>
|
</AutoGrid>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user