You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

282 lines
5.6 KiB

Covered in this section:
* xref:configuring-the-tinymce-blazor-integration[Configuring the TinyMCE Blazor integration]
* xref:component-binding[Component binding]
[[configuring-the-tinymce-blazor-integration]]
== Configuring the TinyMCE Blazor integration
The `+TinyMCE.Blazor+` `+Editor+` component accepts the following properties:
[source,cs,subs="attributes+"]
----
<Editor
Id="uuid"
Inline=false
CloudChannel="{productmajorversion}"
Value=""
Disable=false
JsConfSrc="path_to_jsObj"
Conf="@yourConf"
ApiKey="no-api-key"
LicenseKey="your-license-key"
ScriptSrc="/path/to/tinymce.min.js"
ClassName="tinymce-wrapper"
/>
----
None of the configuration properties are required for the TinyMCE Blazor integration to work.
=== `ApiKey`
{cloudname} API key. Required for deployments using the {cloudname} to provide the {productname} editor.
*Type:* `+String+`
*Default value:* `+'no-api-key'+`
==== Example using ApiKey
[source,cs]
----
<Editor
ApiKey="no-api-key"
/>
----
=== `CloudChannel`
Specifies the {cloudname} channel to use. For information on {productname} development channels, see: xref:editor-plugin-version.adoc[Specifying the {productname} editor version deployed from Cloud].
*Type:* `+String+`
*Default value:* `'{productmajorversion}'`
*Possible values:* `'{productmajorversion}'`, `'{productmajorversion}-testing'`, `'{productmajorversion}-dev'`, `'{productminorversion}'`
==== Example using CloudChannel
[source,cs,subs="attributes+"]
----
<Editor
CloudChannel="{productmajorversion}-dev"
/>
----
=== `Id`
Specified an Id for the editor. Used for retrieving the editor instance using the `+tinymce.get('ID')+` method.
*Type:* `+String+`
*Default value:* Automatically generated https://tools.ietf.org/html/rfc4122[UUID]
==== Example using Id
[source,cs]
----
<Editor
Id="my-unique-identifier"
/>
----
=== `ClassName`
Specifies the class of the Editor's container `+div+` in the component. This `+div+` is the parent of the Editor and adding styles to it will not add styles to the editor.
*Type:* `+String+`
*Default value:* `+'tinymce-wrapper'+`
==== Examples using ClassName
Setting a static class name:
[source,cs]
----
<Editor ClassName="my-editor-container" />
----
Setting a dynamic class name:
[source,cs]
----
<Editor ClassName="@((isEditorActive) ? "active-editor-div" : "default-editor-div")" />
----
=== `Inline`
Set the editor to inline mode.
*Type:* `+Boolean+`
*Default value:* `+false+`
==== Example using Inline
[source,cs]
----
<Editor
Inline=true
/>
----
=== `Disable`
Sets the editor to a disable state.
*Type:* `+Boolean+`
*Default value:* `+false+`
==== Example using Disable
[source,cs]
----
<Editor
Disable=@disable
/>
<button @onclick="@(() => disable = !disable)">Toggle</button>
----
=== `Readonly`
Sets the editor to readonly mode.
*Type:* `+Boolean+`
*Default value:* `+false+`
==== Example using Readonly
[source,cs]
----
<Editor
Readonly=@readonly
/>
<button @onclick="@(() => readonly = !readonly)">Toggle</button>
----
=== `JsConfSrc`
Use a JS object as base configuration for the editor by specifying the path to the object relative to the window object.
*Type:* `+String+`
*Default value:* `+null+`
==== Example using JsConfSrc
In your `+_Host.cshtml+`:
[source,cs]
----
window.sample = {
height: 300,
toolbar: 'undo redo | bold italic'
}
----
In your component:
[source,cs]
----
<Editor
JsConfSrc="sample"
/>
----
=== `LicenseKey`
Specifies the {productname} license key. Required for self-hosted deployments of {productname}. This property is not required for deployments using the {cloudname}. For more information on licensing, see: xref:license-key.adoc[License key].
*Type:* `+String+`
==== Example using LicenseKey
[source,cs]
----
<Editor
LicenseKey="your-license-key"
/>
----
=== `ScriptSrc`
Use the `+ScriptSrc+` property to specify the location of {productname} to lazy load when the application is not using {cloudname}. This setting is required if the application uses a self-hosted version of {productname}, such as the https://www.nuget.org/packages/TinyMCE/[{productname} NuGet package] or a .zip package of {productname}.
*Type:* `+String+`
==== Example using ScriptSrc
[source,cs]
----
<Editor
ScriptSrc="/path/to/tinymce.min.js"
/>
----
=== `Conf`
Specify a set of properties for the `+Tinymce.init+` method to initialize the editor.
*Type:* `+Dictionary<string, object>+`
*Default value:* `+null+`
==== Example using Conf
[source,cs]
----
<Editor
Conf="@editorConf"
/>
@code {
private Dictionary<string, object> editorConf = new Dictionary<string, object>{
{"toolbar", "undo redo | bold italic"},
{"width", 400}
};
}
----
[[component-binding]]
== Component binding
=== Input binding
The editor component allows developers to bind the contents of editor to a variable. By specifying the `+@bind-Value+` directive, developers can create a two-way binding on a selected variable.
==== Example using input binding
[source,cs]
----
<Editor
@bind-Value=content
/>
<textarea @bind=content @bind:event="oninput"></textarea>
@code {
private string content = "<p>Hello world</p>";
}
----
=== Binding Text output
Starting from TinyMCE.Blazor v0.0.4, the editor exposes the `+@bind-Text+` property, which developers can `+bind+` to retrieve a read-only value of the editor content as text. Changes will not propagate up to the editor if the `+text+` bound variable changes. It will only propagate changes from the editor.
==== Example using output text binding
[source,cs]
----
<Editor
@bind-Text=content
/>
<textarea @bind=content @bind:event="oninput"></textarea>
@code {
private string content = "";
}
----