gitoriaLog in with ident

components

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Commit172914a3172914a3components code order (mission 002) 2/4: lib/uploads.hl (demo upload storage), thin demo handlers, project.hl map; gate 220/0, same outputmre172914a3/components/range-picker/README.md

1.4 KB

  1. # Date range picker
  2. HTML has no date range field. This is one text field for a period: click it, a month opens under it; click a
  3. day for the start, click another for the end. The start and end are marked, the days between are highlighted.
  4. The value is `YYYY-MM-DD – YYYY-MM-DD` (start – end). If the second day is before the first, they swap.
  5. Typing works too (`2028-02-01 – 2028-02-29`); text that is not two real days marks the field (`aria-invalid="true"`).
  6. Escape, Enter, or focusing the field again while only the start is picked drops that start and keeps the old range.
  7. Live demo: https://components.hybriel.worldapi.org/range-picker
  8. Pure Hybriel: one file, no JavaScript file. The browser's today and language are read when the field gets focus.
  9. ## Use it in an app
  10. Copy `components/range-picker/range-picker.hl` (optionally `shared/tokens.hl` for the app's own accent; it carries its own `Style`), then:
  11. ```
  12. import RangePicker from './range-picker.hl'
  13. View {
  14. form { method = "get" action = "/search"
  15. RangePicker { }
  16. }
  17. }
  18. ```
  19. - The field is named `range` (member `name`); it posts as `range=YYYY-MM-DD – YYYY-MM-DD`.
  20. - Do not wrap the picker in a `<label>`.
  21. - One per page (a composed component's members are the page's state).
  22. - Colours are the semantic tokens only.
  23. ## Not yet
  24. Setting the range from the page, reading start and end as separate members in the host (a composed component's members
  25. cannot be read by its host, hybriel#87), a second picker on one page.

Branches

Latest commits

  • 172914a3components code order (mission 002) 2/4: lib/uploads.hl (demo upload storage), thin demo handlers, project.hl map; gate 220/0, same outputmre
  • d29f35b1components code order (mission 002) 1/4: styles.hl -> components/styles.hl; gate 220/0, same outputmre
  • 09945750components: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, http1 773de63e); gate 220/0mre
  • ede4d19acomponents: Hybriel master 190aa11d (fc838894 GC correctness, #126 closure scopes, #127); gate 220/0mre
  • 2bb9a935components: Hybriel master 8efba065 (re-vendor round 069: #126 memory, #48 lambda copy)mre
  • e4f01768antcolony#40: mission references point to the moved missionsmre
  • d32b44e2antcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
  • 0fb80b57components: Hybriel master ff51cf46 (re-vendor round)mre
  • 57408b6ecomponents#14: installable app (manifest, service worker, offline index), own iconmre
  • 317bd09fdeploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
  • becbd59bcomponents#13: modal dialog (<dialog> based, focus wrap, backdrop/Esc/x close with reason, scroll lock, footer buttons)mre
  • 367dd19adeploy.sh: never send .git or .gitignore to Byrodinmre
  • 4b4dabe5State of 2026-09-27, before the move to gitoriamre