Typedef

TemplateValueSchema (ui)

@ckeditor/ckeditor5-ui/src/template

Describes a value of an HTML element attribute or textContent. It allows combining multiple data sources like static values and Observable attributes.

Also see:

Attribute values can be described in many different ways:

// Bind helper will create bindings to attributes of the observable.
const bind = Template.bind( observable, emitter );

new Template( {
	tag: 'p',
	attributes: {
		// A plain string schema.
		'class': 'static-text',

		// An object schema, binds to the "foo" attribute of the
		// observable and follows its value.
		'class': bind.to( 'foo' ),

		// An array schema, combines the above.
		'class': [
			'static-text',
			bind.to( 'bar', () => { ... } ),

			// Bindings can also be conditional.
			bind.if( 'baz', 'class-when-baz-is-true' )
		],

		// An array schema, with a custom namespace, e.g. useful for creating SVGs.
		'class': {
			ns: 'http://ns.url',
			value: [
				bind.if( 'baz', 'value-when-true' ),
				'static-text'
			]
		},

		// An object schema, specific for styles.
		style: {
			color: 'red',
			backgroundColor: bind.to( 'qux', () => { ... } )
		}
	}
} );

Text nodes can also have complex values:

const bind = Template.bind( observable, emitter );

// Will render a "foo" text node.
new Template( {
	text: 'foo'
} );

// Will render a "static text: {observable.foo}" text node.
// The text of the node will be updated as the "foo" attribute changes.
new Template( {
	text: [
		'static text: ',
		bind.to( 'foo', () => { ... } )
	]
} );

Filtering