getodk / getodk/web-forms

Design "Note" fields

Open
#584 0 comments 0 reactions 0 assignees View on GitHub
front-end needs discussion needs ui/ux design xforms-engine
Dominant language
TypeScript
Stars
38
Forks
22
PR merge metrics
No merged PRs in 30d

Description

### Description
Collect and Enketo do not distinguish between static and dynamic read-only fields. In Web Forms, static read-only fields are displayed as plain text and may include additional formatting. The engine internally categorizes these differently, for example, as NoteNode or InputNode.

We should re-evaluate whether this distinction adds value, or if Web Forms should simply display the standard read-only version of input fields and widgets (which simplifies the engine and Vue client code)

Sample form

```xml


Notes







A value




3

2025-12-21T23:30:05
38.253094215699576 21.756382658677467 0 150
37.7749 -122.4194 0 0; 37.775 -122.419 0 0; 37.774 -122.420 0 0
37.7749 -122.4194 0 0; 37.775 -122.419 0 0; 37.774 -122.420 0 0; 37.7749 -122.4194 0 0


























This form illustrates the note concept in ODK. This is not a concept that exists in
the underlying ODK XForms spec, it's introduced by XLSForm and discussed informally.
Typically a note only has a label.


A note with a hint
This is a hint



Hint-only note


A note with a default value


A note with a calculation


A note with masked appearance


A note with external app appearance


A readonly integer


A readonly integer with value


A note with decimal type calculated from int


A note with date type


A note with geopoint type


A note with geotrace type


A note with geoshape type


```

---

### Checklist
- **Does it need UI/UX design?**
- [x] Yes. Describe the UI/UX requirements or attach a Figma link in the "Design" section.
- [ ] No
- **Does it need API design?**
- [ ] Yes. Specify the endpoints, methods, or data structures needed.
- [x] No
- **Does it need design around state flow?**
- [ ] Yes. Outline the state flow requirements.
- [x] No
- **Does it need a test plan?**
- [ ] Yes. Add the test plan as a comment in this task or attach the document.
- [x] No
---

### User Stories

- **As a** [user type],
**I want** [functionality],
**so that** [benefit].

---

### Design

- **Figma**: [Insert URL]
- **Design Docs**: [Insert URL]

---

### Dependencies

-

---

### Additional Notes

-

---

### Related Issues

-

Contributor guide

No contributing guide indexed for this repository

Research direction

No files or tests are named. Start by tracing how NoteNode and InputNode are represented and rendered in the Vue client, using the supplied sample form to compare static notes with read-only inputs. Done requires an agreed UI/UX direction and consistent behavior across the listed note and read-only field cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend, web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.