({ ...z })))
const update = (i, field, val) => {
@@ -56,23 +56,34 @@ export default function GeschossDialog({ zeichnungsebenen, recalcOkff, onSave, o
del: { width: 22, flexShrink: 0 },
}
+ const wrapperStyle = embedded ? {
+ width: '100%', height: '100%',
+ background: 'var(--bg-dialog)',
+ display: 'flex', flexDirection: 'column',
+ overflow: 'hidden',
+ } : {
+ position: 'absolute', inset: 0, zIndex: 100,
+ background: 'var(--bg-overlay)',
+ display: 'flex', alignItems: 'flex-start', justifyContent: 'center',
+ paddingTop: 40,
+ }
+ const innerStyle = embedded ? {
+ width: '100%', height: '100%',
+ display: 'flex', flexDirection: 'column',
+ overflow: 'hidden',
+ } : {
+ background: 'var(--bg-dialog)',
+ border: '1px solid var(--border)',
+ borderRadius: 'var(--r-lg)',
+ width: 'calc(100% - 24px)',
+ boxShadow: 'var(--shadow)',
+ display: 'flex', flexDirection: 'column',
+ maxHeight: 'calc(100vh - 80px)',
+ overflow: 'hidden',
+ }
return (
-
-
+
+
{name}
@@ -85,7 +83,8 @@ export default function GeschossManager({
zeichnungsebenen, activeId, onActiveChange, onChange, recalcOkff,
mode, onModeChange,
}) {
- const [dialogOpen, setDialogOpen] = useState(false)
+ // dialogOpen-State entfaellt — Bearbeiten-Dialog laeuft jetzt als
+ // Satelliten-Fenster via openGeschossDialog().
const sorted = [...zeichnungsebenen].reverse()
const gesamthoehe = zeichnungsebenen
@@ -134,7 +133,7 @@ export default function GeschossManager({
-
@@ -166,15 +165,6 @@ export default function GeschossManager({
))}
- {dialogOpen && (
-
{ onChange(updated); setDialogOpen(false) }}
- onClose={() => setDialogOpen(false)}
- />
- )}
-
>
)
}
diff --git a/src/components/GeschossSettingsDialog.jsx b/src/components/GeschossSettingsDialog.jsx
index 9569ffc..f2d3dfd 100644
--- a/src/components/GeschossSettingsDialog.jsx
+++ b/src/components/GeschossSettingsDialog.jsx
@@ -35,7 +35,7 @@ function Toggle({ label, checked, onChange, hint }) {
)
}
-export default function GeschossSettingsDialog({ geschoss, onSave, onClose }) {
+export default function GeschossSettingsDialog({ geschoss, onSave, onClose, embedded = false }) {
const [draft, setDraft] = useState({ ...geschoss })
const set = (patch) => setDraft({ ...draft, ...patch })
@@ -46,22 +46,37 @@ export default function GeschossSettingsDialog({ geschoss, onSave, onClose }) {
const okff = draft.okff ?? 0
const clipZ = (okff + schnitt).toFixed(2)
+ // embedded=true: in einem Satelliten-Fenster gerendert — kein Backdrop,
+ // keine Width-Constraint, fuellt das ganze WebView.
+ const Wrapper = embedded ? 'div' : 'div'
+ const wrapperStyle = embedded ? {
+ width: '100%', height: '100%',
+ background: 'var(--bg-dialog)',
+ display: 'flex', flexDirection: 'column',
+ overflow: 'hidden',
+ } : {
+ position: 'absolute', inset: 0, zIndex: 150,
+ background: 'var(--bg-overlay)',
+ display: 'flex', alignItems: 'flex-start', justifyContent: 'center',
+ paddingTop: 30,
+ }
+ const innerStyle = embedded ? {
+ width: '100%', height: '100%',
+ display: 'flex', flexDirection: 'column',
+ overflow: 'hidden',
+ } : {
+ background: 'var(--bg-dialog)',
+ border: '1px solid var(--border)',
+ borderRadius: 'var(--r-lg)',
+ boxShadow: 'var(--shadow-3)',
+ width: 'calc(100% - 16px)', maxWidth: 280,
+ display: 'flex', flexDirection: 'column',
+ overflow: 'hidden',
+ }
+
return (
-
-
+
+
{/* Header */}
Übernehmen
-
+
)
}
diff --git a/src/lib/rhinoBridge.js b/src/lib/rhinoBridge.js
index 3674f0e..52f1401 100644
--- a/src/lib/rhinoBridge.js
+++ b/src/lib/rhinoBridge.js
@@ -285,6 +285,9 @@ export function openGeschossSettings(geschoss) {
export function openEbenenSettings(ebene, hatchPatterns) {
send('OPEN_EBENEN_SETTINGS', { ebene, hatchPatterns })
}
+export function openGeschossDialog(zeichnungsebenen) {
+ send('OPEN_GESCHOSS_DIALOG', { zeichnungsebenen })
+}
export function applyVisibility(activeZ, zeichnungsebenen, activeCode, ebenen, zMode, eMode) {
// Split-Panels koennen mit null/[] fuer fremde Slice aufrufen — Backend
diff --git a/src/main.jsx b/src/main.jsx
index 0263c60..89d2f54 100644
--- a/src/main.jsx
+++ b/src/main.jsx
@@ -5,6 +5,7 @@ import App from './App.jsx'
import ZeichnungsebenenApp from './ZeichnungsebenenApp.jsx'
import GeschossSettingsApp from './GeschossSettingsApp.jsx'
import EbenenSettingsApp from './EbenenSettingsApp.jsx'
+import GeschossDialogApp from './GeschossDialogApp.jsx'
import GestaltungApp from './GestaltungApp.jsx'
import AusschnitteApp from './AusschnitteApp.jsx'
import MassstabApp from './MassstabApp.jsx'
@@ -28,6 +29,7 @@ const RootApp = mode === 'gestaltung' ? GestaltungApp
: mode === 'zeichnungsebenen' ? ZeichnungsebenenApp
: mode === 'geschoss_settings' ? GeschossSettingsApp
: mode === 'ebenen_settings' ? EbenenSettingsApp
+ : mode === 'geschoss_dialog' ? GeschossDialogApp
: App
window.onerror = function (msg, src, line, col, err) {