datahub/datahub-web/@datahub/utils/addon/templates/components/concurrency-task-state-handler.hbs
Ignacio Bona Piedrabuena 89c78551cc
1604086049622-ui-sync (#1981)
Co-authored-by: Ignacio Bona <ibonapiedrabuena@linkedin.com>
2020-11-09 12:17:51 -08:00

56 lines
1.7 KiB
Handlebars

{{#if this.handleAsyncStateOnly}}
{{#if @task.isRunning}}
<div class="concurrency-task-state-handler">
<NachoAnimation::PendulumEllipsis />
</div>
{{else}}
{{yield}}
{{/if}}
{{else}}
{{#if @task.last.isError}}
{{#let (or @errorHeading "An error occurred. Please try again shortly.") as |errorMessage|}}
{{! Show entity lockup if toggled on, otherwise yield error. This allows this component to be used in interfaces
where rendering the lockup is not suitable, for example in a button
<ConcurrencyTaskStateHandler @task=task @showLockup=false>
<button>
Click Me!
</button>
</ConcurrencyTaskStateHandler>
}}
{{#if this.showLockup}}
<EmptyState
@heading={{errorMessage}}
/>
<div class="concurrency-task-state-handler__button-container">
<button
type="button"
class="nacho-button nacho-button--large-inverse"
onclick={{action this.performTask this.taskArgs}}
>
Retry
</button>
</div>
{{else}}
{{! If the callee requires more flexibility, a custom component to handle rendering the error can be provided
and will take precedence over the basic message rendering
}}
{{#if @customErrorComponent}}
{{component @customErrorComponent error=@task.last.error message=@errorHeading}}
{{else}}
{{errorMessage}}
{{/if}}
{{/if}}
{{/let}}
{{else}}
{{#if @task.isRunning}}
<div class="concurrency-task-state-handler">
<NachoAnimation::PendulumEllipsis />
</div>
{{else}}
{{yield}}
{{/if}}
{{/if}}
{{/if}}