refactor: replace div elements with buttons for side selection in WallProperties; improve material preview layout
This commit is contained in:
commit
752ba96ba8
|
@ -119,7 +119,7 @@ const WallProperties = () => {
|
||||||
|
|
||||||
<div className="material-preview">
|
<div className="material-preview">
|
||||||
<div className="sides-wrapper">
|
<div className="sides-wrapper">
|
||||||
<div
|
<button
|
||||||
className={`side-wrapper ${activeSide === "side1" ? "active" : ""
|
className={`side-wrapper ${activeSide === "side1" ? "active" : ""
|
||||||
}`}
|
}`}
|
||||||
onClick={() => setActiveSide("side1")}
|
onClick={() => setActiveSide("side1")}
|
||||||
|
@ -128,14 +128,15 @@ const WallProperties = () => {
|
||||||
<div className="texture-image">
|
<div className="texture-image">
|
||||||
{selectedMaterials.side1 && (
|
{selectedMaterials.side1 && (
|
||||||
<img
|
<img
|
||||||
|
draggable={false}
|
||||||
src={selectedMaterials.side1.texture}
|
src={selectedMaterials.side1.texture}
|
||||||
alt={selectedMaterials.side1.textureName}
|
alt={selectedMaterials.side1.textureName}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</button>
|
||||||
|
|
||||||
<div
|
<button
|
||||||
className={`side-wrapper ${activeSide === "side2" ? "active" : ""
|
className={`side-wrapper ${activeSide === "side2" ? "active" : ""
|
||||||
}`}
|
}`}
|
||||||
onClick={() => setActiveSide("side2")}
|
onClick={() => setActiveSide("side2")}
|
||||||
|
@ -144,17 +145,19 @@ const WallProperties = () => {
|
||||||
<div className="texture-image">
|
<div className="texture-image">
|
||||||
{selectedMaterials.side2 && (
|
{selectedMaterials.side2 && (
|
||||||
<img
|
<img
|
||||||
|
draggable={false}
|
||||||
src={selectedMaterials.side2.texture}
|
src={selectedMaterials.side2.texture}
|
||||||
alt={selectedMaterials.side2.textureName}
|
alt={selectedMaterials.side2.textureName}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="preview">
|
<div className="preview">
|
||||||
{selectedMaterials[activeSide] && (
|
{selectedMaterials[activeSide] && (
|
||||||
<img
|
<img
|
||||||
|
draggable={false}
|
||||||
src={selectedMaterials[activeSide]!.texture}
|
src={selectedMaterials[activeSide]!.texture}
|
||||||
alt={selectedMaterials[activeSide]!.textureName}
|
alt={selectedMaterials[activeSide]!.textureName}
|
||||||
/>
|
/>
|
||||||
|
@ -168,18 +171,22 @@ const WallProperties = () => {
|
||||||
) : (
|
) : (
|
||||||
<div className="material-container">
|
<div className="material-container">
|
||||||
{materials.map((material, index) => (
|
{materials.map((material, index) => (
|
||||||
<div
|
<button
|
||||||
className="material-wrapper"
|
className="material-wrapper"
|
||||||
key={`${material.textureName}_${index}`}
|
key={`${material.textureName}_${index}`}
|
||||||
onClick={() => handleSelectMaterial(material)}
|
onClick={() => handleSelectMaterial(material)}
|
||||||
>
|
>
|
||||||
<div className="material-property">
|
<div className="material-property">
|
||||||
<div className="material-image">
|
<div className="material-image">
|
||||||
<img src={material.texture} alt={material.textureName} />
|
<img
|
||||||
|
draggable={false}
|
||||||
|
src={material.texture}
|
||||||
|
alt={material.textureName}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="material-name">{material.textureName}</div>
|
<div className="material-name">{material.textureName}</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<button
|
||||||
className="delete-material"
|
className="delete-material"
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
@ -187,8 +194,8 @@ const WallProperties = () => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<RemoveIcon />
|
<RemoveIcon />
|
||||||
</div>
|
</button>
|
||||||
</div>
|
</button>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -1114,6 +1114,7 @@
|
||||||
|
|
||||||
input {
|
input {
|
||||||
padding: 5px 4px;
|
padding: 5px 4px;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown {
|
.dropdown {
|
||||||
|
@ -1527,6 +1528,7 @@
|
||||||
.header {
|
.header {
|
||||||
@include flex-space-between;
|
@include flex-space-between;
|
||||||
border: none;
|
border: none;
|
||||||
|
|
||||||
.eyedrop-button {
|
.eyedrop-button {
|
||||||
@include flex-center;
|
@include flex-center;
|
||||||
}
|
}
|
||||||
|
@ -1534,6 +1536,7 @@
|
||||||
|
|
||||||
.inputs-container {
|
.inputs-container {
|
||||||
@include flex-space-between;
|
@include flex-space-between;
|
||||||
|
|
||||||
.input-container {
|
.input-container {
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
|
@ -1652,6 +1655,143 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sidebar-right-wrapper {
|
||||||
|
.wall-properties-container {
|
||||||
|
.header {
|
||||||
|
|
||||||
|
color: var(--background-color-button);
|
||||||
|
}
|
||||||
|
|
||||||
|
.wall-properties {
|
||||||
|
padding: 12px 0;
|
||||||
|
|
||||||
|
.value-field-container {
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
.input {
|
||||||
|
input {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
max-height: 50vh;
|
||||||
|
|
||||||
|
.header-wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-preview {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 15px;
|
||||||
|
background: var(--Grays-Gray-6, #F2F2F7);
|
||||||
|
padding: 18px 25px;
|
||||||
|
|
||||||
|
.sides-wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #FCFDFD;
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.side-wrapper {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 8px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.label {
|
||||||
|
color: var(--background-color-button);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: #E0DFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.texture-image {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview {
|
||||||
|
width: 90%;
|
||||||
|
// width: 100%;
|
||||||
|
height: 111px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.materials {
|
||||||
|
padding: 6px 12px;
|
||||||
|
max-height: 250px;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
.material-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 6px;
|
||||||
|
|
||||||
|
.material-wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.material-property {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
|
||||||
|
.material-image {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
border-radius: 6px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-material {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.assets-container-main {
|
.assets-container-main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
Loading…
Reference in New Issue