diff --git a/src/views/inventory/views/badge/InventoryBadgeView.tsx b/src/views/inventory/views/badge/InventoryBadgeView.tsx index 1e02c3b0..47f2fe62 100644 --- a/src/views/inventory/views/badge/InventoryBadgeView.tsx +++ b/src/views/inventory/views/badge/InventoryBadgeView.tsx @@ -2,6 +2,8 @@ import { RequestBadgesComposer } from '@nitrots/nitro-renderer'; import { FC, useEffect } from 'react'; import { LocalizeBadgeName, LocalizeText } from '../../../../api'; import { SendMessageHook } from '../../../../hooks/messages/message-event'; +import { NitroLayoutButton, NitroLayoutFlex } from '../../../../layout'; +import { NitroLayoutBase } from '../../../../layout/base'; import { NitroLayoutFlexColumn } from '../../../../layout/flex-column/NitroLayoutFlexColumn'; import { NitroLayoutGridColumn } from '../../../../layout/grid/column/NitroLayoutGridColumn'; import { NitroLayoutGrid } from '../../../../layout/grid/NitroLayoutGrid'; @@ -83,18 +85,18 @@ export const InventoryBadgeView: FC = props => -
{ LocalizeText('inventory.badges.activebadges') }
+ { LocalizeText('inventory.badges.activebadges') }
{ badge && (badge.length > 0) && -
-
+ + -
{ LocalizeBadgeName(badge) }
-
-
- + { LocalizeBadgeName(badge) } + + + { LocalizeText(isWearingBadge(badge) ? 'inventory.badges.clearbadge' : 'inventory.badges.wearbadge') }
}
diff --git a/src/views/inventory/views/bot/InventoryBotView.tsx b/src/views/inventory/views/bot/InventoryBotView.tsx index 13e985af..59c02571 100644 --- a/src/views/inventory/views/bot/InventoryBotView.tsx +++ b/src/views/inventory/views/bot/InventoryBotView.tsx @@ -2,6 +2,8 @@ import { GetBotInventoryComposer, RoomObjectVariable } from '@nitrots/nitro-rend import { FC, useEffect } from 'react'; import { GetRoomEngine, LocalizeText } from '../../../../api'; import { SendMessageHook } from '../../../../hooks/messages/message-event'; +import { NitroLayoutButton } from '../../../../layout'; +import { NitroLayoutBase } from '../../../../layout/base'; import { NitroLayoutFlexColumn } from '../../../../layout/flex-column/NitroLayoutFlexColumn'; import { NitroLayoutGridColumn } from '../../../../layout/grid/column/NitroLayoutGridColumn'; import { NitroLayoutGrid } from '../../../../layout/grid/NitroLayoutGrid'; @@ -9,6 +11,7 @@ import { RoomPreviewerView } from '../../../shared/room-previewer/RoomPreviewerV import { attemptBotPlacement } from '../../common/BotUtilities'; import { useInventoryContext } from '../../context/InventoryContext'; import { InventoryBotActions } from '../../reducers/InventoryBotReducer'; +import { InventoryCategoryEmptyView } from '../category-empty/InventoryCategoryEmptyView'; import { InventoryBotViewProps } from './InventoryBotView.types'; import { InventoryBotResultsView } from './results/InventoryBotResultsView'; @@ -65,22 +68,7 @@ export const InventoryBotView: FC = props => roomPreviewer.addAvatarIntoRoom(botData.figure, 0); }, [ roomPreviewer, botItem ]); - if(!botItems || !botItems.length) - { - return ( -
-
-
-
-
-
- { LocalizeText('inventory.empty.bots.title') } -
-
{ LocalizeText('inventory.empty.bots.desc') }
-
-
- ); - } + if(!botItems || !botItems.length) return ; return ( @@ -93,8 +81,11 @@ export const InventoryBotView: FC = props => { botItem && -
{ botItem.botData.name }
- { !!roomSession && } + { botItem.botData.name } + { !!roomSession && + attemptBotPlacement(botItem) }> + { LocalizeText('inventory.furni.placetoroom') } + }
}
diff --git a/src/views/inventory/views/category-empty/InventoryCategoryEmptyView.tsx b/src/views/inventory/views/category-empty/InventoryCategoryEmptyView.tsx new file mode 100644 index 00000000..2fe5b4aa --- /dev/null +++ b/src/views/inventory/views/category-empty/InventoryCategoryEmptyView.tsx @@ -0,0 +1,21 @@ +import { FC } from 'react'; +import { NitroLayoutGrid, NitroLayoutGridColumn } from '../../../../layout'; +import { NitroLayoutBase } from '../../../../layout/base'; +import { InventoryCategoryEmptyViewProps } from './InventoryCategoryEmptyView.types'; + +export const InventoryCategoryEmptyView: FC = props => +{ + const { title = '', desc = '', ...rest } = props; + + return ( + + +
+ + + { title } + { desc } + + + ); +} diff --git a/src/views/inventory/views/category-empty/InventoryCategoryEmptyView.types.ts b/src/views/inventory/views/category-empty/InventoryCategoryEmptyView.types.ts new file mode 100644 index 00000000..0d57173b --- /dev/null +++ b/src/views/inventory/views/category-empty/InventoryCategoryEmptyView.types.ts @@ -0,0 +1,7 @@ +import { NitroLayoutGridProps } from '../../../../layout'; + +export interface InventoryCategoryEmptyViewProps extends NitroLayoutGridProps +{ + title: string; + desc: string; +} diff --git a/src/views/inventory/views/furniture/InventoryFurnitureView.tsx b/src/views/inventory/views/furniture/InventoryFurnitureView.tsx index 06518c2f..05e3afb7 100644 --- a/src/views/inventory/views/furniture/InventoryFurnitureView.tsx +++ b/src/views/inventory/views/furniture/InventoryFurnitureView.tsx @@ -2,6 +2,8 @@ import { FurnitureListComposer, RoomObjectVariable, Vector3d } from '@nitrots/ni import { FC, useEffect, useState } from 'react'; import { GetRoomEngine, GetSessionDataManager, LocalizeText } from '../../../../api'; import { SendMessageHook } from '../../../../hooks/messages'; +import { NitroLayoutButton } from '../../../../layout'; +import { NitroLayoutBase } from '../../../../layout/base'; import { NitroLayoutFlexColumn } from '../../../../layout/flex-column/NitroLayoutFlexColumn'; import { NitroLayoutGridColumn } from '../../../../layout/grid/column/NitroLayoutGridColumn'; import { NitroLayoutGrid } from '../../../../layout/grid/NitroLayoutGrid'; @@ -13,6 +15,7 @@ import { attemptItemPlacement } from '../../common/FurnitureUtilities'; import { GroupItem } from '../../common/GroupItem'; import { useInventoryContext } from '../../context/InventoryContext'; import { InventoryFurnitureActions } from '../../reducers/InventoryFurnitureReducer'; +import { InventoryCategoryEmptyView } from '../category-empty/InventoryCategoryEmptyView'; import { InventoryFurnitureViewProps } from './InventoryFurnitureView.types'; import { InventoryFurnitureResultsView } from './results/InventoryFurnitureResultsView'; import { InventoryFurnitureSearchView } from './search/InventoryFurnitureSearchView'; @@ -101,22 +104,7 @@ export const InventoryFurnitureView: FC = props => } }, [ roomPreviewer, groupItem ]); - if(!groupItems || !groupItems.length) - { - return ( -
-
-
-
-
-
- { LocalizeText('inventory.empty.title') } -
-
{ LocalizeText('inventory.empty.desc') }
-
-
- ); - } + if(!groupItems || !groupItems.length) return ; return ( @@ -128,19 +116,21 @@ export const InventoryFurnitureView: FC = props => { groupItem && groupItem.stuffData.isUnique && -
+ -
} + } { (groupItem && groupItem.stuffData.rarityLevel > -1) && -
+ -
} + }
{ groupItem && -
{ groupItem.name }
+ { groupItem.name } { !!roomSession && - } + attemptItemPlacement(groupItem) }> + { LocalizeText('inventory.furni.placetoroom') } + }
}
diff --git a/src/views/inventory/views/pet/InventoryPetView.tsx b/src/views/inventory/views/pet/InventoryPetView.tsx index bcfcc715..b9949c95 100644 --- a/src/views/inventory/views/pet/InventoryPetView.tsx +++ b/src/views/inventory/views/pet/InventoryPetView.tsx @@ -2,6 +2,7 @@ import { RequestPetsComposer, RoomObjectVariable } from '@nitrots/nitro-renderer import { FC, useEffect } from 'react'; import { GetRoomEngine, LocalizeText } from '../../../../api'; import { SendMessageHook } from '../../../../hooks/messages/message-event'; +import { NitroLayoutBase } from '../../../../layout/base'; import { NitroLayoutFlexColumn } from '../../../../layout/flex-column/NitroLayoutFlexColumn'; import { NitroLayoutGridColumn } from '../../../../layout/grid/column/NitroLayoutGridColumn'; import { NitroLayoutGrid } from '../../../../layout/grid/NitroLayoutGrid'; @@ -9,6 +10,7 @@ import { RoomPreviewerView } from '../../../shared/room-previewer/RoomPreviewerV import { attemptPetPlacement } from '../../common/PetUtilities'; import { useInventoryContext } from '../../context/InventoryContext'; import { InventoryPetActions } from '../../reducers/InventoryPetReducer'; +import { InventoryCategoryEmptyView } from '../category-empty/InventoryCategoryEmptyView'; import { InventoryPetViewProps } from './InventoryPetView.types'; import { InventoryPetResultsView } from './results/InventoryPetResultsView'; @@ -65,22 +67,7 @@ export const InventoryPetView: FC = props => roomPreviewer.addPetIntoRoom(petData.figureString); }, [ roomPreviewer, petItem ]); - if(!petItems || !petItems.length) - { - return ( -
-
-
-
-
-
- { LocalizeText('inventory.empty.pets.title') } -
-
{ LocalizeText('inventory.empty.pets.desc') }
-
-
- ); - } + if(!petItems || !petItems.length) return ; return ( @@ -93,7 +80,7 @@ export const InventoryPetView: FC = props => { petItem && -
{ petItem.petData.name }
+ { petItem.petData.name } { !!roomSession && }
} diff --git a/src/views/inventory/views/trade/InventoryTradeView.tsx b/src/views/inventory/views/trade/InventoryTradeView.tsx index c5f9b47d..f376e890 100644 --- a/src/views/inventory/views/trade/InventoryTradeView.tsx +++ b/src/views/inventory/views/trade/InventoryTradeView.tsx @@ -2,8 +2,12 @@ import { FurnitureListComposer, IObjectData, TradingAcceptComposer, TradingConfi import { FC, useCallback, useEffect, useMemo, useState } from 'react'; import { LocalizeText } from '../../../../api'; import { SendMessageHook } from '../../../../hooks/messages'; +import { NitroLayoutButton, NitroLayoutFlex, NitroLayoutFlexColumn } from '../../../../layout'; +import { NitroLayoutBase } from '../../../../layout/base'; import { NitroCardGridItemView } from '../../../../layout/card/grid/item/NitroCardGridItemView'; import { NitroCardGridView } from '../../../../layout/card/grid/NitroCardGridView'; +import { NitroLayoutGridColumn } from '../../../../layout/grid/column/NitroLayoutGridColumn'; +import { NitroLayoutGrid } from '../../../../layout/grid/NitroLayoutGrid'; import { FurniCategory } from '../../common/FurniCategory'; import { GroupItem } from '../../common/GroupItem'; import { IFurnitureItem } from '../../common/IFurnitureItem'; @@ -224,67 +228,81 @@ export const InventoryTradeView: FC = props => }, [ tradeData, dispatchFurnitureState ]); return ( -
-
- - - { filteredGroupItems && (filteredGroupItems.length > 0) && filteredGroupItems.map((item, index) => - { - const count = item.getUnlockedCount(); - - return ( - (count && setGroupItem(item)) }> - { ((count > 0) && (groupItem === item)) && - } - - ); - }) } - -
{ groupItem ? groupItem.name : LocalizeText('catalog_selectproduct') }
-
-
-
- { LocalizeText('inventory.trading.you') } { LocalizeText('inventory.trading.areoffering') }: + + + + - { Array.from(Array(MAX_ITEMS_TO_TRADE), (e, i) => + { filteredGroupItems && (filteredGroupItems.length > 0) && filteredGroupItems.map((item, index) => { - const item = (tradeData.ownUser.items.getWithIndex(i) || null); - - if(!item) return ; + const count = item.getUnlockedCount(); return ( - setOwnGroupItem(item) }> - { (ownGroupItem === item) && - } ); }) } -
{ ownGroupItem ? ownGroupItem.name : LocalizeText('catalog_selectproduct') }
-
-
- { tradeData.otherUser.userName } { LocalizeText('inventory.trading.isoffering') }: - - { Array.from(Array(MAX_ITEMS_TO_TRADE), (e, i) => - { - const item = (tradeData.otherUser.items.getWithIndex(i) || null); + + + { groupItem ? groupItem.name : LocalizeText('catalog_selectproduct') } + + + + + + + { LocalizeText('inventory.trading.you') } { LocalizeText('inventory.trading.areoffering') }: + + { Array.from(Array(MAX_ITEMS_TO_TRADE), (e, i) => + { + const item = (tradeData.ownUser.items.getWithIndex(i) || null); - if(!item) return ; + if(!item) return ; - return setOtherGroupItem(item) } />; - }) } -
{ otherGroupItem ? otherGroupItem.name : LocalizeText('catalog_selectproduct') }
-
-
-
- + return ( + setOwnGroupItem(item) }> + { (ownGroupItem === item) && + } + + ); + }) } + + + + { ownGroupItem ? ownGroupItem.name : LocalizeText('catalog_selectproduct') } + + + + + { tradeData.otherUser.userName } { LocalizeText('inventory.trading.isoffering') }: + + { Array.from(Array(MAX_ITEMS_TO_TRADE), (e, i) => + { + const item = (tradeData.otherUser.items.getWithIndex(i) || null); + + if(!item) return ; + + return setOtherGroupItem(item) } />; + }) } + + + + { otherGroupItem ? otherGroupItem.name : LocalizeText('catalog_selectproduct') } + + + + + { LocalizeText('generic.cancel') } { getTradeButton } -
-
-
+ + +
); }