/* MgGridInfoPanel styles - Global CSS for proper container query support */ /* Main panel - contained within splitter pane */ .mg-grid-info-panel { container-type: inline-size; container-name: infopanel; background-color: var(--dxbl-bg-secondary, #f8f9fa); transition: background-color 0.3s ease, border-color 0.3s ease; display: flex; flex-direction: column; overflow: hidden; min-height: 0; max-height: 100%; } .mg-grid-info-panel.edit-mode { background-color: #fffbeb !important; border-left: 3px solid #f59e0b !important; } .mg-grid-info-panel.view-mode { background-color: #f8f9fa !important; border-left: 3px solid transparent !important; } /* Content area - scrollable, takes remaining space */ .mg-info-panel-content { flex: 1 1 0; overflow-y: auto; overflow-x: hidden; padding: 1rem; min-height: 0; } /* Grid layout with responsive column wrapping based on panel width */ .mg-info-panel-grid { display: grid; grid-template-columns: 1fr; gap: 0.75rem; } /* Fixed column count classes - override responsive behavior */ .mg-columns-1 .mg-info-panel-grid { grid-template-columns: 1fr !important; } .mg-columns-2 .mg-info-panel-grid { grid-template-columns: repeat(2, 1fr) !important; } .mg-columns-3 .mg-info-panel-grid { grid-template-columns: repeat(3, 1fr) !important; } .mg-columns-4 .mg-info-panel-grid { grid-template-columns: repeat(4, 1fr) !important; } /* Responsive layouts using container queries */ /* 2 columns for medium width (>= 400px) */ @container infopanel (min-width: 400px) { .mg-grid-info-panel:not(.mg-columns-1):not(.mg-columns-2):not(.mg-columns-3):not(.mg-columns-4) .mg-info-panel-grid { grid-template-columns: repeat(2, 1fr); } } /* 3 columns for wider panels (>= 800px) */ @container infopanel (min-width: 800px) { .mg-grid-info-panel:not(.mg-columns-1):not(.mg-columns-2):not(.mg-columns-3):not(.mg-columns-4) .mg-info-panel-grid { grid-template-columns: repeat(3, 1fr); } } /* 4 columns for very wide panels (>= 1300px) */ @container infopanel (min-width: 1300px) { .mg-grid-info-panel:not(.mg-columns-1):not(.mg-columns-2):not(.mg-columns-3):not(.mg-columns-4) .mg-info-panel-grid { grid-template-columns: repeat(4, 1fr); } } .mg-info-panel-item { min-width: 0; } /* Toolbar styling */ .mg-info-panel-toolbar { padding: 0.25rem 0.5rem; background-color: var(--dxbl-bg, #fff); } /* View mode value styling - simple span with DevExpress theme */ .mg-info-panel-value { display: block; padding: 0.25rem 0; font-size: var(--dxbl-font-size, 0.875rem); color: var(--dxbl-text, #212529); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .mg-info-panel-value-numeric { font-variant-numeric: tabular-nums; } .mg-info-panel-value-date { font-variant-numeric: tabular-nums; } /* Splitter pane styling */ .mg-grid-with-info-panel { height: 100%; } .mg-info-panel-pane { background-color: var(--dxbl-bg-secondary, #f8f9fa); } /* Fullscreen window styling */ .mg-fullscreen-window { position: fixed !important; top: 0 !important; left: 0 !important; margin: 0 !important; border-radius: 0 !important; } .mg-fullscreen-window .dxbl-window-body { height: 100%; overflow: hidden; display: flex; flex-direction: column; } .mg-fullscreen-content { flex: 1; height: 100%; overflow: hidden; display: flex; flex-direction: column; } .mg-fullscreen-content .mg-grid-with-info-panel { flex: 1; height: 100%; } .mg-fullscreen-content .dxbl-grid { height: 100% !important; } /* Fullscreen icon classes */ .grid-fullscreen::before { content: "\e90c"; font-family: 'devextreme-icons'; } .grid-fullscreen-exit::before { content: "\e90d"; font-family: 'devextreme-icons'; }