Enh: form field editor + real Subscribe/Search forms + box-model/anim/vis #17

Merged
jknapp merged 1 commits from enh-forms into main 2026-07-14 13:49:57 +00:00
Owner

ContactForm gets an array field editor (add/remove/reorder, label/name/placeholder/type/required/options); SubscribeForm wired to relay (fixes dead bare form); SearchBar emits a real GET form (name=q, safeUrl action). Box-model + animation/visibility across all 7 form components. type allowlisted via sanitizeInputType. 689 tests.

🤖 Generated with Claude Code

ContactForm gets an array field editor (add/remove/reorder, label/name/placeholder/type/required/options); SubscribeForm wired to relay (fixes dead bare form); SearchBar emits a real GET form (name=q, safeUrl action). Box-model + animation/visibility across all 7 form components. type allowlisted via sanitizeInputType. 689 tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jknapp added 1 commit 2026-07-14 13:49:57 +00:00
- FormStylePanel: ContactForm field editor (add/remove/reorder via
  ArrayPropEditor + manual move up/down) covering label/name/placeholder/
  type (full sanitizeInputType allowlist + textarea/select)/required/
  options.
- SubscribeForm.toHtml: was a dead `<form method="POST">` with no action at
  all -- wired through the same relayFormWiring contract as ContactForm/
  FormContainer so a recipientEmail makes it actually submit (marker +
  placeholder action + honeypot), falling back to action="#" otherwise.
- SearchBar: was purely decorative (no action/method/input name) -- now a
  real GET form (configurable target, default "/") with input name="q",
  safeUrl-guarded against javascript:/vbscript: breakout.
- Box-model (margin/padding per-side, border, shadow, opacity), entrance
  animation, and hide-on-device controls added to FormStylePanel and
  rolled out (blank/false craft.props defaults) across ContactForm,
  FormContainer, InputField, TextareaField, FormButton, SubscribeForm,
  SearchBar. No toHtml changes needed for animation/visibility --
  html-export.ts's buildDataAttrs() already emits data-animation/
  data-hide-* generically from these prop names.
- Extended toHtml tests for all 7 components: field-type rendering
  (incl. textarea/select), type-attribute XSS sanitization, relay/GET
  functional wiring, box-model style passthrough, craft.props defaults.

npx vitest run: 689/689 passed. npm run build: green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jknapp merged commit 8f17b74e2b into main 2026-07-14 13:49:57 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cloud-hosting-platform/site-builder#17