@memberjunction/ng-code-editor
A flexible Angular code editor component built on CodeMirror 6, with syntax highlighting for 150+ languages, Angular forms integration, and extensive customization options.
Overview
Section titled “Overview”The @memberjunction/ng-code-editor package wraps CodeMirror 6 in an Angular component with full support for ngModel, formControlName, and ControlValueAccessor. It provides syntax highlighting, line wrapping, whitespace visualization, configurable indentation, and runtime language switching — all reactive to input property changes.
graph TD
A[CodeEditorModule] --> B[CodeEditorComponent]
A --> C[ToolbarConfig]
B --> D["CodeMirror 6 EditorView"]
D --> E["Language Support
(150+ languages)"]
D --> F["Form Integration
(ngModel / formControl)"]
D --> G["Extensions
(themes, keymaps, custom)"]
B --> H["Setup Modes"]
H --> H1["basic (full features)"]
H --> H2["minimal (lightweight)"]
H --> H3["null (custom only)"]
style A fill:#2d6a9f,stroke:#1a4971,color:#fff
style B fill:#7c5295,stroke:#563a6b,color:#fff
style D fill:#2d8659,stroke:#1a5c3a,color:#fff
style H fill:#b8762f,stroke:#8a5722,color:#fff
Installation
Section titled “Installation”npm install @memberjunction/ng-code-editorImport the Module
Section titled “Import the Module”import { CodeEditorModule } from '@memberjunction/ng-code-editor';
@NgModule({ imports: [CodeEditorModule]})export class AppModule { }Basic Usage
Section titled “Basic Usage”<mj-code-editor [value]="code" [language]="'javascript'" [placeholder]="'// Enter your code here...'" (change)="onCodeChange($event)"></mj-code-editor>With ngModel
Section titled “With ngModel”<mj-code-editor [(ngModel)]="code" [languages]="languages" [language]="'typescript'" [lineWrapping]="true" [indentWithTab]="true"></mj-code-editor>import { languages } from '@codemirror/language-data';
export class MyComponent { code = ''; languages = languages;}With Reactive Forms
Section titled “With Reactive Forms”<form [formGroup]="form"> <mj-code-editor formControlName="query" [languages]="languages" [language]="'sql'" [placeholder]="'SELECT * FROM ...'" [setup]="'basic'"> </mj-code-editor></form>API Reference
Section titled “API Reference”Component Selector
Section titled “Component Selector”mj-code-editor
Inputs
Section titled “Inputs”| Input | Type | Default | Description |
|---|---|---|---|
value | string | '' | The editor’s content |
disabled | boolean | false | Disables the editor |
readonly | boolean | false | Makes the editor read-only |
placeholder | string | '' | Placeholder text when empty |
indentWithTab | boolean | false | Tab key indents instead of focusing next element |
indentUnit | string | '' | Indentation string (e.g., ' ' for 2 spaces) |
lineWrapping | boolean | false | Wrap long lines |
highlightWhitespace | boolean | false | Visualize whitespace characters |
languages | LanguageDescription[] | [] | Available language descriptions (static) |
language | string | '' | Current language for syntax highlighting |
setup | 'basic' | 'minimal' | null | 'basic' | Built-in editor setup |
extensions | Extension[] | [] | Additional CodeMirror extensions |
autoFocus | boolean | false | Focus editor on init (static) |
root | Document | ShadowRoot | undefined | Custom root for the editor (static) |
Outputs
Section titled “Outputs”| Output | Type | Description |
|---|---|---|
change | EventEmitter<string> | Content changed |
focus | EventEmitter<void> | Editor gained focus |
blur | EventEmitter<void> | Editor lost focus |
Public Properties
Section titled “Public Properties”| Property | Type | Description |
|---|---|---|
view | EditorView | undefined | Underlying CodeMirror EditorView instance |
Setup Modes
Section titled “Setup Modes”'basic'(default): Full setup with line numbers, fold gutters, search, bracket matching'minimal': Undo/redo history and basic keymaps onlynull: No built-in setup; complete customization via extensions
Dependencies
Section titled “Dependencies”| Package | Description |
|---|---|
@memberjunction/core | Core framework |
@memberjunction/core-entities | Entity definitions |
@memberjunction/global | Global utilities |
@memberjunction/ng-container-directives | Container directives |
codemirror | CodeMirror 6 core |
@codemirror/lang-javascript | JavaScript/TypeScript language |
@codemirror/lang-json | JSON language |
@codemirror/lang-python | Python language |
@codemirror/lang-sql | SQL language |
@codemirror/language-data | 150+ language definitions |
@codemirror/merge | Merge/diff extensions |
Peer Dependencies
Section titled “Peer Dependencies”@angular/common^21.x@angular/core^21.x
cd packages/Angular/Generic/code-editornpm run buildLicense
Section titled “License”ISC