Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

angular2-tinymce

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular2-tinymce - npm Package Compare versions

Comparing version 1.0.4 to 1.1.0

src/angular2-tinymce.config.interface.ts

2

package.json
{
"name": "angular2-tinymce",
"version": "1.0.4",
"version": "1.1.0",
"description": "Angular 2 component for TinyMCE MCE WYSIWYG editor",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -11,5 +11,6 @@ # angular2-tinymce

Then copy lightgray skin from [here] (https://github.com/Ledzz/angular2-tinymce/tree/master/demo/assets/tinymce/skins/lightgray) to the `/assets` folder. So, i.e. there must be available `/assets/tinymce/skins/lightgray/skin.min.css` file.
You can override skin path by specifying `skin_url` option (default `/assets/tinymce/skins/lightgray`).
Import `TinymceModule` in you `app.module.ts`:
```
```typescript
import { TinymceModule } from 'angular2-tinymce';

@@ -27,5 +28,71 @@

## Upcoming features:
- [ ] Tinymce configuration
Then use it:
```html
<app-tinymce [formControl]='contentControl'></app-tinymce>
```
or
```html
<app-tinymce [(ngModel)]='content'></app-tinymce>
```
## Configure
You can configure TinyMCE globally:
```typescript
import { TinymceModule } from 'angular2-tinymce';
@NgModule({
imports: [
...
TinymceModule.withConfig({
... //any TinyMCE config here
})
],
...
})
export class AppModule { }
```
Please note that config is extended a bit.
- Besides the original config angular2-tinymce supports `baseURL` for providing, i.e., custom plugins paths.
- `auto_focus` option is boolean instead of string.
- You cannot specify `selector` option (and you don't need to, right?).
- `setup` and `init_instance_callback` are executed after the components'.
- You can view more info about supported options [here] (https://github.com/Ledzz/angular2-tinymce/blob/master/src/angular2-tinymce.config.interface.ts)
## Plugins
If you need other plugins than standart (`link paste table advlist autoresize lists code`) you should create plugins folder in the `baseURL` (default '/assets/tinymce') and place your plugins in it.
**Example:**
Place emoticons plugin to an `/assets/tinymce/plugins` folder, then:
```typescript
import { TinymceModule } from 'angular2-tinymce';
@NgModule({
imports: [
...
TinymceModule.withConfig({
plugins: ['emoticons'],
toolbar: 'emoticons'
})
],
...
})
export class AppModule { }
```
Alternativaly you can `npm install tinymce --save` and import plugins like that:
```typescript
import 'tinymce/plugins/emoticons/plugin.js';
```
## Contributing
Please feel free to leave your PRs, issues, feature requests.
## Upcoming features
- [x] Tinymce configuration
- [ ] Per-editor configuration
- [ ] Add github pages
- [ ] File uploading
- [ ] Events
- [ ] Aot support
- [ ] Tests

@@ -1,3 +0,4 @@

import { Component, OnDestroy, AfterViewInit, forwardRef, NgZone } from '@angular/core';
import { Component, OnDestroy, AfterViewInit, forwardRef, NgZone, Inject } from '@angular/core';
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';
import { TinymceOptions } from './angular2-tinymce.config.interface';

@@ -36,21 +37,36 @@ import tinymce from 'tinymce/tinymce.js';

constructor(private zone: NgZone) {
private options: any;
constructor(
private zone: NgZone,
@Inject('TINYMCE_CONFIG') private config: TinymceOptions
) {
this.options = Object.assign(new TinymceOptions(), this.config);
this.options.selector = '#' + this.elementId;
this.options.setup = editor => {
this.editor = editor;
editor.on('change keyup', () => {
const content = editor.getContent();
this.value = content;
});
if (typeof this.config.setup === 'function') {
this.config.setup(editor);
}
}
this.options.init_instance_callback = editor => {
editor && this.value && editor.setContent(this.value)
if (typeof this.config.init_instance_callback === 'function') {
this.config.init_instance_callback(editor);
}
}
if (this.config.auto_focus) {
this.options.auto_focus = this.elementId;
}
}
ngAfterViewInit() {
tinymce.init({
selector: '#' + this.elementId,
plugins: ['link', 'paste', 'table', 'advlist', 'autoresize', 'lists',, 'code'],
skin_url: '/assets/tinymce/skins/lightgray',
setup: editor => {
this.editor = editor;
editor.on('change keyup', () => {
const content = editor.getContent();
this.value = content;
});
},
init_instance_callback: editor => {
editor && this.value && editor.setContent(this.value)
}
});
if (this.options.baseURL) {
tinymce.baseURL = this.options.baseURL;
}
tinymce.init(this.options);
}

@@ -57,0 +73,0 @@

@@ -1,4 +0,6 @@

import { NgModule } from '@angular/core';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { TinymceComponent } from './angular2-tinymce.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { TinymceOptions } from './angular2-tinymce.config.interface';
import tinymce from 'tinymce/tinymce.js';

@@ -15,6 +17,17 @@ @NgModule({

TinymceComponent
],
providers: [
{ provide: 'TINYMCE_CONFIG', useClass: TinymceOptions }
]
})
export class TinymceModule {
}
static withConfig(userConfig: TinymceOptions = {}): ModuleWithProviders {
return {
ngModule: TinymceModule,
providers: [
{ provide: 'TINYMCE_CONFIG', useValue: userConfig }
]
}
}
}
export { tinymce }
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc