diff --git a/packages/frontend/src/pages/room.add-object-dialog.vue b/packages/frontend/src/pages/room.add-object-dialog.vue
index 5562a89b60..d10021d3bb 100644
--- a/packages/frontend/src/pages/room.add-object-dialog.vue
+++ b/packages/frontend/src/pages/room.add-object-dialog.vue
@@ -9,9 +9,8 @@ SPDX-License-Identifier: AGPL-3.0-only
:width="1000"
:height="600"
:scroll="false"
- :withOkButton="true"
+ :withOkButton="false"
@close="cancel()"
- @ok="ok()"
@closed="emit('closed')"
>
カタログ
@@ -31,22 +30,33 @@ SPDX-License-Identifier: AGPL-3.0-only
-
-
-
-
+
+
+
+
+
+
+
-
-
-
updateObjectOption(k, v)">
+
+
+ updateObjectOption(k, v)">
+
+
-
-
+
+
@@ -131,12 +141,11 @@ function updateObjectOption(k: string, v: any) {
function ok() {
if (selectedId.value == null) return;
- const recentlyUsed = store.s.recentlyUsedRoomObjects;
- if (!recentlyUsed.includes(selectedId.value)) {
- recentlyUsed.unshift(selectedId.value);
- if (recentlyUsed.length > 30) recentlyUsed.pop();
- store.set('recentlyUsedRoomObjects', recentlyUsed);
- }
+ let recentlyUsed = store.s.recentlyUsedRoomObjects;
+ if (recentlyUsed.includes(selectedId.value)) recentlyUsed = recentlyUsed.filter(id => id !== selectedId.value);
+ recentlyUsed.unshift(selectedId.value);
+ if (recentlyUsed.length > 30) recentlyUsed.pop();
+ store.set('recentlyUsedRoomObjects', recentlyUsed);
emit('ok', {
id: selectedId.value,
@@ -177,7 +186,7 @@ async function cancel() {
.catalogItem {
}
-.preview {
+.previewContainer {
position: absolute;
top: 0;
left: 0;
@@ -185,6 +194,19 @@ async function cancel() {
height: 100%;
z-index: 10;
overflow: clip;
+ backdrop-filter: blur(12px);
+}
+
+.preview {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: calc(100% - 30px);
+ z-index: 10;
+ border-radius: 16px 16px 0 0;
+ overflow: clip;
+ background: var(--MI_THEME-panel)
}
.canvas {
@@ -198,14 +220,22 @@ async function cancel() {
.unselectButton {
position: absolute;
- top: 8px;
- left: 8px;
+ top: 10px;
+ left: 10px;
}
.customizeButton {
position: absolute;
- top: 8px;
- right: 8px;
+ top: 10px;
+ right: 10px;
+}
+
+.addButton {
+ position: absolute;
+ bottom: 10px;
+ left: 0;
+ right: 0;
+ margin: 0 auto;
}
.customize {
@@ -220,6 +250,26 @@ async function cancel() {
padding: 24px;
}
+.transition_preview_enterActive,
+.transition_preview_leaveActive {
+ opacity: 1;
+ transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.transition_preview_enterFrom,
+.transition_preview_leaveTo {
+ opacity: 0;
+}
+
+.transition_preview_enterActive .preview,
+.transition_preview_leaveActive .preview {
+ transform: translateX(0);
+ transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.transition_preview_enterFrom .preview,
+.transition_preview_leaveTo .preview {
+ transform: translateY(200px);
+}
+
.transition_options_enterActive,
.transition_options_leaveActive {
opacity: 1;