UNPKG

5.96 kBMarkdownView Raw
1# Official TinyMCE Angular Component
2
3## About
4
5This package is a thin wrapper around `tinymce` to make it easier to use in a Angular application.
6
7## Development instructions
8
9The editor component itselt is located in the `tinymce-angular-component` and packaged into a redistributable package with the [ng-packagr](https://github.com/dherges/ng-packagr) tool. A test app has been created with the [`@angular/cli`](https://github.com/angular/angular-cli). It is located in the `src` directory and a dev server can be started by using the `ng serve` command.
10
11## Installation
12
13```sh
14$ npm install @tinymce/tinymce-angular
15```
16
17## Usage
18
19### Loading the component
20
21Import the `EditorModule` from the npm package like this:
22
23```tsx
24import { EditorModule } from '@tinymce/tinymce-angular';
25```
26And add it to you application module:
27
28```tsx
29// This might look different depending on how you have set up your app
30// but the important part is the imports array
31@NgModule({
32 declarations: [
33 AppComponent
34 ],
35 imports: [
36 BrowserModule,
37 EditorModule // <- Important part
38 ],
39 providers: [],
40 bootstrap: [AppComponent]
41})
42```
43
44### Using the component in your templates
45
46Use the editor in your templates like this:
47
48```tsx
49<editor apiKey="test" [init]="{plugins: 'link'}"></editor>
50```
51
52### Configuring the editor
53
54The editor accepts the following inputs:
55* `id`: An id for the editor so you can later grab the instance by using the `tinymce.get('ID')` method on tinymce, defaults to an automatically generated uuid.
56* `init`: Object sent to the `tinymce.init` method used to initialize the editor.
57* `initialValue`: Initial value that the editor will be initialized with.
58* `inline`: Shorthand for setting that the editor should be inline, `<editor [inline]="true"></editor>` is the same as setting `{inline: true}` in the init.
59* `tagName`: Only used if the editor is inline, decides what element to initialize the editor on, defaults to `div`.
60* `plugins`: Shorthand for setting what plugins you want to use, `<editor plugins="foo bar"></editor>` is the same as setting `{plugins: 'foo bar'}` in the init.
61* `toolbar`: Shorthand for setting what toolbar items you want to show, `<editor toolbar="foo bar"></editor>` is the same as setting `{toolbar: 'foo bar'}` in the init.
62* `apiKey`: Api key for TinyMCE cloud, more info below.
63* `cloudChannel`: Cloud channel for TinyMCE Cloud, more info below.
64
65None of the configuration inputs are **required** for the editor to work - other than if you are using TinyMCE Cloud you will have to specify the `apiKey` to get rid of the `This domain is not registered...` warning message.
66
67### `ngModel`
68
69You can also use the `ngModel` directive (more info in the [Angular documentation](https://angular.io/api/forms/NgModel)) on the editor to simplify using it in a form:
70
71```tsx
72<editor [(ngModel)]="dataModel"></editor>
73```
74
75### Event binding
76
77You can also bind editor events via a shorthand prop on the editor, for example:
78```tsx
79<editor (onSelectionChange)="handleEvent($eventObj)"></editor>
80```
81Where the handler gets called with an object containing the properties `event`, which is the event object, and `editor`, which is a reference to the editor.
82
83Here is a full list of the events available:
84<details>
85<summary>All available events</summary>
86
87* `onActivate`
88* `onAddUndo`
89* `onBeforeAddUndo`
90* `onBeforeExecCommand`
91* `onBeforeGetContent`
92* `onBeforeRenderUI`
93* `onBeforeSetContent`
94* `onBeforePaste`
95* `onBlur`
96* `onChange`
97* `onClearUndos`
98* `onClick`
99* `onContextMenu`
100* `onCopy`
101* `onCut`
102* `onDblclick`
103* `onDeactivate`
104* `onDirty`
105* `onDrag`
106* `onDragDrop`
107* `onDragEnd`
108* `onDragGesture`
109* `onDragOver`
110* `onDrop`
111* `onExecCommand`
112* `onFocus`
113* `onFocusIn`
114* `onFocusOut`
115* `onGetContent`
116* `onHide`
117* `onInit`
118* `onKeyDown`
119* `onKeyPress`
120* `onKeyUp`
121* `onLoadContent`
122* `onMouseDown`
123* `onMouseEnter`
124* `onMouseLeave`
125* `onMouseMove`
126* `onMouseOut`
127* `onMouseOver`
128* `onMouseUp`
129* `onNodeChange`
130* `onObjectResizeStart`
131* `onObjectResized`
132* `onObjectSelected`
133* `onPaste`
134* `onPostProcess`
135* `onPostRender`
136* `onPreProcess`
137* `onProgressState`
138* `onRedo`
139* `onRemove`
140* `onReset`
141* `onSaveContent`
142* `onSelectionChange`
143* `onSetAttrib`
144* `onSetContent`
145* `onShow`
146* `onSubmit`
147* `onUndo`
148* `onVisualAid`
149</details>
150
151## Loading TinyMCE
152### Auto-loading from TinyMCE Cloud
153The `Editor` component needs TinyMCE to be globally available to work, but to make it as easy as possible it will automatically load [TinyMCE Cloud](https://www.tiny.cloud/docs/cloud-deployment-guide/) if it can't find TinyMCE available when the component has mounted. To get rid of the `This domain is not registered...` warning, sign up for the cloud and enter the api key like this:
154
155```tsx
156<editor apiKey="test" [init]="{/* your settings */}"></editor>
157```
158
159You can also define what cloud channel you want to use out these three
160* `stable` **Default**. The most stable and well tested version that has passed the Ephox quality assurance process.
161* `testing` This channel will deploy the current candidate for release to the `stable` channel.
162* `dev` The cutting edge version of TinyMCE updated daily for the daring users.
163
164So using the `dev` channel would look like this:
165
166```tsx
167<editor apiKey="YOUR_API_KEY" cloudChannel="dev" [init]="{/* your settings */}"></editor>
168```
169
170For more info on the different versions see the [documentation](https://www.tiny.cloud/docs/cloud-deployment-guide/editor-plugin-version/#devtestingandstablereleases).
171
172### Loading TinyMCE by yourself
173
174To opt out of using TinyMCE cloud you have to make TinyMCE globally available yourself. This can be done either by hosting the `tinymce.min.js` file by youself and adding a script tag to you HTML or, if you are using a module loader, installing TinyMCE with npm. For info on how to get TinyMCE working with module loaders check out [this page in the documentation](https://www.tinymce.com/docs/advanced/usage-with-module-loaders/).
175