MediaWiki:CodeMirror.css: Difference between revisions

From MB Wiki
Jump to navigation Jump to search
m (try fix the code-editor character spacing issue)
m (2nd fix for the CodeMirror spacing issue)
 
Line 1: Line 1:
/* ============================================
/* ============================================
   CodeMirror & WikiEditor Theme Integration
   CODEMIRROR EDITOR FIXES
   Fix for character insertion positioning
   Resolves character insertion positioning
   ============================================ */
   ============================================ */


/* Base styling - keep existing but add z-index fix */
/* Reset any inherited grid/flex behaviors from main styles */
.wikiEditor-ui {
    display: block !important;
    position: relative !important;
}
 
.wikiEditor-ui-view {
.wikiEditor-ui-view {
     background: var(--theme-page-background-color--secondary);
     background: var(--theme-page-background-color--secondary);
     border: var(--theme-border-color);
     border: 1px solid var(--theme-border-color);
     color: var(--theme-page-text-color);
     color: var(--theme-page-text-color);
     position: relative; /* Added - creates proper stacking context */
     position: relative !important;
    display: block !important;
}
}


/* Ensure editor area doesn't get covered by toolbar sections */
/* CRITICAL: Create proper stacking context */
.wikiEditor-ui .wikiEditor-ui-top,
.wikiEditor-ui .wikiEditor-ui-toolbar,
.wikiEditor-ui .wikiEditor-ui-text,
.wikiEditor-ui .wikiEditor-ui-bottom {
    position: relative;
    z-index: auto;
}
 
/* Editor text area - ensure it's the only element receiving input */
.wikiEditor-ui .wikiEditor-ui-text {
.wikiEditor-ui .wikiEditor-ui-text {
     position: relative;
     position: relative !important;
     z-index: 5; /* Lower than toolbar but above base */
     z-index: 1 !important;
    display: block !important;
    clear: both !important;
}
}


Line 22: Line 39:
     position: relative !important;
     position: relative !important;
     z-index: 1 !important;
     z-index: 1 !important;
     height: auto;
     height: auto !important;
     min-height: 300px;
     min-height: 300px !important;
     font-family: monospace;
     font-family: 'Consolas', 'Monaco', 'Menlo', monospace !important;
     line-height: 1.5;
    font-size: 14px !important;
     line-height: 1.5 !important;
    background: var(--theme-page-background-color--secondary) !important;
    color: var(--theme-page-text-color) !important;
    border: 1px solid var(--theme-border-color) !important;
    border-radius: 4px !important;
}
}


/* Ensure CodeMirror scroll container doesn't capture events incorrectly */
.CodeMirror-scroll {
.CodeMirror-scroll {
     position: relative !important;
     position: relative !important;
    overflow: auto !important;
    height: 100% !important;
}
/* Cursor positioning - CRITICAL FIX */
.CodeMirror-cursor {
    position: absolute !important;
    z-index: 100 !important;
    pointer-events: none !important;
    border-left: 2px solid var(--theme-page-text-color) !important;
}
.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
    position: relative !important;
    z-index: 1 !important;
}
}


/* Ensure focused CodeMirror stays above */
.CodeMirror-lines {
.CodeMirror-focused {
    position: relative !important;
     z-index: 6 !important;
     z-index: 1 !important;
    padding: 4px 0 !important;
}
}


/* Fix for cursor and selection positioning */
.CodeMirror-focused {
.CodeMirror-cursor {
     z-index: 2 !important;
     z-index: 100 !important;
}
}


/* Selection highlighting */
.CodeMirror-selected {
.CodeMirror-selected {
    background: rgba(108, 92, 231, 0.3) !important;
     z-index: 50 !important;
     z-index: 50 !important;
}
}


/* Sub styling - FIXED: More specific selectors to avoid hiding necessary elements */
.CodeMirror-focused .CodeMirror-selected {
.wikiEditor-ui-toolbar,
    background: rgba(108, 92, 231, 0.4) !important;
.wikiEditor-ui-toolbar .group,
}
.wikiEditor-ui-toolbar .sections,
 
.wikiEditor-ui-toolbar .section,
/* Line numbers */
.wikiEditor-ui-toolbar #msupload-dropzone,
.CodeMirror-gutters {
.wikiEditor-ui-toolbar #msupload-div {
    background: var(--theme-page-background-color) !important;
    border-right: 1px solid var(--theme-border-color) !important;
    z-index: 1 !important;
}
 
.CodeMirror-linenumber {
    color: rgba(var(--theme-border-color-rgb), 0.7) !important;
    padding: 0 8px 0 5px !important;
}
 
/* Toolbar positioning - ensure it doesn't overlay editor input area */
.wikiEditor-ui-toolbar {
    position: relative !important;
    z-index: 10 !important;
    background: var(--theme-page-background-color--secondary) !important;
    border-bottom: 1px solid var(--theme-border-color) !important;
}
 
.wikiEditor-ui-toolbar .group {
     background: var(--theme-page-background-color--secondary);
     background: var(--theme-page-background-color--secondary);
     border-color: var(--theme-border-color);
     border-color: var(--theme-border-color);
     color: var(--theme-page-text-color);
     color: var(--theme-page-text-color);
     fill: var(--theme-page-text-color);
     fill: var(--theme-page-text-color);
    position: relative;
    z-index: 10;
}
}


/* Specific fix for toolbar groups - ensure they stay above editor */
/* Sections - ensure hidden sections don't block input */
.wikiEditor-ui-toolbar .toolbar {
.wikiEditor-ui-toolbar .sections {
     position: relative;
    position: relative !important;
     z-index: 20;
    z-index: 5 !important;
}
 
.wikiEditor-ui-toolbar .section-hidden {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
}
 
/* Dropdown menus - must float above everything */
.wikiEditor-ui-toolbar .menu {
     position: absolute !important;
     z-index: 1000 !important;
    background: var(--theme-page-background-color--secondary) !important;
    border: 1px solid var(--theme-border-color) !important;
    border-radius: 4px !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
}
}


.wikiEditor-ui-toolbar .group {
.wikiEditor-ui-toolbar .options {
     position: relative;
     background: var(--theme-page-background-color--secondary) !important;
    display: inline-block;
    vertical-align: middle;
}
}


/* Fix for labels - preserve display property */
.wikiEditor-ui-toolbar .group .label,
.wikiEditor-ui-toolbar .tool-select .label,
.wikiEditor-ui-toolbar .menu .options .option {
.wikiEditor-ui-toolbar .menu .options .option {
     background: var(--theme-page-background-color--secondary);
     background: var(--theme-page-background-color--secondary);
     color: var(--theme-page-text-color);
     color: var(--theme-page-text-color);
     fill: var(--theme-page-text-color);
     padding: 6px 12px;
     border: none; /* Border variable may not work as-is, use actual border style */
     cursor: pointer;
     display: inline-block; /* Preserve layout */
}
 
.wikiEditor-ui-toolbar .menu .options .option:hover {
     background: var(--accent) !important;
    color: white !important;
}
}


/* Tabs styling - keep but ensure proper z-index */
/* Tabs styling */
.wikiEditor-ui-toolbar .tabs {
.wikiEditor-ui-toolbar .tabs {
     position: relative;
     position: relative !important;
     z-index: 15;
     z-index: 8 !important;
    background: var(--theme-page-background-color--secondary) !important;
    border-top: 1px solid var(--theme-border-color) !important;
}
}


.wikiEditor-ui-toolbar .tabs span.tab a,
.wikiEditor-ui-toolbar .tabs span.tab a {
.wikiEditor-ui-toolbar .group .oo-ui-iconElement-icon {
     color: var(--theme-link-color);
     color: var(--theme-link-color);
     fill: var(--theme-link-color);
     fill: var(--theme-link-color);
Line 96: Line 173:
.wikiEditor-ui-toolbar .tabs span.tab a.current {
.wikiEditor-ui-toolbar .tabs span.tab a.current {
     color: var(--theme-page-text-color);
     color: var(--theme-page-text-color);
    font-weight: 600;
}
/* Character palette */
.wikiEditor-ui-toolbar .booklet {
    position: relative !important;
    z-index: 15 !important;
    background: var(--theme-page-background-color--secondary) !important;
}
}


/* Character palette - FIXED: Ensure proper positioning */
.wikiEditor-ui-toolbar #wikiEditor-section-characters {
.wikiEditor-ui-toolbar #wikiEditor-section-characters {
     position: relative;
     background: var(--theme-page-background-color--secondary) !important;
    z-index: 30; /* Higher than editor to be clickable */
}
}


/* Character palette options */
.wikiEditor-ui-toolbar .page-characters div span,
.wikiEditor-ui-toolbar .page-characters div span,
.wikiEditor-ui-toolbar #wikiEditor-section-characters [role="option"] {
.wikiEditor-ui-toolbar #wikiEditor-section-characters [role="option"] {
     color: var(--theme-page-text-color);
     color: var(--theme-page-text-color);
     display: inline-block;
     display: inline-block !important;
     cursor: pointer;
     cursor: pointer !important;
     padding: 2px 6px;
     padding: 4px 8px !important;
     pointer-events: auto; /* Ensure clickable */
     border-radius: 3px !important;
    transition: background 0.15s ease !important;
}
}


.wikiEditor-ui-toolbar #wikiEditor-section-characters [role="option"]:hover,
.wikiEditor-ui-toolbar #wikiEditor-section-characters [role="option"]:hover {
.wikiEditor-ui-toolbar #wikiEditor-section-characters [role="option"].current {
     background: var(--accent) !important;
     color: var(--theme-page-text-color);
     color: white !important;
     background-color: var(--theme-page-background-color) !important;
}
}


/* FIXED: Make section-hidden truly hidden without breaking layout */
/* OOUI Button fixes */
.wikiEditor-ui-toolbar .section-hidden {
.wikiEditor-ui-toolbar .oo-ui-buttonElement-button {
     display: none !important;
     background: transparent !important;
     visibility: hidden;
    border: none !important;
     pointer-events: none;
     padding: 4px 8px !important;
     border-radius: 4px !important;
}
}


/* Hide specific insert group buttons as originally intended */
.wikiEditor-ui-toolbar .oo-ui-buttonElement-button:hover {
.wikiEditor-ui-toolbar #wikiEditor-section-main .group-insert a.tool-button,
     background: var(--accent) !important;
.wikiEditor-ui-toolbar #msupload-container,
.ve-init-mw-editSwitch {
     display: none;
}
}


/* Fix for custom MsWikiEditor tool buttons */
.wikiEditor-ui-toolbar .oo-ui-buttonElement-button .oo-ui-iconElement-icon {
.wikiEditor-ui-toolbar a.tool-button[rel="anam"] {
     filter: brightness(0) invert(1) !important;
    display: inline-block !important;  /* Override any hiding */
    width: 24px;
    height: 24px;
    background-position: center;
    background-repeat: no-repeat;
    background-size: 16px 16px;
     text-indent: -9999px;
    overflow: hidden;
    vertical-align: middle;
}
}


/* If you want to hide custom MsWikiEditor buttons, use this instead: */
/* Active toggle button */
.wikiEditor-ui-toolbar a.tool-button[rel="anam"] {
.wikiEditor-ui-toolbar .oo-ui-toggleWidget-on .oo-ui-buttonElement-button {
     display: none !important;
     background: var(--accent) !important;
}
}
/* Remove the line above if you want to keep them visible */


/* Dropdown menus - ensure they float above editor */
/* Help section tables */
.wikiEditor-ui-toolbar .menu {
.wikiEditor-ui-toolbar .page-table table {
     position: absolute;
     background: var(--theme-page-background-color--secondary) !important;
     z-index: 1000;
    color: var(--theme-page-text-color) !important;
     border-collapse: collapse !important;
    width: 100% !important;
}
}


.wikiEditor-ui-toolbar .options {
.wikiEditor-ui-toolbar .page-table th,
    background: var(--theme-page-background-color--secondary);
.wikiEditor-ui-toolbar .page-table td {
     border: 1px solid var(--theme-border-color);
     border: 1px solid var(--theme-border-color) !important;
    padding: 8px 12px !important;
}
}


/* Booklet sections (Help, Special characters) */
.wikiEditor-ui-toolbar .page-table th {
.wikiEditor-ui-toolbar .booklet {
     background: var(--accent) !important;
     position: relative;
     color: white !important;
    clear: both;
     z-index: 25;
}
}


.wikiEditor-ui-toolbar .booklet .index {
/* Hide custom MsWikiEditor buttons if not needed */
     background: var(--theme-page-background-color--secondary);
.wikiEditor-ui-toolbar a.tool-button[rel="anam"] {
     display: none !important;
}
}


.wikiEditor-ui-toolbar .booklet .pages {
/* Clear float at bottom */
     background: var(--theme-page-background-color--secondary);
.wikiEditor-ui-toolbar > div[style*="clear: both"] {
     display: block !important;
    clear: both !important;
    height: 1px !important;
    pointer-events: none !important;
}
}


/* Dialog styling - keep existing */
/* Ensure the actual textarea/editor is ALWAYS interactive */
.skin-vector-dark .oo-ui-buttonElement-button,
.wikiEditor-ui textarea#wpTextbox1,
.skin-vector-dark .ui-dialog .ui-dialog-titlebar-close {
.wikiEditor-ui .CodeMirror,
     filter: invert();
.wikiEditor-ui .CodeMirror textarea {
    pointer-events: auto !important;
    user-select: text !important;
    -webkit-user-select: text !important;
    position: relative !important;
     z-index: 2 !important;
}
}


.ui-dialog,
/* Fix for any overlay issues from main layout */
.ui-dialog > div,
body .wikiEditor-ui {
body .ui-dialog .ui-widget-header {
     isolation: isolate !important;
     color: var(--theme-page-text-color);
    background: var(--theme-page-background-color) !important;
    background-image: none;
}
}


.ui-dialog .ui-button-text {
body .wikiEditor-ui-view {
     background: var(--theme-page-background-color--secondary);
     isolation: isolate !important;
    color: var(--theme-link-color);
}
}


/* ============================================
/* Dark theme specific fixes */
  CRITICAL FIX: Ensure editor receives input correctly
.skin-vector-dark .wikiEditor-ui .oo-ui-iconElement-icon {
  ============================================ */
     filter: invert(1) !important;
 
/* Prevent any element from capturing clicks meant for editor */
.wikiEditor-ui-toolbar .section:not(.section-hidden) {
    pointer-events: auto;
}
 
/* Make sure the editor area is fully interactive */
.wikiEditor-ui .CodeMirror,
.wikiEditor-ui textarea#wpTextbox1 {
    pointer-events: auto !important;
    user-select: text !important;
     -webkit-user-select: text !important;
}
 
/* Fix for any overlay issues */
.wikiEditor-ui-toolbar::after,
.wikiEditor-ui-toolbar > div[style*="clear: both"] {
    content: "";
    display: table;
    clear: both;
}
}


/* Ensure clear div doesn't block input */
.skin-vector-dark .wikiEditor-ui-toolbar .oo-ui-buttonElement-button:hover .oo-ui-iconElement-icon {
.wikiEditor-ui-toolbar > div[style*="clear: both"] {
     filter: invert(1) !important;
     pointer-events: none;
}
}


/* Fix for var() fallback if CSS variables aren't defined */
/* Responsive fixes */
.wikiEditor-ui-view {
@media (max-width: 768px) {
    --theme-page-background-color--secondary: var(--theme-page-background-color--secondary, #f8f9fa);
    .wikiEditor-ui-toolbar .group {
     --theme-border-color: var(--theme-border-color, #a2a9b1);
        flex-wrap: wrap;
     --theme-page-text-color: var(--theme-page-text-color, #202122);
     }
     --theme-link-color: var(--theme-link-color, #3366cc);
      
     --theme-page-background-color: var(--theme-page-background-color, #ffffff);
     .CodeMirror {
        font-size: 16px !important; /* Prevent zoom on mobile */
     }
}
}

Latest revision as of 04:13, 20 April 2026

/* ============================================
   CODEMIRROR EDITOR FIXES
   Resolves character insertion positioning
   ============================================ */

/* Reset any inherited grid/flex behaviors from main styles */
.wikiEditor-ui {
    display: block !important;
    position: relative !important;
}

.wikiEditor-ui-view {
    background: var(--theme-page-background-color--secondary);
    border: 1px solid var(--theme-border-color);
    color: var(--theme-page-text-color);
    position: relative !important;
    display: block !important;
}

/* CRITICAL: Create proper stacking context */
.wikiEditor-ui .wikiEditor-ui-top,
.wikiEditor-ui .wikiEditor-ui-toolbar,
.wikiEditor-ui .wikiEditor-ui-text,
.wikiEditor-ui .wikiEditor-ui-bottom {
    position: relative;
    z-index: auto;
}

/* Editor text area - ensure it's the only element receiving input */
.wikiEditor-ui .wikiEditor-ui-text {
    position: relative !important;
    z-index: 1 !important;
    display: block !important;
    clear: both !important;
}

/* CodeMirror specific fixes */
.CodeMirror {
    position: relative !important;
    z-index: 1 !important;
    height: auto !important;
    min-height: 300px !important;
    font-family: 'Consolas', 'Monaco', 'Menlo', monospace !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    background: var(--theme-page-background-color--secondary) !important;
    color: var(--theme-page-text-color) !important;
    border: 1px solid var(--theme-border-color) !important;
    border-radius: 4px !important;
}

/* Ensure CodeMirror scroll container doesn't capture events incorrectly */
.CodeMirror-scroll {
    position: relative !important;
    overflow: auto !important;
    height: 100% !important;
}

/* Cursor positioning - CRITICAL FIX */
.CodeMirror-cursor {
    position: absolute !important;
    z-index: 100 !important;
    pointer-events: none !important;
    border-left: 2px solid var(--theme-page-text-color) !important;
}

.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
    position: relative !important;
    z-index: 1 !important;
}

.CodeMirror-lines {
    position: relative !important;
    z-index: 1 !important;
    padding: 4px 0 !important;
}

.CodeMirror-focused {
    z-index: 2 !important;
}

/* Selection highlighting */
.CodeMirror-selected {
    background: rgba(108, 92, 231, 0.3) !important;
    z-index: 50 !important;
}

.CodeMirror-focused .CodeMirror-selected {
    background: rgba(108, 92, 231, 0.4) !important;
}

/* Line numbers */
.CodeMirror-gutters {
    background: var(--theme-page-background-color) !important;
    border-right: 1px solid var(--theme-border-color) !important;
    z-index: 1 !important;
}

.CodeMirror-linenumber {
    color: rgba(var(--theme-border-color-rgb), 0.7) !important;
    padding: 0 8px 0 5px !important;
}

/* Toolbar positioning - ensure it doesn't overlay editor input area */
.wikiEditor-ui-toolbar {
    position: relative !important;
    z-index: 10 !important;
    background: var(--theme-page-background-color--secondary) !important;
    border-bottom: 1px solid var(--theme-border-color) !important;
}

.wikiEditor-ui-toolbar .group {
    background: var(--theme-page-background-color--secondary);
    border-color: var(--theme-border-color);
    color: var(--theme-page-text-color);
    fill: var(--theme-page-text-color);
    position: relative;
    z-index: 10;
}

/* Sections - ensure hidden sections don't block input */
.wikiEditor-ui-toolbar .sections {
    position: relative !important;
    z-index: 5 !important;
}

.wikiEditor-ui-toolbar .section-hidden {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
}

/* Dropdown menus - must float above everything */
.wikiEditor-ui-toolbar .menu {
    position: absolute !important;
    z-index: 1000 !important;
    background: var(--theme-page-background-color--secondary) !important;
    border: 1px solid var(--theme-border-color) !important;
    border-radius: 4px !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
}

.wikiEditor-ui-toolbar .options {
    background: var(--theme-page-background-color--secondary) !important;
}

.wikiEditor-ui-toolbar .menu .options .option {
    background: var(--theme-page-background-color--secondary);
    color: var(--theme-page-text-color);
    padding: 6px 12px;
    cursor: pointer;
}

.wikiEditor-ui-toolbar .menu .options .option:hover {
    background: var(--accent) !important;
    color: white !important;
}

/* Tabs styling */
.wikiEditor-ui-toolbar .tabs {
    position: relative !important;
    z-index: 8 !important;
    background: var(--theme-page-background-color--secondary) !important;
    border-top: 1px solid var(--theme-border-color) !important;
}

.wikiEditor-ui-toolbar .tabs span.tab a {
    color: var(--theme-link-color);
    fill: var(--theme-link-color);
}

.wikiEditor-ui-toolbar .tabs span.tab a.current {
    color: var(--theme-page-text-color);
    font-weight: 600;
}

/* Character palette */
.wikiEditor-ui-toolbar .booklet {
    position: relative !important;
    z-index: 15 !important;
    background: var(--theme-page-background-color--secondary) !important;
}

.wikiEditor-ui-toolbar #wikiEditor-section-characters {
    background: var(--theme-page-background-color--secondary) !important;
}

.wikiEditor-ui-toolbar .page-characters div span,
.wikiEditor-ui-toolbar #wikiEditor-section-characters [role="option"] {
    color: var(--theme-page-text-color);
    display: inline-block !important;
    cursor: pointer !important;
    padding: 4px 8px !important;
    border-radius: 3px !important;
    transition: background 0.15s ease !important;
}

.wikiEditor-ui-toolbar #wikiEditor-section-characters [role="option"]:hover {
    background: var(--accent) !important;
    color: white !important;
}

/* OOUI Button fixes */
.wikiEditor-ui-toolbar .oo-ui-buttonElement-button {
    background: transparent !important;
    border: none !important;
    padding: 4px 8px !important;
    border-radius: 4px !important;
}

.wikiEditor-ui-toolbar .oo-ui-buttonElement-button:hover {
    background: var(--accent) !important;
}

.wikiEditor-ui-toolbar .oo-ui-buttonElement-button .oo-ui-iconElement-icon {
    filter: brightness(0) invert(1) !important;
}

/* Active toggle button */
.wikiEditor-ui-toolbar .oo-ui-toggleWidget-on .oo-ui-buttonElement-button {
    background: var(--accent) !important;
}

/* Help section tables */
.wikiEditor-ui-toolbar .page-table table {
    background: var(--theme-page-background-color--secondary) !important;
    color: var(--theme-page-text-color) !important;
    border-collapse: collapse !important;
    width: 100% !important;
}

.wikiEditor-ui-toolbar .page-table th,
.wikiEditor-ui-toolbar .page-table td {
    border: 1px solid var(--theme-border-color) !important;
    padding: 8px 12px !important;
}

.wikiEditor-ui-toolbar .page-table th {
    background: var(--accent) !important;
    color: white !important;
}

/* Hide custom MsWikiEditor buttons if not needed */
.wikiEditor-ui-toolbar a.tool-button[rel="anam"] {
    display: none !important;
}

/* Clear float at bottom */
.wikiEditor-ui-toolbar > div[style*="clear: both"] {
    display: block !important;
    clear: both !important;
    height: 1px !important;
    pointer-events: none !important;
}

/* Ensure the actual textarea/editor is ALWAYS interactive */
.wikiEditor-ui textarea#wpTextbox1,
.wikiEditor-ui .CodeMirror,
.wikiEditor-ui .CodeMirror textarea {
    pointer-events: auto !important;
    user-select: text !important;
    -webkit-user-select: text !important;
    position: relative !important;
    z-index: 2 !important;
}

/* Fix for any overlay issues from main layout */
body .wikiEditor-ui {
    isolation: isolate !important;
}

body .wikiEditor-ui-view {
    isolation: isolate !important;
}

/* Dark theme specific fixes */
.skin-vector-dark .wikiEditor-ui .oo-ui-iconElement-icon {
    filter: invert(1) !important;
}

.skin-vector-dark .wikiEditor-ui-toolbar .oo-ui-buttonElement-button:hover .oo-ui-iconElement-icon {
    filter: invert(1) !important;
}

/* Responsive fixes */
@media (max-width: 768px) {
    .wikiEditor-ui-toolbar .group {
        flex-wrap: wrap;
    }
    
    .CodeMirror {
        font-size: 16px !important; /* Prevent zoom on mobile */
    }
}