fix(builder): emit ContactForm successMessage as a data attribute (D1b)
successMessage was collected in props (and FormStylePanel already had a live "Success Message" input for it) but toHtml never emitted it anywhere. The form-sender relay delivers success via a full-page 303 redirect to thankYouUrl or a hosted thanks.php page -- there is no in-page JS today that could reveal an inline success element. Emit it as data-whp-success-message (escaped) on the <form>: forward-compatible for a future AJAX submission mode, without implying a live mechanism that doesn't exist yet. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -41,3 +41,25 @@ describe('ContactForm.toHtml relay wiring', () => {
|
||||
expect(html).toContain('Name');
|
||||
});
|
||||
});
|
||||
|
||||
describe('ContactForm.toHtml successMessage', () => {
|
||||
// The published form-sender relay (form-sender/app/submit.php) delivers
|
||||
// success via a full-page 303 redirect to thankYouUrl or a hosted
|
||||
// thanks.php page -- there is no in-page JS to reveal an inline success
|
||||
// element. So successMessage is emitted as a forward-compatible data
|
||||
// attribute for a future AJAX/JS submission mode, not a live DOM element.
|
||||
test('with successMessage set: emits it as an escaped data attribute on the form', () => {
|
||||
const { html } = toHtml({ successMessage: "We'll be in touch!", fields: [] }, '');
|
||||
expect(html).toContain('data-whp-success-message="We'll be in touch!"');
|
||||
});
|
||||
|
||||
test('without successMessage: no data attribute emitted', () => {
|
||||
const { html } = toHtml({ fields: [] }, '');
|
||||
expect(html).not.toContain('data-whp-success-message');
|
||||
});
|
||||
|
||||
test('escapes attribute-breakout attempts in successMessage', () => {
|
||||
const { html } = toHtml({ successMessage: 'x" onerror="alert(1)', fields: [] }, '');
|
||||
expect(html).not.toContain('onerror="alert(1)"');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user