Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Ledzz/angular2-tinymce

Angular 2 component for TinyMCE MCE WYSIWYG editor
https://github.com/Ledzz/angular2-tinymce

angular angular2 angular2-tinymce tinymce tinymce-wysiwyg-editor typescript

Last synced: 8 days ago
JSON representation

Angular 2 component for TinyMCE MCE WYSIWYG editor

Awesome Lists containing this project

README

        

# angular2-tinymce ![pipeline status](https://gitlab.com/Ledzz/angular2-tinymce/badges/master/pipeline.svg)

`Now compatible with Angular 6!`

[Demo](https://angular2-tinymce.surge.sh/)

## Usage

First, install tinymce and this lib via npm:
```
npm install --save tinymce angular2-tinymce
```

Then copy lightgray skin files from `node_modules/tinymce` to the `/assets` folder. So, i.e. there must be available `/assets/tinymce/skins/lightgray/skin.min.css` and `/assets/tinymce/skins/lightgray/content.min.css` file.
You can override skin path by specifying `skin_url` option (default `/assets/tinymce/skins/lightgray`).

To support AOT mode in Angular 6 and higher you also need to include tinymce in your scripts section in angular.json config file:
```json
"scripts": [
"node_modules/tinymce/tinymce.min.js",
...
]
```

Import `TinymceModule` in you `app.module.ts` like this:
```typescript
import { TinymceModule } from 'angular2-tinymce';

@NgModule({
imports: [
...
TinymceModule.withConfig({})
],
...
})
export class AppModule { }
```

Then use it:
```html

```
or
```html

```

You can also use template variable `tinymce` to get instance of tinymce:
```html

```
then in component.ts:
```typescript
@ViewChild('tinymce') tinymce;
ngAfterViewInit() {
console.log(this.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](tree/master/src/angular2-tinymce.config.interface.ts)

Also you can override options in each instance like that:
```html

```

## Events
You can use outputs to catch tinymce events. You can see full list of available outputs [here](blob/master/projects/angular2-tinymce-lib/src/lib/angular2-tinymce-lib.component.ts#L37).
```html

```

## 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
- [x] Aot support
- [x] Add demo
- [x] Add CI
- [x] Per-editor configuration
- [x] Events
- [ ] Directive
- [ ] File uploading
- [ ] Tests