* Render progress widget output in the editor.
* Written as a Backbone JavaScript template and used to generate the live preview.
protected function content_template() {
if ( '' === settings.title && '' === settings.percent.size ) {
const title_tag = elementor.helpers.validateHTMLTag( settings.title_tag );
const progressbar_id = 'elementor-progress-bar-<?php echo esc_attr( $this->get_id() ); ?>';
let progress_percentage = 0;
if ( ! isNaN( settings.percent.size ) ) {
progress_percentage = 100 < settings.percent.size ? 100 : settings.percent.size;
if ( 'yes' === settings.title_display ) {
'class': 'elementor-title',
view.addInlineEditingAttributes( 'title' );
view.addRenderAttribute( 'progressWrapper', 'aria-labelledby', progressbar_id );
view.addRenderAttribute( 'progressWrapper', 'aria-label', settings.title );
'class': [ 'elementor-progress-wrapper', 'progress-' + settings.progress_type ],
'aria-valuenow': progress_percentage,
if ( '' !== settings.inner_text ) {
view.addRenderAttribute( 'progressWrapper', 'aria-valuetext', progress_percentage + '% (' + settings.inner_text + ')' );
view.addRenderAttribute( 'inner_text', 'class', 'elementor-progress-text' );
view.addInlineEditingAttributes( 'inner_text' );
<# if ( settings.title && 'yes' === settings.title_display ) { #>
<{{ title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ title_tag }}>
<div {{{ view.getRenderAttributeString( 'progressWrapper' ) }}}>
<div class="elementor-progress-bar" data-max="{{ progress_percentage }}">
<span {{{ view.getRenderAttributeString( 'inner_text' ) }}}>{{ settings.inner_text }}</span>
<# if ( 'show' === settings.display_percentage ) { #>
<span class="elementor-progress-percentage">{{{ progress_percentage }}}%</span>