A functional RichText Component made for Angularjs, no installation needed to use it!
<!-- RichText code -->
<div class="rich">
<!-- Controls -->
<div id="toolBar2">
<button type="button" class="intLink controls" (click)="formatDoc('bold');"><img class="controls-img" src="../assets/bold.svg" alt=""> </button>
<button type="button" class="intLink controls" (click)="formatDoc('italic');"><img class="controls-img" src="../assets/italic.svg" alt=""> </button>
<button type="button" class="intLink controls" (click)="formatDoc('underline');"><img class="controls-img" src="../assets/underline.svg" alt=""> </button>
<button type="button" class="intLink controls" (click)="formatDoc('justifyleft');"><img class="controls-img" src="../assets/text-align-left.svg" alt=""></button>
<button type="button" class="intLink controls" (click)="formatDoc('justifycenter');"><img class="controls-img" src="../assets/text-align-center.svg" alt=""> </button>
<button type="button" class="intLink controls" (click)="formatDoc('justifyright');"><img class="controls-img" src="../assets/text-align-right.svg" alt=""> </button>
</div>
<!-- /Controls -->
<!-- Rich text -->
<input class="hidden" formControlName="main_description" type="text"> <!-- The input is hidden because we can't assign formControlName to a div, so we're going to copy the div's HTML to assign it to the input -->
<div #richText class="full" id="textBox" contenteditable="true"></div>
<!-- /Rich text -->
</div>
<!-- /RichText code -->
import { Component, ElementRef, ViewChild } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'Angular_RichText_Demo';
//Get div element to pass content to input
@ViewChild('richText') richText!: ElementRef;
//Text formatting function
//Initializing variable
oDoc:any;
formatDoc(cmd:any) {
this.oDoc = document.getElementById("textBox");
document.execCommand(cmd); this.oDoc?.focus();
}
save(){
// Open the console to see the output!
//You can set this value on an input to send the data in angular forms
console.log(this.richText?.nativeElement.innerHTML);
}
}
// Angular RichText styles
.intLink { cursor: pointer; border: 0; background-color: #ffffff;}
#toolBar1 select { font-size:10px; }
#textBox {
width: auto;
height: 250px;
border-bottom: 5px;
border-top: 1px #dad6d6 solid;
padding: 12px;
overflow: scroll;
}
#textBox #sourceText {
padding: 0;
margin: 0;
min-width: 498px;
min-height: 200px;
}
.controls{
margin-right: 8px;
transition: ease-in 0.2s;
padding-top: 5px;
border-radius: 5px;
}
.controls:hover{background-color: #cecbcb;}
.controls-img{
width: 20px;
}
.rich{
background-color: white;
padding-top: 10px;
border-radius: 5px;
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
border: 1px #dad6d6 solid;
}
#toolBar2{
padding-left: 6px;
padding-bottom: 9px;
}
.hidden{
display: none;
}
//This class hides the scrollbar space.
::-webkit-scrollbar {
display: none;
}