Choice Container

Component Structure

The following code is this component's initial HTML structure. Remember you can change this structure any time by using the template() component built-in function.

const choices = this.props.choices.map ((choice) => {
	if (typeof choice.Clickable === 'function') {
		return new Promise ((resolve, reject) => {
			this.engine.assertAsync (choice.Clickable, this.engine).then (() => {
				resolve (`<button data-do="${choice.Do}" ${ choice.Class ? `class="${choice.Class}"`: ''} data-choice="${choice._key}">${choice.Text}</button>`);
			}).catch (() => {
				resolve (`<button data-do="${choice.Do}" ${ choice.Class ? `class="${choice.Class}"`: ''} data-choice="${choice._key}" disabled>${choice.Text}</button>`);
			});

		});
	}
	return Promise.resolve (`<button data-do="${choice.Do}" ${ choice.Class ? `class="${choice.Class}"`: ''} data-choice="${choice._key}">${choice.Text}</button>`);
});

return Promise.all (choices).then ((choices) => `
	<div data-content="wrapper">
		${ choices.join('') }
	</div>
`);

Last updated