{{!
  Copyright (c) HashiCorp, Inc.
  SPDX-License-Identifier: BUSL-1.1
~}}

<hr class="is-marginless has-background-gray-200" />

<p class="has-top-margin-m has-bottom-margin-l">Tidying cleans up the storage backend and/or CRL by removing certificates
  that have expired and are past a certain buffer period beyond their expiration time.
  <DocLink @path="/vault/api-docs/secret/pki#{{if (eq @tidyType 'manual') 'tidy' 'configure-automatic-tidy'}}">Learn more</DocLink>
</p>

<MessageError @errorMessage={{this.errorBanner}} class="has-top-margin-s" />

<form class="has-bottom-margin-s" {{on "submit" (perform this.save)}} data-test-tidy-form={{@tidyType}}>
  {{#if (eq @tidyType "auto")}}
    {{#let (get @tidy.allByKey "enabled") as |enabledAttr|}}
      <div class="field">
        <Toggle @onChange={{fn (mut @tidy.enabled)}} @checked={{@tidy.enabled}} @name={{enabledAttr.name}}>
          <legend>
            <span class="ttl-picker-label is-large">
              {{if @tidy.enabled enabledAttr.options.label enabledAttr.options.labelDisabled}}
            </span>
            {{#unless @tidy.enabled}}
              <p class="sub-text">{{enabledAttr.options.helperTextDisabled}}</p>
            {{/unless}}
          </legend>
        </Toggle>
      </div>
    {{/let}}
    {{#if @tidy.enabled}}
      <h2 class="title is-size-5 has-border-bottom-light page-header" data-test-tidy-header="Automatic tidy settings">
        Automatic tidy settings
      </h2>
      {{#each @tidy.autoTidyConfigFields as |field|}}
        <FormField @attr={{get @tidy.allByKey field}} @model={{@tidy}} />
      {{/each}}
    {{/if}}
  {{/if}}

  {{#if (or (eq @tidyType "manual") @tidy.enabled)}}
    {{#each @tidy.formFieldGroups as |fieldGroup|}}
      {{#each-in fieldGroup as |group fields|}}
        <h2 class="title is-size-5 has-border-bottom-light page-header" data-test-tidy-header={{group}}>
          {{group}}
        </h2>
        {{#each fields as |attr|}}
          {{#if (eq attr.name "acmeAccountSafetyBuffer")}}
            <TtlPicker
              data-test-input={{attr.name}}
              @onChange={{fn this.handleTtl attr}}
              @label={{attr.options.label}}
              @labelDisabled={{attr.options.labelDisabled}}
              @helperTextDisabled={{attr.options.helperTextDisabled}}
              @helperTextEnabled={{attr.options.helperTextEnabled}}
              @initialEnabled={{get @tidy attr.options.mapToBoolean}}
              @initialValue={{get @tidy attr.name}}
            />
          {{else}}
            {{! tidyAcme is handled by the ttl above }}
            {{#if (not-eq attr.name "tidyAcme")}}
              <FormField @attr={{attr}} @model={{@tidy}} />
            {{/if}}
          {{/if}}
        {{/each}}
      {{/each-in}}
    {{/each}}
  {{/if}}

  <hr class="is-marginless has-background-gray-200" />
  <Hds::ButtonSet class="has-top-margin-m">
    <Hds::Button
      @text={{if (eq @tidyType "manual") "Perform tidy" "Save"}}
      @icon={{if this.save.isRunning "loading"}}
      type="submit"
      disabled={{this.save.isRunning}}
      data-test-pki-tidy-button
    />
    <Hds::Button
      @text="Cancel"
      @color="secondary"
      disabled={{this.save.isRunning}}
      {{on "click" @onCancel}}
      data-test-pki-tidy-cancel
    />
  </Hds::ButtonSet>
  {{#if this.invalidFormAlert}}
    <div class="control">
      <AlertInline @type="danger" class="has-top-padding-s" @message={{this.invalidFormAlert}} />
    </div>
  {{/if}}
</form>