@if (!url()) {
Open an http(s) page to start mapping form fields.
} @else if (draft(); as d) {
{{ url()?.host }}
{{ url()?.pathname }}
@if (d.irrelevant) {
irrelevant
}
@if (issues().length) {
@for (issue of issues(); track issue) {
- {{ issue }}
}
}
@for (form of d.forms; track $index; let i = $index) {
Container
@if (form.pendingContainer?.length) {
Pick which element is the form container:
@for (cand of form.pendingContainer; track $index) {
{{ cand.label }} (<{{ cand.tag }}>)
{{ cand.selector }}
@if (cand.structural) {
brittle (positional)
}
}
} @else if (form.container?.length) {
@for (entry of form.container; track $index) {
}
} @else {
Right-click the page → Bitwarden → Webmapper → Pick form container…
}
Fields
@if (keysOf(form.fields).length === 0) {
Right-click an input → Bitwarden → Webmapper → Field › …
} @else {
@for (key of keysOf(form.fields); track key) {
{{ key }}
@for (entry of form.fields[key]; track $index) {
}
}
}
Actions
@if (keysOf(form.actions).length === 0) {
Right-click a button → Bitwarden → Webmapper → Action › …
} @else {
@for (key of keysOf(form.actions); track key) {
{{ key }}
@for (entry of form.actions[key]; track $index) {
}
}
}
}
@if (exportText(); as text) {
Export
}
}
@if (isEditing(address)) {
} @else {
{{ selectorText(entry.selector) }}
}
@if (entry.warnings.length) {
{{ entry.warnings.join(" · ") }}
}
@if (entry.alternates.length) {
{{ entry.alternates.length }} alternate{{ entry.alternates.length === 1 ? "" : "s" }}:
@for (alt of entry.alternates; track $index) {
{{ selectorText(alt) }}
}
}