mirror of
https://github.com/billsonnn/nitro-react.git
synced 2024-11-27 08:00:51 +01:00
Layout updates
This commit is contained in:
parent
6a28213896
commit
34ab1e6fd3
15
src/App.scss
15
src/App.scss
@ -17,6 +17,21 @@ $grid-active-border-color: $white;
|
|||||||
|
|
||||||
$toolbar-height: 55px;
|
$toolbar-height: 55px;
|
||||||
|
|
||||||
|
$achievement-width: 650px;
|
||||||
|
$achievement-height: 400px;
|
||||||
|
|
||||||
|
$avatar-editor-width: 620px;
|
||||||
|
$avatar-editor-height: 374px;
|
||||||
|
|
||||||
|
$catalog-width: 620px;
|
||||||
|
$catalog-height: 400px;
|
||||||
|
|
||||||
|
$inventory-width: 485px;
|
||||||
|
$inventory-height: 315px;
|
||||||
|
|
||||||
|
$navigator-width: 400px;
|
||||||
|
$navigator-height: 420px;
|
||||||
|
|
||||||
.nitro-app {
|
.nitro-app {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
@ -85,6 +85,7 @@ $ghost: #c8cad0 !default;
|
|||||||
$gray-chateau: #a3a7b1 !default;
|
$gray-chateau: #a3a7b1 !default;
|
||||||
$gable-green: #1C323F !default;
|
$gable-green: #1C323F !default;
|
||||||
$william: #3d5f6e !default;
|
$william: #3d5f6e !default;
|
||||||
|
$bluewood: #304059 !default;
|
||||||
$success: $green !default;
|
$success: $green !default;
|
||||||
$info: $cyan !default;
|
$info: $cyan !default;
|
||||||
$warning: $yellow !default;
|
$warning: $yellow !default;
|
||||||
@ -385,7 +386,7 @@ $enable-transitions: true !default;
|
|||||||
$enable-reduced-motion: true !default;
|
$enable-reduced-motion: true !default;
|
||||||
$enable-smooth-scroll: true !default;
|
$enable-smooth-scroll: true !default;
|
||||||
$enable-grid-classes: true !default;
|
$enable-grid-classes: true !default;
|
||||||
$enable-cssgrid: false !default;
|
$enable-cssgrid: true !default;
|
||||||
$enable-button-pointers: true !default;
|
$enable-button-pointers: true !default;
|
||||||
$enable-rfs: true !default;
|
$enable-rfs: true !default;
|
||||||
$enable-validation-icons: true !default;
|
$enable-validation-icons: true !default;
|
||||||
|
@ -10,6 +10,14 @@
|
|||||||
transform: scale(1) translateZ(0);
|
transform: scale(1) translateZ(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scale-1-25 {
|
||||||
|
transform: scale(1.25) translateZ(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.scale-1-50 {
|
||||||
|
transform: scale(1.50) translateZ(0);
|
||||||
|
}
|
||||||
|
|
||||||
.scale-2 {
|
.scale-2 {
|
||||||
transform: scale(2) translateZ(0);
|
transform: scale(2) translateZ(0);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ $nitro-card-tabs-height: 33px;
|
|||||||
|
|
||||||
.nitro-card {
|
.nitro-card {
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
|
resize: both;
|
||||||
|
|
||||||
@import './accordion/NitroCardAccordionView';
|
@import './accordion/NitroCardAccordionView';
|
||||||
@import './content/NitroCardContentView';
|
@import './content/NitroCardContentView';
|
||||||
|
@ -10,6 +10,5 @@
|
|||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
min-height: auto !important;
|
min-height: auto !important;
|
||||||
max-height: 100% !important;
|
max-height: 100% !important;
|
||||||
resize: none !important;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ export const NitroCardContentView: FC<NitroCardContentViewProps> = props =>
|
|||||||
const { simple = false } = useNitroCardContext();
|
const { simple = false } = useNitroCardContext();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={ `container-fluid bg-light content-area ${ (simple ? 'simple' : '') } ${ className || '' }` } { ...rest }>
|
<div className={ `container-fluid bg-light content-area d-flex flex-column overflow-hidden ${ (simple ? 'simple' : '') } ${ className || '' }` } { ...rest }>
|
||||||
{ children }
|
{ children }
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -66,6 +66,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@import './item/NitroCardGridItemView.scss';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@import './item/NitroCardGridItemView.scss';
|
||||||
|
@ -1,18 +1,31 @@
|
|||||||
import { FC } from 'react';
|
import { FC, useMemo } from 'react';
|
||||||
import { NitroCardGridContextProvider } from './context/NitroCardGridContext';
|
import { NitroCardGridViewProps } from './NitroCardGridView.types';
|
||||||
import { NitroCardGridThemes, NitroCardGridViewProps } from './NitroCardGridView.types';
|
|
||||||
|
|
||||||
export const NitroCardGridView: FC<NitroCardGridViewProps> = props =>
|
export const NitroCardGridView: FC<NitroCardGridViewProps> = props =>
|
||||||
{
|
{
|
||||||
const { columns = 5, theme = NitroCardGridThemes.THEME_DEFAULT, className = '', children = null, ...rest } = props;
|
const { columns = 5, className = '', style = null, children = null, ...rest } = props;
|
||||||
|
|
||||||
|
const getClassName = useMemo(() =>
|
||||||
|
{
|
||||||
|
let newClassName = 'grid gap-2 overflow-auto';
|
||||||
|
|
||||||
|
if(className && className.length) newClassName += ' ' + className;
|
||||||
|
|
||||||
|
return newClassName;
|
||||||
|
}, [ className ]);
|
||||||
|
|
||||||
|
const getStyle = useMemo(() =>
|
||||||
|
{
|
||||||
|
const newStyle = { ...style };
|
||||||
|
|
||||||
|
newStyle['--bs-columns'] = columns.toString();
|
||||||
|
|
||||||
|
return newStyle;
|
||||||
|
}, [ style, columns ]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NitroCardGridContextProvider value={ { theme } }>
|
<div className={ getClassName } style={ getStyle } { ...rest }>
|
||||||
<div className={ `h-100 overflow-hidden nitro-card-grid ${ theme } ${ className || '' }` } { ...rest }>
|
{ children }
|
||||||
<div className={ `row row-cols-${ columns } align-content-start g-0 w-100 h-100 overflow-auto` }>
|
</div>
|
||||||
{ children }
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</NitroCardGridContextProvider>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,4 @@ import { DetailsHTMLAttributes } from 'react';
|
|||||||
export interface NitroCardGridViewProps extends DetailsHTMLAttributes<HTMLDivElement>
|
export interface NitroCardGridViewProps extends DetailsHTMLAttributes<HTMLDivElement>
|
||||||
{
|
{
|
||||||
columns?: number;
|
columns?: number;
|
||||||
theme?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class NitroCardGridThemes
|
|
||||||
{
|
|
||||||
public static THEME_DEFAULT: string = 'theme-default';
|
|
||||||
public static THEME_SHADOWED: string = 'theme-shadowed';
|
|
||||||
}
|
}
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
import { createContext, FC, useContext } from 'react';
|
|
||||||
import { INitroCardGridContext, NitroCardGridContextProps } from './NitroCardGridContext.types';
|
|
||||||
|
|
||||||
const NitroCardGridContext = createContext<INitroCardGridContext>({
|
|
||||||
theme: null
|
|
||||||
});
|
|
||||||
|
|
||||||
export const NitroCardGridContextProvider: FC<NitroCardGridContextProps> = props =>
|
|
||||||
{
|
|
||||||
return <NitroCardGridContext.Provider value={ props.value }>{ props.children }</NitroCardGridContext.Provider>
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useNitroCardGridContext = () => useContext(NitroCardGridContext);
|
|
@ -1,11 +0,0 @@
|
|||||||
import { ProviderProps } from 'react';
|
|
||||||
|
|
||||||
export interface INitroCardGridContext
|
|
||||||
{
|
|
||||||
theme: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface NitroCardGridContextProps extends ProviderProps<INitroCardGridContext>
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
export * from './NitroCardGridContext';
|
|
||||||
export * from './NitroCardGridContext.types';
|
|
@ -1,4 +1,3 @@
|
|||||||
export * from './context';
|
|
||||||
export * from './item';
|
export * from './item';
|
||||||
export * from './NitroCardGridView';
|
export * from './NitroCardGridView';
|
||||||
export * from './NitroCardGridView.types';
|
export * from './NitroCardGridView.types';
|
||||||
|
@ -1,86 +1,48 @@
|
|||||||
.grid-item-container {
|
.grid-item {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
max-height: 50px;
|
max-height: 50px;
|
||||||
|
width: 100%;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
border-radius: $border-radius;
|
||||||
|
border-color: $grid-border-color !important;
|
||||||
|
background-color: $grid-bg-color;
|
||||||
|
border: nth(map-values($border-widths), 2) solid;
|
||||||
|
|
||||||
.grid-item {
|
&.active {
|
||||||
display: flex;
|
border-color: $grid-active-border-color !important;
|
||||||
justify-content: center;
|
background-color: $grid-active-bg-color !important;
|
||||||
align-items: center;
|
}
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
&.theme-default {
|
&.unseen {
|
||||||
border-radius: $border-radius;
|
background-color: rgba($success, 0.4);
|
||||||
border-color: $grid-border-color !important;
|
}
|
||||||
background-color: $grid-bg-color;
|
|
||||||
border: nth(map-values($border-widths), 2) solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.theme-shadowed {
|
.badge {
|
||||||
border-radius: $border-radius;
|
top: 2px;
|
||||||
background-color: $light;
|
right: 2px;
|
||||||
|
font-size: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
&::after {
|
.avatar-image {
|
||||||
position: absolute;
|
background-position-y: 10px;
|
||||||
content: '';
|
}
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
border-radius: $border-radius;
|
|
||||||
border-bottom: 2px solid white;
|
|
||||||
border-right: 2px solid white;
|
|
||||||
box-shadow: -2px -2px rgba(0, 0, 0, .4), inset 3px 3px rgba(0, 0, 0, .2);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
.trade-button {
|
||||||
border: nth(map-values($border-widths), 2) solid;
|
position: absolute;
|
||||||
border-color: $oslo-gray !important;
|
bottom: 2px;
|
||||||
background-color: #F5F5F5;
|
right: 2px;
|
||||||
|
font-size: 5px;
|
||||||
|
padding: 3px;
|
||||||
|
min-height: unset;
|
||||||
|
|
||||||
&:after {
|
&.left {
|
||||||
content: unset;
|
right: unset;
|
||||||
}
|
left: 2px;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
border-color: $grid-active-border-color !important;
|
|
||||||
background-color: $grid-active-bg-color !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.unseen {
|
|
||||||
background-color: rgba($success, 0.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.badge {
|
|
||||||
top: 2px;
|
|
||||||
right: 2px;
|
|
||||||
font-size: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-image {
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position-y: 12px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.trade-button {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 2px;
|
|
||||||
right: 2px;
|
|
||||||
font-size: 5px;
|
|
||||||
padding: 3px;
|
|
||||||
min-height: unset;
|
|
||||||
|
|
||||||
&.left {
|
|
||||||
right: unset;
|
|
||||||
left: 2px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,27 +1,48 @@
|
|||||||
import { FC } from 'react';
|
import { FC, useMemo } from 'react';
|
||||||
import { LimitedEditionStyledNumberView } from '../../../../views/shared/limited-edition/styled-number/LimitedEditionStyledNumberView';
|
import { LimitedEditionStyledNumberView } from '../../../../views/shared/limited-edition/styled-number/LimitedEditionStyledNumberView';
|
||||||
import { useNitroCardGridContext } from '../context';
|
|
||||||
import { NitroCardGridThemes } from '../NitroCardGridView.types';
|
|
||||||
import { NitroCardGridItemViewProps } from './NitroCardGridItemView.types';
|
import { NitroCardGridItemViewProps } from './NitroCardGridItemView.types';
|
||||||
|
|
||||||
export const NitroCardGridItemView: FC<NitroCardGridItemViewProps> = props =>
|
export const NitroCardGridItemView: FC<NitroCardGridItemViewProps> = props =>
|
||||||
{
|
{
|
||||||
const { itemImage = undefined, itemColor = undefined, itemActive = false, itemCount = 1, itemUnique = false, itemUniqueNumber = 0, itemUnseen = false, columns = undefined, className = '', style = {}, children = null, ...rest } = props;
|
const { itemImage = undefined, itemColor = undefined, itemActive = false, itemCount = 1, itemUniqueNumber = 0, itemUnseen = false, className = '', style = {}, children = null, ...rest } = props;
|
||||||
const { theme = NitroCardGridThemes.THEME_DEFAULT } = useNitroCardGridContext();
|
|
||||||
|
|
||||||
const imageUrl = `url(${ itemImage })`;
|
const getClassName = useMemo(() =>
|
||||||
|
{
|
||||||
|
let newClassName = 'grid-item cursor-pointer overflow-hidden';
|
||||||
|
|
||||||
|
if(itemActive) newClassName += ' active';
|
||||||
|
|
||||||
|
if(itemUniqueNumber > 0) newClassName += ' unique-item';
|
||||||
|
|
||||||
|
if(itemUnseen) newClassName += ' unseen';
|
||||||
|
|
||||||
|
if(itemImage === null) newClassName += ' icon loading-icon';
|
||||||
|
|
||||||
|
if(className && className.length) newClassName += ' ' + className;
|
||||||
|
|
||||||
|
return newClassName;
|
||||||
|
}, [ className, itemActive, itemUniqueNumber, itemUnseen, itemImage ]);
|
||||||
|
|
||||||
|
const getStyle = useMemo(() =>
|
||||||
|
{
|
||||||
|
const newStyle = { ...style };
|
||||||
|
|
||||||
|
if(itemImage) newStyle.backgroundImage = `url(${ itemImage })`;
|
||||||
|
|
||||||
|
if(itemColor) newStyle.backgroundColor = itemColor;
|
||||||
|
|
||||||
|
return newStyle;
|
||||||
|
}, [ style, itemImage, itemColor ]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={ `${ columns === undefined ? 'col' : ('col-' + columns) } pb-1 grid-item-container` }>
|
<div className={ getClassName } style={ getStyle } { ...rest }>
|
||||||
<div className={ `grid-item ${ theme } cursor-pointer${ itemActive ? ' active' : '' }${ itemUnique ? ' unique-item' : '' }${ itemUnseen ? ' unseen' : ''}${ (itemImage === null ? ' icon loading-icon': '')} ${ className || '' }` } style={ itemImage ? { ...style, backgroundImage: imageUrl } : (itemColor ? { ...style, backgroundColor: itemColor } : style) } { ...rest }>
|
{ (itemCount > 1) &&
|
||||||
{ (itemCount > 1) &&
|
<span className="position-absolute badge border bg-danger px-1 rounded-circle">{ itemCount }</span> }
|
||||||
<span className="position-absolute badge border bg-danger px-1 rounded-circle">{ itemCount }</span> }
|
{ (itemUniqueNumber > 0) &&
|
||||||
{ itemUnique &&
|
<div className="position-absolute unique-item-counter">
|
||||||
<div className="position-absolute unique-item-counter">
|
<LimitedEditionStyledNumberView value={ itemUniqueNumber } />
|
||||||
<LimitedEditionStyledNumberView value={ itemUniqueNumber } />
|
</div> }
|
||||||
</div> }
|
{ children }
|
||||||
{ children }
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,6 @@ export interface NitroCardGridItemViewProps extends DetailsHTMLAttributes<HTMLDi
|
|||||||
itemColor?: string;
|
itemColor?: string;
|
||||||
itemActive?: boolean;
|
itemActive?: boolean;
|
||||||
itemCount?: number;
|
itemCount?: number;
|
||||||
itemUnique?: boolean;
|
|
||||||
itemUniqueNumber?: number;
|
itemUniqueNumber?: number;
|
||||||
itemUnseen?: boolean;
|
itemUnseen?: boolean;
|
||||||
columns?: number;
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
.nitro-achievements {
|
.nitro-achievements {
|
||||||
width: 650px;
|
width: $achievement-width;
|
||||||
|
height: $achievement-height;
|
||||||
.content-area {
|
|
||||||
min-height: 376px;
|
|
||||||
height: 376px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.score {
|
.score {
|
||||||
border-color: $grid-border-color !important;
|
border-color: $grid-border-color !important;
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
.nitro-avatar-editor {
|
.nitro-avatar-editor {
|
||||||
width: 620px;
|
width: $avatar-editor-width;
|
||||||
|
height: $avatar-editor-height;
|
||||||
.content-area {
|
|
||||||
min-height: 300px;
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.category-item {
|
.category-item {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@ -82,6 +78,37 @@
|
|||||||
|
|
||||||
.wardrobe-grid {
|
.wardrobe-grid {
|
||||||
|
|
||||||
|
.grid-item {
|
||||||
|
height: 140px;
|
||||||
|
max-height: 140px;
|
||||||
|
background-color: $ghost;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
position: absolute;
|
||||||
|
content: '';
|
||||||
|
top: 75%;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: $gray-chateau;
|
||||||
|
box-shadow: 0 0 8px 2px rgba($white,.6);
|
||||||
|
transform: scale(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-image {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
background-position-y: -23px !important;
|
||||||
|
z-index: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.figure-button-container {
|
||||||
|
background-color: $gray-chateau;
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.grid-item-container {
|
.grid-item-container {
|
||||||
height: 142px !important;
|
height: 142px !important;
|
||||||
max-height: 142px !important;
|
max-height: 142px !important;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { FC, useCallback } from 'react';
|
import { FC, useCallback } from 'react';
|
||||||
import { NitroCardGridView } from '../../../../layout/card/grid/NitroCardGridView';
|
import { NitroCardGridView } from '../../../../layout/card/grid/NitroCardGridView';
|
||||||
import { NitroCardGridThemes } from '../../../../layout/card/grid/NitroCardGridView.types';
|
|
||||||
import { AvatarEditorGridPartItem } from '../../common/AvatarEditorGridPartItem';
|
import { AvatarEditorGridPartItem } from '../../common/AvatarEditorGridPartItem';
|
||||||
import { AvatarEditorFigureSetItemView } from '../figure-set-item/AvatarEditorFigureSetItemView';
|
import { AvatarEditorFigureSetItemView } from '../figure-set-item/AvatarEditorFigureSetItemView';
|
||||||
import { AvatarEditorFigureSetViewProps } from './AvatarEditorFigureSetView.types';
|
import { AvatarEditorFigureSetViewProps } from './AvatarEditorFigureSetView.types';
|
||||||
@ -23,7 +22,7 @@ export const AvatarEditorFigureSetView: FC<AvatarEditorFigureSetViewProps> = pro
|
|||||||
}, [ model, category, setMaxPaletteCount ]);
|
}, [ model, category, setMaxPaletteCount ]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NitroCardGridView columns={ 3 } theme={ NitroCardGridThemes.THEME_SHADOWED }>
|
<NitroCardGridView columns={ 3 }>
|
||||||
{ (category.parts.length > 0) && category.parts.map((item, index) =>
|
{ (category.parts.length > 0) && category.parts.map((item, index) =>
|
||||||
{
|
{
|
||||||
return <AvatarEditorFigureSetItemView key={ index } partItem={ item } onClick={ selectPart } />;
|
return <AvatarEditorFigureSetItemView key={ index } partItem={ item } onClick={ selectPart } />;
|
||||||
|
@ -71,7 +71,7 @@ export const AvatarEditorModelView: FC<AvatarEditorModelViewProps> = props =>
|
|||||||
<div className="col-5 d-flex flex-column h-100">
|
<div className="col-5 d-flex flex-column h-100">
|
||||||
<AvatarEditorFigureSetView model={ model } category={ activeCategory } setMaxPaletteCount={ setMaxPaletteCount } />
|
<AvatarEditorFigureSetView model={ model } category={ activeCategory } setMaxPaletteCount={ setMaxPaletteCount } />
|
||||||
</div>
|
</div>
|
||||||
<div className="col-5 d-flex flex-column h-100">
|
<div className="col-5 d-flex flex-column h-100 gap-2">
|
||||||
{ (maxPaletteCount >= 1) &&
|
{ (maxPaletteCount >= 1) &&
|
||||||
<AvatarEditorPaletteSetView model={ model } category={ activeCategory } paletteSet={ activeCategory.getPalette(0) } paletteIndex={ 0 } /> }
|
<AvatarEditorPaletteSetView model={ model } category={ activeCategory } paletteSet={ activeCategory.getPalette(0) } paletteIndex={ 0 } /> }
|
||||||
{ (maxPaletteCount === 2) &&
|
{ (maxPaletteCount === 2) &&
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { FC, useCallback } from 'react';
|
import { FC, useCallback } from 'react';
|
||||||
import { NitroCardGridView } from '../../../../layout/card/grid/NitroCardGridView';
|
import { NitroCardGridView } from '../../../../layout/card/grid/NitroCardGridView';
|
||||||
import { NitroCardGridThemes } from '../../../../layout/card/grid/NitroCardGridView.types';
|
|
||||||
import { AvatarEditorGridColorItem } from '../../common/AvatarEditorGridColorItem';
|
import { AvatarEditorGridColorItem } from '../../common/AvatarEditorGridColorItem';
|
||||||
import { AvatarEditorPaletteSetItem } from '../palette-set-item/AvatarEditorPaletteSetItem';
|
import { AvatarEditorPaletteSetItem } from '../palette-set-item/AvatarEditorPaletteSetItem';
|
||||||
import { AvatarEditorPaletteSetViewProps } from './AvatarEditorPaletteSetView.types';
|
import { AvatarEditorPaletteSetViewProps } from './AvatarEditorPaletteSetView.types';
|
||||||
@ -19,7 +18,7 @@ export const AvatarEditorPaletteSetView: FC<AvatarEditorPaletteSetViewProps> = p
|
|||||||
}, [ model, category, paletteSet, paletteIndex ]);
|
}, [ model, category, paletteSet, paletteIndex ]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NitroCardGridView columns={ 4 } theme={ NitroCardGridThemes.THEME_SHADOWED } { ...rest }>
|
<NitroCardGridView columns={ 4 } { ...rest }>
|
||||||
{ (paletteSet.length > 0) && paletteSet.map((item, index) =>
|
{ (paletteSet.length > 0) && paletteSet.map((item, index) =>
|
||||||
{
|
{
|
||||||
return <AvatarEditorPaletteSetItem key={ index } colorItem={ item } onClick={ event => selectColor(item) } />;
|
return <AvatarEditorPaletteSetItem key={ index } colorItem={ item } onClick={ event => selectColor(item) } />;
|
||||||
|
@ -5,7 +5,6 @@ import { GetAvatarRenderManager, GetSessionDataManager } from '../../../../api';
|
|||||||
import { SendMessageHook } from '../../../../hooks';
|
import { SendMessageHook } from '../../../../hooks';
|
||||||
import { NitroCardGridItemView } from '../../../../layout/card/grid/item/NitroCardGridItemView';
|
import { NitroCardGridItemView } from '../../../../layout/card/grid/item/NitroCardGridItemView';
|
||||||
import { NitroCardGridView } from '../../../../layout/card/grid/NitroCardGridView';
|
import { NitroCardGridView } from '../../../../layout/card/grid/NitroCardGridView';
|
||||||
import { NitroCardGridThemes } from '../../../../layout/card/grid/NitroCardGridView.types';
|
|
||||||
import { AvatarImageView } from '../../../shared/avatar-image/AvatarImageView';
|
import { AvatarImageView } from '../../../shared/avatar-image/AvatarImageView';
|
||||||
import { CurrencyIcon } from '../../../shared/currency-icon/CurrencyIcon';
|
import { CurrencyIcon } from '../../../shared/currency-icon/CurrencyIcon';
|
||||||
import { AvatarEditorWardrobeViewProps } from './AvatarEditorWardrobeView.types';
|
import { AvatarEditorWardrobeViewProps } from './AvatarEditorWardrobeView.types';
|
||||||
@ -68,7 +67,7 @@ export const AvatarEditorWardrobeView: FC<AvatarEditorWardrobeViewProps> = props
|
|||||||
return (
|
return (
|
||||||
<div className="row h-100">
|
<div className="row h-100">
|
||||||
<div className="col-12 d-flex h-100">
|
<div className="col-12 d-flex h-100">
|
||||||
<NitroCardGridView className="wardrobe-grid" columns={ 5 } theme={ NitroCardGridThemes.THEME_DEFAULT }>
|
<NitroCardGridView className="wardrobe-grid" columns={ 5 }>
|
||||||
{ figures }
|
{ figures }
|
||||||
</NitroCardGridView>
|
</NitroCardGridView>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
.nitro-catalog {
|
.nitro-catalog {
|
||||||
width: 620px;
|
width: $catalog-width;
|
||||||
|
height: $catalog-height;
|
||||||
.content-area {
|
|
||||||
min-height: 350px;
|
|
||||||
height: 350px;
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
font[size="16"] {
|
font[size="16"] {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
.nitro-inventory {
|
.nitro-inventory {
|
||||||
width: 475px;
|
width: $inventory-width;
|
||||||
|
height: $inventory-height;
|
||||||
.content-area {
|
|
||||||
min-height: 240px;
|
|
||||||
height: 240px;
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty-image {
|
.empty-image {
|
||||||
background: url('../../assets/images/inventory/empty.png');
|
background: url('../../assets/images/inventory/empty.png');
|
||||||
|
@ -46,5 +46,5 @@ export const InventoryFurnitureItemView: FC<InventoryFurnitureItemViewProps> = p
|
|||||||
|
|
||||||
const count = groupItem.getUnlockedCount();
|
const count = groupItem.getUnlockedCount();
|
||||||
|
|
||||||
return <NitroCardGridItemView className={ !count ? 'opacity-0-5 ' : '' } itemImage={ groupItem.iconUrl } itemCount={ count } itemActive={ isActive } itemUnique={ groupItem.stuffData.isUnique } itemUniqueNumber={ groupItem.stuffData.uniqueNumber } itemUnseen={ groupItem.hasUnseenItems } onMouseDown={ onMouseEvent } onMouseUp={ onMouseEvent } onMouseOut={ onMouseEvent } />;
|
return <NitroCardGridItemView className={ !count ? 'opacity-0-5 ' : '' } itemImage={ groupItem.iconUrl } itemCount={ count } itemActive={ isActive } itemUniqueNumber={ groupItem.stuffData.uniqueNumber } itemUnseen={ groupItem.hasUnseenItems } onMouseDown={ onMouseEvent } onMouseUp={ onMouseEvent } onMouseOut={ onMouseEvent } />;
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,7 @@ export const InventoryTradeView: FC<InventoryTradeViewProps> = props =>
|
|||||||
const count = item.getUnlockedCount();
|
const count = item.getUnlockedCount();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NitroCardGridItemView key={ index } className={ !count ? 'opacity-0-5 ' : '' } itemImage={ item.iconUrl } itemCount={ count } itemActive={ (groupItem === item) } itemUnique={ item.stuffData.isUnique } itemUniqueNumber={ item.stuffData.uniqueNumber } onClick={ event => (count && setGroupItem(item)) }>
|
<NitroCardGridItemView key={ index } className={ !count ? 'opacity-0-5 ' : '' } itemImage={ item.iconUrl } itemCount={ count } itemActive={ (groupItem === item) } itemUniqueNumber={ item.stuffData.uniqueNumber } onClick={ event => (count && setGroupItem(item)) }>
|
||||||
{ ((count > 0) && (groupItem === item)) &&
|
{ ((count > 0) && (groupItem === item)) &&
|
||||||
<button className="btn btn-success btn-sm trade-button" onClick={ event => attemptItemOffer(1) }>
|
<button className="btn btn-success btn-sm trade-button" onClick={ event => attemptItemOffer(1) }>
|
||||||
<i className="fas fa-chevron-right" />
|
<i className="fas fa-chevron-right" />
|
||||||
@ -255,7 +255,7 @@ export const InventoryTradeView: FC<InventoryTradeViewProps> = props =>
|
|||||||
if(!item) return <NitroCardGridItemView key={ i } />;
|
if(!item) return <NitroCardGridItemView key={ i } />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NitroCardGridItemView key={ i } itemActive={ (ownGroupItem === item) } itemImage={ item.iconUrl } itemCount={ item.getTotalCount() } itemUnique={ item.stuffData.isUnique } itemUniqueNumber={ item.stuffData.uniqueNumber } onClick={ event => setOwnGroupItem(item) }>
|
<NitroCardGridItemView key={ i } itemActive={ (ownGroupItem === item) } itemImage={ item.iconUrl } itemCount={ item.getTotalCount() } itemUniqueNumber={ item.stuffData.uniqueNumber } onClick={ event => setOwnGroupItem(item) }>
|
||||||
{ (ownGroupItem === item) &&
|
{ (ownGroupItem === item) &&
|
||||||
<button className="btn btn-danger btn-sm trade-button left" onClick={ event => removeItem(item) }>
|
<button className="btn btn-danger btn-sm trade-button left" onClick={ event => removeItem(item) }>
|
||||||
<i className="fas fa-chevron-left" />
|
<i className="fas fa-chevron-left" />
|
||||||
@ -275,7 +275,7 @@ export const InventoryTradeView: FC<InventoryTradeViewProps> = props =>
|
|||||||
|
|
||||||
if(!item) return <NitroCardGridItemView key={ i } />;
|
if(!item) return <NitroCardGridItemView key={ i } />;
|
||||||
|
|
||||||
return <NitroCardGridItemView key={ i } itemActive={ (otherGroupItem === item) } itemImage={ item.iconUrl } itemCount={ item.getTotalCount() } itemUnique={ item.stuffData.isUnique } itemUniqueNumber={ item.stuffData.uniqueNumber } onClick={ event => setOtherGroupItem(item) } />;
|
return <NitroCardGridItemView key={ i } itemActive={ (otherGroupItem === item) } itemImage={ item.iconUrl } itemCount={ item.getTotalCount() } itemUniqueNumber={ item.stuffData.uniqueNumber } onClick={ event => setOtherGroupItem(item) } />;
|
||||||
}) }
|
}) }
|
||||||
<div className="col-12 badge bg-muted w-100">{ otherGroupItem ? otherGroupItem.name : LocalizeText('catalog_selectproduct') }</div>
|
<div className="col-12 badge bg-muted w-100">{ otherGroupItem ? otherGroupItem.name : LocalizeText('catalog_selectproduct') }</div>
|
||||||
</NitroCardGridView>
|
</NitroCardGridView>
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
.nitro-navigator {
|
.nitro-navigator {
|
||||||
width: 400px;
|
width: $navigator-width;
|
||||||
|
height: $navigator-height;
|
||||||
.content-area {
|
|
||||||
min-height: 400px;
|
|
||||||
height: 400px;
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nitro-navigator-doorbell {
|
.nitro-navigator-doorbell {
|
||||||
|
@ -3,8 +3,7 @@
|
|||||||
width: 90px;
|
width: 90px;
|
||||||
height: 130px;
|
height: 130px;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position-x: center;
|
background-position: center -8px;
|
||||||
background-position-y: -8px !important;
|
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
image-rendering: pixelated;
|
image-rendering: pixelated;
|
||||||
|
|
||||||
|
@ -14,6 +14,12 @@ export const AvatarImageView: FC<AvatarImageViewProps> = props =>
|
|||||||
{
|
{
|
||||||
if(scale === .5) return '0-5';
|
if(scale === .5) return '0-5';
|
||||||
|
|
||||||
|
if(scale === .75) return '0-75';
|
||||||
|
|
||||||
|
if(scale === 1.25) return '1-25';
|
||||||
|
|
||||||
|
if(scale === 1.50) return '1-50';
|
||||||
|
|
||||||
return scale.toString();
|
return scale.toString();
|
||||||
}, [ scale ]);
|
}, [ scale ]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user