Merge branch 'dev' into feature/marketplace
BIN
src/assets/images/icons/chat-history.png
Normal file
After Width: | Height: | Size: 574 B |
BIN
src/assets/images/icons/cog.png
Normal file
After Width: | Height: | Size: 448 B |
BIN
src/assets/images/icons/like-room.png
Normal file
After Width: | Height: | Size: 481 B |
BIN
src/assets/images/icons/room-link.png
Normal file
After Width: | Height: | Size: 322 B |
BIN
src/assets/images/icons/small-room.png
Normal file
After Width: | Height: | Size: 413 B |
BIN
src/assets/images/icons/zoom-less.png
Normal file
After Width: | Height: | Size: 252 B |
BIN
src/assets/images/icons/zoom-more.png
Normal file
After Width: | Height: | Size: 475 B |
@ -303,6 +303,48 @@
|
|||||||
height: 15px;
|
height: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.icon-small-room {
|
||||||
|
background: url("../images/icons/small-room.png");
|
||||||
|
width: 17px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.icon-cog {
|
||||||
|
background: url("../images/icons/cog.png");
|
||||||
|
width: 21px;
|
||||||
|
height: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.icon-chat-history {
|
||||||
|
background: url("../images/icons/chat-history.png");
|
||||||
|
width: 17px;
|
||||||
|
height: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.icon-room-link {
|
||||||
|
background: url("../images/icons/room-link.png");
|
||||||
|
width: 17px;
|
||||||
|
height: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.icon-zoom-more {
|
||||||
|
background: url("../images/icons/zoom-more.png");
|
||||||
|
width: 12px;
|
||||||
|
height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.icon-zoom-less {
|
||||||
|
background: url("../images/icons/zoom-less.png");
|
||||||
|
width: 12px;
|
||||||
|
height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.icon-like-room {
|
||||||
|
background: url("../images/icons/like-room.png");
|
||||||
|
width: 20px;
|
||||||
|
height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
&.icon-arrows {
|
&.icon-arrows {
|
||||||
background: url("../images/icons/arrows.png");
|
background: url("../images/icons/arrows.png");
|
||||||
width: 17px;
|
width: 17px;
|
||||||
|
@ -80,18 +80,19 @@ export const ChatHistoryView: FC<{}> = props =>
|
|||||||
parent={props.parent}
|
parent={props.parent}
|
||||||
rowIndex={props.index}
|
rowIndex={props.index}
|
||||||
>
|
>
|
||||||
<div key={props.key} style={props.style} className="row chathistory-entry justify-content-start">
|
<div key={props.key} style={props.style} className="chathistory-entry justify-content-start">
|
||||||
{(item.type === ChatEntryType.TYPE_CHAT) &&
|
{(item.type === ChatEntryType.TYPE_CHAT) &&
|
||||||
<div className={`col d-flex flex-wrap text-break text-wrap ${isDark ? 'dark' : 'light'}`}>
|
<div className={`p-1 d-flex gap-1 ${isDark ? 'dark' : 'light'}`}>
|
||||||
<div className="p-1">{item.timestamp}</div>
|
<div className="text-muted">{item.timestamp}</div>
|
||||||
<div className="p-1 fw-bold cursor-pointer" dangerouslySetInnerHTML={ { __html: (item.name + ':') }} />
|
<div className="cursor-pointer d-flex text-nowrap" dangerouslySetInnerHTML={ { __html: (item.name + ':') }} />
|
||||||
<div className="p-1 text-break text-wrap">{item.message}</div>
|
<div className="text-break text-wrap flex-grow-1">{item.message}</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
{(item.type === ChatEntryType.TYPE_ROOM_INFO) &&
|
{(item.type === ChatEntryType.TYPE_ROOM_INFO) &&
|
||||||
<div className={`col d-flex flex-wrap text-break text-wrap ${isDark ? 'dark' : 'light'}`}>
|
<div className={`p-1 d-flex gap-1 ${isDark ? 'dark' : 'light'}`}>
|
||||||
<div className="p-1">{item.timestamp}</div>
|
<div className="text-muted">{item.timestamp}</div>
|
||||||
<div className="p-1 fw-bold cursor-pointer">{item.name}</div>
|
<i className="icon icon-small-room" />
|
||||||
|
<div className="cursor-pointer text-break text-wrap">{item.name}</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,9 +135,9 @@ export const ChatHistoryView: FC<{}> = props =>
|
|||||||
<ChatHistoryContextProvider value={ { chatHistoryState, roomHistoryState } }>
|
<ChatHistoryContextProvider value={ { chatHistoryState, roomHistoryState } }>
|
||||||
<ChatHistoryMessageHandler />
|
<ChatHistoryMessageHandler />
|
||||||
{isVisible &&
|
{isVisible &&
|
||||||
<NitroCardView uniqueKey="chat-history" className="nitro-chat-history" simple={ false } theme={'dark'} >
|
<NitroCardView uniqueKey="chat-history" className="nitro-chat-history" simple={ false } theme={'dark'} >
|
||||||
<NitroCardHeaderView headerText={ 'Chat History' } onCloseClick={ event => setIsVisible(false) } theme={'dark'}/>
|
<NitroCardHeaderView headerText={ 'Chat History' } onCloseClick={ event => setIsVisible(false) } theme={'dark'}/>
|
||||||
<NitroCardContentView className="chat-history-content" theme={'dark'}>
|
<NitroCardContentView className="chat-history-content p-0" theme={'dark'}>
|
||||||
<div className="row w-100 h-100 chat-history-container">
|
<div className="row w-100 h-100 chat-history-container">
|
||||||
<AutoSizer defaultWidth={300} defaultHeight={200} onResize={onResize}>
|
<AutoSizer defaultWidth={300} defaultHeight={200} onResize={onResize}>
|
||||||
{({ height, width }) =>
|
{({ height, width }) =>
|
||||||
|
@ -122,7 +122,7 @@ export const FloorplanEditorView: FC<{}> = props =>
|
|||||||
<>
|
<>
|
||||||
<FloorplanEditorContextProvider value={{ originalFloorplanSettings: originalFloorplanSettings, setOriginalFloorplanSettings: setOriginalFloorplanSettings, visualizationSettings: visualizationSettings, setVisualizationSettings: setVisualizationSettings }}>
|
<FloorplanEditorContextProvider value={{ originalFloorplanSettings: originalFloorplanSettings, setOriginalFloorplanSettings: setOriginalFloorplanSettings, visualizationSettings: visualizationSettings, setVisualizationSettings: setVisualizationSettings }}>
|
||||||
{isVisible &&
|
{isVisible &&
|
||||||
<NitroCardView className="nitro-floorplan-editor">
|
<NitroCardView uniqueKey="floorpan-editor" className="nitro-floorplan-editor" simple={ true }>
|
||||||
<NitroCardHeaderView headerText={LocalizeText('floor.plan.editor.title')} onCloseClick={() => setIsVisible(false)} />
|
<NitroCardHeaderView headerText={LocalizeText('floor.plan.editor.title')} onCloseClick={() => setIsVisible(false)} />
|
||||||
<NitroCardContentView>
|
<NitroCardContentView>
|
||||||
<NitroLayoutGrid>
|
<NitroLayoutGrid>
|
||||||
|
@ -30,7 +30,7 @@ export class FloorplanEditor extends PixiApplicationProxy
|
|||||||
super({
|
super({
|
||||||
width: width,
|
width: width,
|
||||||
height: height,
|
height: height,
|
||||||
backgroundColor: 0x2b2b2b,
|
backgroundColor: 0x000000,
|
||||||
antialias: true,
|
antialias: true,
|
||||||
autoDensity: true,
|
autoDensity: true,
|
||||||
resolution: 1,
|
resolution: 1,
|
||||||
|
@ -105,7 +105,9 @@ export const FloorplanCanvasView: FC<{}> = props =>
|
|||||||
</NitroLayoutFlex>
|
</NitroLayoutFlex>
|
||||||
<NitroLayoutFlex className="align-items-center justify-content-center">
|
<NitroLayoutFlex className="align-items-center justify-content-center">
|
||||||
<div className="arrow-button"><button className="btn btn-primary" onClick={() => onClickArrowButton('left')}><i className="fas fa-arrow-left"/></button></div>
|
<div className="arrow-button"><button className="btn btn-primary" onClick={() => onClickArrowButton('left')}><i className="fas fa-arrow-left"/></button></div>
|
||||||
<div ref={elementRef} className="editor-area" />
|
<div className="rounded-2 overflow-hidden">
|
||||||
|
<div ref={elementRef} className="editor-area" />
|
||||||
|
</div>
|
||||||
<div className="arrow-button"><button className="btn btn-primary" onClick={() => onClickArrowButton('right')}><i className="fas fa-arrow-right"/></button></div>
|
<div className="arrow-button"><button className="btn btn-primary" onClick={() => onClickArrowButton('right')}><i className="fas fa-arrow-right"/></button></div>
|
||||||
</NitroLayoutFlex>
|
</NitroLayoutFlex>
|
||||||
<NitroLayoutFlex className="align-items-center justify-content-center">
|
<NitroLayoutFlex className="align-items-center justify-content-center">
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
.nitro-room-tools {
|
.nitro-room-tools {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 125px;
|
bottom: 125px;
|
||||||
left: -133px;
|
left: -145px;
|
||||||
background: rgba($dark,.95);
|
background: rgba($dark,.95);
|
||||||
box-shadow: inset 0px 5px lighten(rgba($dark,.6),2.5), inset 0 -4px darken(rgba($dark,.6),4);
|
box-shadow: inset 0px 5px lighten(rgba($dark,.6),2.5), inset 0 -4px darken(rgba($dark,.6),4);
|
||||||
border-top-right-radius: $border-radius;
|
border-top-right-radius: $border-radius;
|
||||||
@ -36,4 +36,16 @@
|
|||||||
opacity: .5;
|
opacity: .5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tools-item {
|
||||||
|
.icon {
|
||||||
|
width: 22px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,21 +45,21 @@ export const RoomToolsWidgetView: FC<{}> = props =>
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={'nitro-room-tools ps-3 d-flex' + classNames({ ' open': isExpended })}>
|
<div className={'nitro-room-tools ps-3 d-flex' + classNames({ ' open': isExpended })}>
|
||||||
<div className="list-group list-group-flush w-100 me-1">
|
<div className="d-flex flex-column gap-2 w-100 py-2 pe-2">
|
||||||
<div className="list-group-item" onClick={ () => handleToolClick('settings') }>
|
<div className="d-flex align-items-center gap-2 cursor-pointer tools-item" onClick={ () => handleToolClick('settings') }>
|
||||||
<i className="fas fa-cog me-2" />{ LocalizeText('room.settings.button.text') }
|
<i className="icon icon-cog" /> { LocalizeText('room.settings.button.text') }
|
||||||
</div>
|
</div>
|
||||||
<div className="list-group-item" onClick={ () => handleToolClick('zoom') }>
|
<div className="d-flex align-items-center gap-2 cursor-pointer tools-item" onClick={ () => handleToolClick('zoom') }>
|
||||||
<i className={ 'fas me-2 ' +classNames({ 'fa-search-minus': !isZoomedIn, 'fa-search-plus': isZoomedIn }) } />{ LocalizeText('room.zoom.button.text') }
|
<i className={ 'icon ' +classNames({ 'icon-zoom-less': !isZoomedIn, 'icon-zoom-more': isZoomedIn }) } />{ LocalizeText('room.zoom.button.text') }
|
||||||
</div>
|
</div>
|
||||||
<div className="list-group-item" onClick={ () => handleToolClick('chat_history') }>
|
<div className="d-flex align-items-center gap-2 cursor-pointer tools-item" onClick={ () => handleToolClick('chat_history') }>
|
||||||
<i className="fas fa-comment-alt me-2" />{ LocalizeText('room.chathistory.button.text') }
|
<i className="icon icon-chat-history" />{ LocalizeText('room.chathistory.button.text') }
|
||||||
</div>
|
</div>
|
||||||
<div className={ 'list-group-item' + classNames({ ' disabled': isLiked })} onClick={ () => handleToolClick('like_room') }>
|
<div className={ 'd-flex align-items-center gap-2 cursor-pointer tools-item' + classNames({ ' disabled': isLiked })} onClick={ () => handleToolClick('like_room') }>
|
||||||
<i className="fas fa-heart me-2" />{ LocalizeText('room.like.button.text') }
|
<i className="icon icon-like-room" /> { LocalizeText('room.like.button.text') }
|
||||||
</div>
|
</div>
|
||||||
<div className="list-group-item" onClick={ () => handleToolClick('toggle_room_link') }>
|
<div className="d-flex align-items-center gap-2 cursor-pointer tools-item" onClick={ () => handleToolClick('toggle_room_link') }>
|
||||||
<i className="fas fa-link me-2" />{ LocalizeText('navigator.embed.caption') }
|
<i className="icon icon-room-link" />{ LocalizeText('navigator.embed.caption') }
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="cursor-pointer d-flex align-items-center px-2" onClick={() => setIsExpanded(value => !value)}>
|
<div className="cursor-pointer d-flex align-items-center px-2" onClick={() => setIsExpanded(value => !value)}>
|
||||||
|