diff --git a/src/layout/card/NitroCardView.scss b/src/layout/card/NitroCardView.scss index 4020b759..33294e70 100644 --- a/src/layout/card/NitroCardView.scss +++ b/src/layout/card/NitroCardView.scss @@ -2,6 +2,7 @@ $nitro-card-header-height: 33px; $nitro-card-tabs-height: 33px; $nitro-card-top-height: $nitro-card-header-height + $nitro-card-tabs-height; +@import './accordion/NitroCardAccordionView'; @import './content/NitroCardContentView'; @import './header/NitroCardHeaderView'; @import './simple-header/NitroCardSimpleHeaderView'; diff --git a/src/layout/card/accordion/NitroCardAccordionView.scss b/src/layout/card/accordion/NitroCardAccordionView.scss new file mode 100644 index 00000000..6e9da785 --- /dev/null +++ b/src/layout/card/accordion/NitroCardAccordionView.scss @@ -0,0 +1 @@ +@import './item/NitroCardAccordionItemView'; diff --git a/src/layout/card/accordion/NitroCardAccordionView.tsx b/src/layout/card/accordion/NitroCardAccordionView.tsx new file mode 100644 index 00000000..e0d2d534 --- /dev/null +++ b/src/layout/card/accordion/NitroCardAccordionView.tsx @@ -0,0 +1,13 @@ +import { FC } from 'react'; +import { NitroCardAccordionViewProps } from './NitroCardAccordionView.types'; + +export const NitroCardAccordionView: FC = props => +{ + const { className = '' } = props; + + return ( +
+ { props.children } +
+ ); +} diff --git a/src/layout/card/accordion/NitroCardAccordionView.types.ts b/src/layout/card/accordion/NitroCardAccordionView.types.ts new file mode 100644 index 00000000..73b8bbe3 --- /dev/null +++ b/src/layout/card/accordion/NitroCardAccordionView.types.ts @@ -0,0 +1,4 @@ +export interface NitroCardAccordionViewProps +{ + className?: string; +} diff --git a/src/layout/card/accordion/item/NitroCardAccordionItemView.scss b/src/layout/card/accordion/item/NitroCardAccordionItemView.scss new file mode 100644 index 00000000..a5699436 --- /dev/null +++ b/src/layout/card/accordion/item/NitroCardAccordionItemView.scss @@ -0,0 +1,15 @@ +.nitro-card-accordion-item { + .nitro-card-accordion-item-header { + border-bottom: 1px solid rgba($black, 0.2); + } + + &.active { + > .nitro-card-accordion-item-header { + background: rgba($white, 0.5); + } + } + + .nitro-card-accordion-item-content { + background: rgba($black, 0.1); + } +} diff --git a/src/layout/card/accordion/item/NitroCardAccordionItemView.tsx b/src/layout/card/accordion/item/NitroCardAccordionItemView.tsx new file mode 100644 index 00000000..acdd4e2f --- /dev/null +++ b/src/layout/card/accordion/item/NitroCardAccordionItemView.tsx @@ -0,0 +1,25 @@ +import { FC, useState } from 'react'; +import { NitroCardAccordionItemViewProps } from './NitroCardAccordionItemView.types'; + +export const NitroCardAccordionItemView: FC = props => +{ + const { className = '', headerClassName = '', contentClassName = '', headerText = '' } = props; + + const [ isExpanded, setIsExpanded ] = useState(false); + + return ( +
+
setIsExpanded((value) => !value) }> +
+ { headerText } +
+
+ +
+
+
+ { props.children } +
+
+ ); +} diff --git a/src/layout/card/accordion/item/NitroCardAccordionItemView.types.ts b/src/layout/card/accordion/item/NitroCardAccordionItemView.types.ts new file mode 100644 index 00000000..c3290126 --- /dev/null +++ b/src/layout/card/accordion/item/NitroCardAccordionItemView.types.ts @@ -0,0 +1,7 @@ +export interface NitroCardAccordionItemViewProps +{ + className?: string; + headerClassName?: string; + contentClassName?: string; + headerText: string; +} diff --git a/src/views/friend-list/FriendListView.tsx b/src/views/friend-list/FriendListView.tsx index da8f6178..d6fbf6d3 100644 --- a/src/views/friend-list/FriendListView.tsx +++ b/src/views/friend-list/FriendListView.tsx @@ -1,23 +1,25 @@ import { MessengerInitComposer } from 'nitro-renderer'; import React, { FC, useCallback, useEffect, useState } from 'react'; import { FriendListEvent } from '../../events'; -import { DraggableWindow } from '../../hooks/draggable-window/DraggableWindow'; import { useUiEvent } from '../../hooks/events/ui/ui-event'; import { SendMessageHook } from '../../hooks/messages/message-event'; +import { NitroCardHeaderView, NitroCardView } from '../../layout'; +import { NitroCardAccordionItemView } from '../../layout/card/accordion/item/NitroCardAccordionItemView'; +import { NitroCardAccordionView } from '../../layout/card/accordion/NitroCardAccordionView'; import { LocalizeText } from '../../utils/LocalizeText'; import { FriendListMessageHandler } from './FriendListMessageHandler'; import { FriendListTabs, FriendListViewProps, IFriendListContext } from './FriendListView.types'; -import { FriendListTabsContentView } from './tabs-content/FriendListTabsContentView'; -import { FriendListTabsSelectorView } from './tabs-selector/FriendListTabsSelectorView'; +import { FriendListFriendsView } from './friends/FriendListFriendsView'; import { MessengerSettings } from './utils/MessengerSettings'; export const FriendListContext = React.createContext(null); export const FriendListView: FC = props => { + const tabs = [ FriendListTabs.FRIENDS, FriendListTabs.REQUESTS, FriendListTabs.SEARCH ]; + const [ isVisible, setIsVisible ] = useState(false); const [ currentTab, setCurrentTab ] = useState(null); - const [ tabs, setTabs ] = useState([ FriendListTabs.FRIENDS, FriendListTabs.REQUESTS, FriendListTabs.SEARCH ]); const [ messengerSettings, setMessengerSettings ] = useState(null); const onFriendListEvent = useCallback((event: FriendListEvent) => @@ -51,26 +53,24 @@ export const FriendListView: FC = props => SendMessageHook(new MessengerInitComposer()); }, []); - function hideFriendList(): void - { - setIsVisible(false); - } - return ( - { isVisible && -
-
-
{ LocalizeText('friendlist.friends') }
- -
- - -
-
} + { isVisible && + + setIsVisible(false) } /> + + + + + + abc + + + abc + + + }
); } diff --git a/src/views/friend-list/friends/FriendListFriendsView.tsx b/src/views/friend-list/friends/FriendListFriendsView.tsx new file mode 100644 index 00000000..8a5b3947 --- /dev/null +++ b/src/views/friend-list/friends/FriendListFriendsView.tsx @@ -0,0 +1,36 @@ +import { FC, useContext, useState } from 'react'; +import { NitroCardAccordionItemView } from '../../../layout/card/accordion/item/NitroCardAccordionItemView'; +import { NitroCardAccordionView } from '../../../layout/card/accordion/NitroCardAccordionView'; +import { FriendListContext } from '../FriendListView'; +import { FriendListFriendsViewProps } from './FriendListFriendsView.types'; + +export const FriendListFriendsView: FC = props => +{ + const friendListContext = useContext(FriendListContext); + + const [ isOnlineFriendsExtended, setIsOnlineFriendsExtended ] = useState(false); + const [ isOfflineFriendsExtended, setIsOfflineFriendsExtended ] = useState(false); + + function toggleOnlineFriends(): void + { + setIsOnlineFriendsExtended(value => !value); + } + + function toggleOfflineFriends(): void + { + setIsOfflineFriendsExtended(value => !value); + } + + return ( + <> + + + abc + + + abc + + + + ); +} diff --git a/src/views/friend-list/friends/FriendListFriendsView.types.ts b/src/views/friend-list/friends/FriendListFriendsView.types.ts new file mode 100644 index 00000000..d91e6e6d --- /dev/null +++ b/src/views/friend-list/friends/FriendListFriendsView.types.ts @@ -0,0 +1,2 @@ +export interface FriendListFriendsViewProps +{} diff --git a/src/views/friend-list/tabs-content/FriendListTabsContentView.tsx b/src/views/friend-list/tabs-content/FriendListTabsContentView.tsx deleted file mode 100644 index b7431f4c..00000000 --- a/src/views/friend-list/tabs-content/FriendListTabsContentView.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { FC, useContext } from 'react'; -import { FriendListContext } from '../FriendListView'; -import { FriendListTabs } from '../FriendListView.types'; -import { FriendListTabsContentViewProps } from './FriendListTabsContentView.types'; -import { FriendListTabFriendsView } from './friends/FriendListTabFriendsView'; - -export const FriendListTabsContentView: FC = props => -{ - const friendListContext = useContext(FriendListContext); - - return ( -
- { friendListContext && friendListContext.currentTab && friendListContext.currentTab === FriendListTabs.FRIENDS && } - { friendListContext && friendListContext.currentTab && friendListContext.currentTab === FriendListTabs.REQUESTS } - { friendListContext && friendListContext.currentTab && friendListContext.currentTab === FriendListTabs.SEARCH } -
- ); -} diff --git a/src/views/friend-list/tabs-content/FriendListTabsContentView.types.ts b/src/views/friend-list/tabs-content/FriendListTabsContentView.types.ts deleted file mode 100644 index ab515eba..00000000 --- a/src/views/friend-list/tabs-content/FriendListTabsContentView.types.ts +++ /dev/null @@ -1,2 +0,0 @@ -export interface FriendListTabsContentViewProps -{} diff --git a/src/views/friend-list/tabs-content/friends/FriendListTabFriendsView.tsx b/src/views/friend-list/tabs-content/friends/FriendListTabFriendsView.tsx deleted file mode 100644 index e4fbbcdd..00000000 --- a/src/views/friend-list/tabs-content/friends/FriendListTabFriendsView.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import classNames from 'classnames'; -import { FC, useContext, useState } from 'react'; -import { FriendListContext } from '../../FriendListView'; -import { FriendListTabFriendsViewProps } from './FriendListTabFriendsView.types'; - -export const FriendListTabFriendsView: FC = props => -{ - const friendListContext = useContext(FriendListContext); - - const [ isOnlineFriendsExtended, setIsOnlineFriendsExtended ] = useState(false); - const [ isOfflineFriendsExtended, setIsOfflineFriendsExtended ] = useState(false); - - function toggleOnlineFriends(): void - { - setIsOnlineFriendsExtended(value => !value); - } - - function toggleOfflineFriends(): void - { - setIsOfflineFriendsExtended(value => !value); - } - - return ( -
-
- -
Friends (0)
-
-
- -
Offline Friends (0)
-
-
- ); -} diff --git a/src/views/friend-list/tabs-content/friends/FriendListTabFriendsView.types.ts b/src/views/friend-list/tabs-content/friends/FriendListTabFriendsView.types.ts deleted file mode 100644 index fa4e0b56..00000000 --- a/src/views/friend-list/tabs-content/friends/FriendListTabFriendsView.types.ts +++ /dev/null @@ -1,2 +0,0 @@ -export interface FriendListTabFriendsViewProps -{} diff --git a/src/views/friend-list/tabs-selector/FriendListTabsSelectorView.tsx b/src/views/friend-list/tabs-selector/FriendListTabsSelectorView.tsx deleted file mode 100644 index f427ea36..00000000 --- a/src/views/friend-list/tabs-selector/FriendListTabsSelectorView.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { FC } from 'react'; -import { FriendListTabsSelectorViewProps } from './FriendListTabsSelectorView.types'; -import { FriendListTabView } from './tab/FriendListTabView'; - -export const FriendListTabsSelectorView: FC = props => -{ - return ( -
- { props.tabs && -
- { props.tabs.map((tab, index) => - { - return - }) } -
} -
- ); -} diff --git a/src/views/friend-list/tabs-selector/FriendListTabsSelectorView.types.ts b/src/views/friend-list/tabs-selector/FriendListTabsSelectorView.types.ts deleted file mode 100644 index 94abe977..00000000 --- a/src/views/friend-list/tabs-selector/FriendListTabsSelectorView.types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface FriendListTabsSelectorViewProps -{ - tabs: string[]; -} diff --git a/src/views/friend-list/tabs-selector/tab/FriendListTabView.tsx b/src/views/friend-list/tabs-selector/tab/FriendListTabView.tsx deleted file mode 100644 index 07ee8d60..00000000 --- a/src/views/friend-list/tabs-selector/tab/FriendListTabView.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import classNames from 'classnames'; -import { FC, useContext } from 'react'; -import { LocalizeText } from '../../../../utils/LocalizeText'; -import { FriendListContext } from '../../FriendListView'; -import { FriendListTabViewProps } from './FriendListTabView.types'; - -export const FriendListTabView: FC = props => -{ - const friendListContext = useContext(FriendListContext); - - return ( - - ); -} diff --git a/src/views/friend-list/tabs-selector/tab/FriendListTabView.types.ts b/src/views/friend-list/tabs-selector/tab/FriendListTabView.types.ts deleted file mode 100644 index 3b4a8875..00000000 --- a/src/views/friend-list/tabs-selector/tab/FriendListTabView.types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface FriendListTabViewProps -{ - tab: string; -}