{* SPDX-FileCopyrightText: © 2021 Olivier Meunier SPDX-License-Identifier: AGPL-3.0-only *} {{- block formErrors(form) -}} {{- if !form.IsValid() -}} {{- end -}} {{- end -}} {{- block ariaAttrs(attrs=attrList(), field, name, help) -}} {{- if !name -}}{{ name = field.Name() }}{{- end -}} {{- if help }}{{ attrs.Set("aria-describedby", "description-"+name) }}{{ end }} {{- if field.Errors() -}} {{- attrs.Set("aria-errormessage", "errors-"+name) -}} {{- attrs.Set("aria-invalid", "true") -}} {{- end -}} {{- end -}} {{- block formField(field, name, label, help, class="", required=false, controlAttrs=attrList()) -}} {{- if !name -}}{{ name = field.Name() }}{{- end -}} {{- if field.Errors() -}}{{ class = class + " field--err" }}{{- end -}}
{{ if label -}} {{- end }}
{{ yield content }} {{ if field.Errors() }}
    {{- range field.Errors() }}
  • {{ . }}
  • {{ end -}}
{{ end }} {{ if help }}{{ help }}{{ end }}
{{- end -}} {{- block textField( field, value=nil, type="text", name, label, class="", required=false, help, controlAttrs=attrList(), inputAttrs=attrList(), inputClass="form-input w-full" ) -}} {{- class = "field--text " + class -}} {{- if type == "password" -}} {{ value = "" }} {{- else if value == nil -}} {{ value = field.String() }} {{- end -}} {{- if required -}} {{ inputAttrs.Set("required", true) }} {{- end -}} {{- yield ariaAttrs(attrs=inputAttrs, field=field, name=name, help=help) -}} {{- yield formField(field=field, name=name, label=label, help=help, class=class, required=required, controlAttrs=controlAttrs) content -}} {{- yield content -}} {{- end -}} {{- end -}} {{- block dateField( field, value=nil, name, label, class, required, help, controlAttrs=attrList(), inputAttrs=attrList(), inputClass="form-input", ) -}} {{ value = field.String() }} {{ yield textField(field=field, value=value, type="date", name=name, label=label, class=class, required=required, help=help, controlAttrs=controlAttrs, inputAttrs=inputAttrs, inputClass=inputClass) }} {{- end -}} {{- block textAreaField( field, value=nil, type="text", name, label, class="", required=false, help, controlAttrs=attrList(), inputAttrs=attrList(), inputClass="form-textarea w-full", rows=3 ) -}} {{- class = "field--textarea " + class -}} {{ inputAttrs.Set("rows", rows) }} {{- if value == nil -}} {{ value = field.String() }} {{- end -}} {{- if required -}} {{ inputAttrs.Set("required", true) }} {{- end -}} {{- yield ariaAttrs(attrs=inputAttrs, field=field, name=name, help=help) -}} {{- yield formField(field=field, name=name, label=label, help=help, class=class, required=required, controlAttrs=controlAttrs) content -}} {{- yield content -}} {{- end -}} {{- end -}} {{- block checkboxField( field, checked=nil, name, label, class="", help ) -}} {{- class = "field--checkbox " + class -}} {{- if !name -}}{{ name = field.Name() }}{{- end -}} {{- if checked == nil }}{{ checked = field.Value() }}{{ end -}} {{- if field.Errors() -}}{{ class = class + " with-errors" }}{{ end }}
{* end with false so the field is bound *} {{ if field.Errors() }}
    {{- range field.Errors() }}
  • {{ . }}
  • {{ end -}}
{{ end }} {{ if help }}{{ help }}{{ end }}
{{- end -}} {{- block selectField( field, value=nil, name, options, label, class="", required, help, controlAttrs=attrList(), inputAttrs=attrList(), inputClass="form-select w-full" ) -}} {{- class = "field--select " + class -}} {{- if !name -}}{{ name = field.Name() }}{{- end -}} {{- if value == nil -}}{{ value = field.Value() }}{{- end -}} {{- if !options -}}{{ options = field.Choices() }}{{- end -}} {{- if field.Errors() -}}{{ class = class + " with-errors" }}{{ end }} {{- if required -}} {{ inputAttrs.Set("required", true) }} {{- end -}} {{- yield ariaAttrs(attrs=inputAttrs, field=field, name=name, help=help) -}} {{- yield formField(field=field, name=name, label=label, help=help, class=class, required=required, controlAttrs=controlAttrs) content -}} {{- end -}} {{- end -}} {{- block multiSelectField( field, name, label, class="", help ) -}} {{- class = "field--multiselect " + class -}} {{- if !name -}}{{ name = field.Name() }}{{- end -}} {{- if field.Errors() -}}{{ class = class + " field--err" }}{{- end -}} {{- type := isList(field.V()) ? "checkbox" : "radio" -}} {{- inputClass := type == "radio" ? "form-radio" : "form-checkbox" -}}
{* null value to bind the field *}
    {{- range field.Choices() -}}
  • {{- end -}}
{{ if field.Errors() }}
    {{- range field.Errors() }}
  • {{ . }}
  • {{ end -}}
{{ end }} {{ if help }}{{ help }}{{ end }}
{{- end -}} {{- block passwordField( field, value=nil, name, label, class="", required=false, help, inputClass="form-input w-full", inputAttrs=attrList(), ) -}} {{- class = "field--text field--composed field--password " + class -}} {{- controlAttrs := attrList("data-controller", "pass-reveal") -}} {{- inputAttrs.Set("data-pass-reveal-target", "field") -}} {{- if required -}} {{ inputAttrs.Set("required", true) }} {{- end -}} {{- yield ariaAttrs(attrs=inputAttrs, field=field, name=name, help=help) -}} {{- yield formField(field=field, name=name, label=label, help=help, class=class, required=required, controlAttrs=controlAttrs) content -}}
{{- end -}} {{- end -}} {{- block timeTokenField( field, value=nil, name, label, class, required=false, help, controlAttrs=attrList(), inputClass="form-input w-full", ) -}} {{ value = field.String() }} {{ class = "field--text field--composed field--timetoken " + class }} {{ inputAttrs := attrList("data-timetoken-target", "field") }} {{- if required -}} {{ inputAttrs.Set("required", true) }} {{- end -}} {{- yield ariaAttrs(attrs=inputAttrs, field=field, name=name, help=help) -}} {{- yield formField(field=field, name=name, label=label, help=help, class=class, required=required, controlAttrs=controlAttrs) content -}}
{{- end -}} {{- end -}} {{- block fileDropField( field, name, label, help, class, required=false, ) -}} {{ yield textField( field=field, name=name, type="file", label=label, help=help, required=required, class="field--filedrop " + class, inputClass="js:hidden", controlAttrs=attrList( "data-controller", "dropzone", "data-dropzone-hidden-class", "hidden", "data-dropzone-focus-class", "bg-primary-100", ), ) content }} {{- if !name -}}{{ name = field.Name() }}{{- end -}}

{{ end }} {{- end -}}