decide.nolog.cz/app/templates/components/create-options-datetime.hbs

96 lines
3.2 KiB
Handlebars
Raw Normal View History

<div class="cr-form-wrapper box">
{{#if errorMessage}}
{{#bs-alert type="warning"}}
{{t errorMessage}}
{{/bs-alert}}
{{/if}}
{{#bs-form
2018-12-29 20:35:04 +01:00
onSubmit=(action "submit")
formLayout="horizontal"
model=this
novalidate=true
2018-12-29 20:35:04 +01:00
as |form|
}}
<div class="days">
{{#each dates as |date index|}}
2016-06-08 18:42:26 +02:00
{{!
show summarized validation state for all times in a day
2016-06-08 18:42:26 +02:00
}}
2018-12-29 20:35:04 +01:00
<div
class={{if
(get daysValidationState date.day)
(concat "label-has-" (get daysValidationState date.day))
"label-has-no-validation"
}}
data-test-day={{date.day}}
2018-12-29 20:35:04 +01:00
>
{{!
show label only if it differ from label before
Nested-helpers are called first and object-at requires a positive integer
but returns undefined if an element with the passed in index does not exist.
Therefore we pass in array length if index is null. Cause index starting
by zero there can't be any element with an index === array.length.
}}
{{#form.element
2018-12-29 20:35:04 +01:00
classNames="option"
label=date.dayFormatted
2018-12-29 20:35:04 +01:00
invisibleLabel=(eq date.dayFormatted (get (object-at (if index (sub index 1) dates.length) dates) "dayFormatted"))
model=date
2018-12-29 20:35:04 +01:00
property="time"
as |el|
}}
<div class="input-group">
{{el.control
autofocus=(unless index true false)
id=el.id
2018-12-29 20:35:04 +01:00
placeholder="00:00"
type="time"
value=el.value
onChange=(action (mut el.value))
}}
<div class="input-group-append">
{{! disable delete button if there is only one option }}
2018-12-29 20:35:04 +01:00
{{#bs-button
onClick=(action "deleteOption" date)
type="link"
2018-12-29 20:35:04 +01:00
class="delete"
disabled=(lte dates.length 1)
2018-12-29 20:35:04 +01:00
}}
<span class="oi oi-trash" title={{t "create.options.button.delete.label"}} aria-hidden="true"></span>
2018-12-29 20:35:04 +01:00
<span class="sr-only">{{t "create.options.button.delete.label"}}</span>
{{/bs-button}}
</div>
</div>
{{#bs-button
onClick=(action "addOption" date)
type="link"
size="sm"
class="add cr-option-menu__button cr-option-menu__add-button"
}}
<span class="oi oi-plus" title={{t "create.options.button.add.label"}} aria-hidden="true"></span>
<span class="sr-only">{{t "create.options.button.add.label"}}</span>
{{/bs-button}}
{{/form.element}}
</div>
{{/each}}
</div>
2016-05-18 22:18:36 +02:00
{{#if (gt groupedDates.length 1)}}
{{#form.element}}
2018-12-29 20:35:04 +01:00
{{#bs-button
onClick=(action "adoptTimesOfFirstDay")
class="adopt-times-of-first-day"
size="sm"
2018-12-29 20:35:04 +01:00
}}
{{t "create.options-datetime.copy-first-line"}}
{{/bs-button}}
{{/form.element}}
{{/if}}
{{form-navigation-buttons
2018-12-29 20:35:04 +01:00
onPrev=(action "previousPage")
}}
{{/bs-form}}
</div>